首页 > 其他 > 详细

XSS代码审计

时间:2020-03-18 10:25:25      阅读:62      评论:0      收藏:0      [点我收藏+]

审计步骤

确定用户的输入
用户输入的处理
确定用户的输出
用户输出的处理

yxcms存储型XSS漏洞

确定用户的输入和用户输入的处理

确定输入的页面

技术分享图片

查看表单源码,确定表单处理页面和传输的字段键值

技术分享图片

找到对应的index方法

技术分享图片

这里可以利用phpstorm设置断点,判断变量的值

技术分享图片
技术分享图片

开始步入extend函数

技术分享图片

经过分析,需要post数据才能步入这个语句块

技术分享图片

为此我们提交表单再步入

步入到这一步时:
技术分享图片
这里判断提交的表单是否是数组,是则走上面语句块,不是则走下面语句块
而xss漏洞是上面这个语句块,所以我们要构造数组变量,由于BP不能抓127.0.0.1的包,所以将xdebug的代理和BP的代理都改为本机的ip即可

继续跟进deletehtml函数

技术分享图片
这里吧对应的实体字符编码转化为符号

继续跟进in函数

技术分享图片
这里进行htmlspecialchars()实体编码和addslashes()加上转义

如果在这里输入的是字符型就要经过html_in()和RemoveXSS()和htmlspecialchars()和addslashes()

最后存入数据库

技术分享图片

确定用户的输出和用户的输出处理

找到用户的输出页面

技术分享图片

按住F12看看表单

技术分享图片
发现这是跟删除有关的按钮,通过前缀我们可以发现页面展示确定在extendfield前缀的页面,由猜想只,fieldlist与其字段有关,meslist与其字段值有关
技术分享图片

确定输出

技术分享图片
技术分享图片
这里可以看看html_out()函数

这里读取了数据库的信息并分配到了前端页面

技术分享图片

看看html_out的代码(不知道怎么设置断点跟进,这是我第一次学习phpstorm和代码审计,所以只好去核心函数库找)

这里就用sexy全局搜索了一下
技术分享图片
这里把html实体编码解码了和去除了反斜线

总的来说

经过了deletehtml()和in()和html_out函数的处理

所以构造的payload(部分)

tname[]=test<script%26gt;alert(1)</script%26gt;

测试一下

技术分享图片
技术分享图片
技术分享图片

XSS代码审计

原文:https://www.cnblogs.com/lyxsalyd/p/12514777.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!