freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

文件上传下的XSS
2021-09-10 17:56:39

背景

在很多环境下都会遇到任意文件上传,但文件都被存储到oss服务器上。然而通常在此类文件上传中,文件名不可控,通常会随机命名,但是文件后缀可以随意构造。在此类oss利用上,通常采用挂黑页或引用了js文件,上传恶意js文件,去盗取用户信息等。

一、前言

在某次测试中,发现在线网页聊天存在上传文件功能,可以上传任意文件。但是服务端只对txt、html、js脚本语言进行解析。

访问txt的页面

但在此处发现上传的文件名,会在页面上展示,而文件在存入服务端时会随机命名,但此处文件后缀可控,可以自定义任何文件后缀。

于是有了以下尝试:

常规XSS漏洞会产生在表单文本输入,此处我们可控的聊天文本框不存在XSS漏洞,但是此处文件名在页面上展示且在服务端随机编码后在前端”a“标签中,如果构造恶意的文件后缀,即可触发存储型XSS漏洞。

二、触发XSS漏洞

利用xss常规操作,闭合a标签,去触发script。

问题1:发现script语句闭合成功,但页面并未触发,原因在于alert函数并未被解析。此处猜想alert函数在传入时被当作文本处理。


问题2:当我们正常传入分号”;“时,文件后缀会被截断,原因在于在我们上传文件时,文件名是以分号截断取值,所以传入的参数不能包含分号。

所以在这里采最后用Img src的方式,base64编码绕过调用script,去执行。(base64编码绕过分号限制)。

<img src=x onerror=eval(atob('dmFyIHMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtzLnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JztzLnRleHQgPSAnYWxlcnQoMSk7Jztkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHMpOw=='))>

三、总结

关于文件上传导致的XSS漏洞还有很多,例如:图片内插入js代码解析,上传图片类html代码解析等等,此处不再一一赘述。任何用户可控的地方都可能存在漏洞,无论文件上传是否上传到OSS服务器都需要对用户可控参数进行严格的过滤。



# 渗透测试 # web安全
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录