简介
文件上传破绽,字如其意,就是可能呈现在所有容许上传文件的性能点;
它是指因为程序员未对上传的文件进行严格的验证和过滤,而导致的用户能够越过其自身权限向服务器上上传可执行的动静脚本文件。这里上传的文件能够是木马,病毒,歹意脚本或者WebShell等。这种攻击方式是最为间接和无效的,“文件上传”自身没有问题,有问题的是文件上传后,服务器怎么解决、解释文件。如果服务器的解决逻辑做的不够平安,则会导致重大的结果。
靶场举荐
•upload-labs
•upload-labs-writeup
破绽危害
1.容许上传脚本语言文件且解析 ==> getshell
2.容许上传html ==> xss、csrf、登陆劫持...
3.容许上传压缩包 ==> 压缩包DOS、解压文件getshell
4.容许上传pdf ==> pdf xss
5.容许上传swf ==> swf xss
6.容许上传excel、docx ==> xxe
7....
https://twitter.com/Eyhuss1/s...
asp, aspx, php : webshell, rce
svg: stored xss, ssrf, xxe
gif: stored xss, ssrf
csv: csv injection
xml: xxe
avi: lfi,ssrf
html, js: html injection, xss, open redirect
png: pixel flood attack, dos
zip: rce via lfi, dos
pdf: ssrf, blind xxe, Stored XSS
开掘判断
次要过程还是上传失常的图片抓包,再判断一下后端的过滤规定有哪些,再针对这些规定来剖析绕过
1.黑白名单
2.内容是否有判断
3.是否二次渲染
4.是否有解析破绽
图自:https://github.com/c0ny1/uplo...
绕过办法
图自:https://github.com/c0ny1/uplo...
可解析后缀
语言 可解析后缀
asp/aspx asp,aspx,asa,asax,ascx,ashx,asmx,cer,aSp,aSpx,aSa,aSax,aScx,aShx,aSmx,cEr
php php,php5,php4,php3,php2,pHp,pHp5,pHp4,pHp3,pHp2,html,htm,phtml,pht,Html,Htm,pHtml
jsp jsp,jspa,jspx,jsw,jsv,jspf,jtml,jSp,jSpx,jSpa,jSw,jSv,jSpf,jHtml
Content-Type
常见类型见下:
文件类型 Content-type
超文本标记语言文本 .html,.html text/html
一般文本 .txt text/plain
RTF文本 .txt text/plain
GIF图形 .gif image/gif
JPEG图形 .jpeg,.jpg image/jpeg
au声音文件 .au audio/basic
MIDI音乐文件 .mid,.midi audio/midi,audio/x-midi
RealAudio音乐文件 .ra, .ram audio/x-pn-realaudio
MPEG文件 .mpg,.mpeg video/mpeg
AVI文件 .avi video/x-msvideo
GZIP文件 .gz application/x-gzip
TAR文件 .tar application/x-tar
•fuzz dict 下载
文件头
文件幻数是用来惟一标识文件类型的一系列数字(十六进制),也就是咱们常说的文件头,当白名单限度了文件幻数时,咱们就要给咱们的文件制作能够通过检测的文件头即可:
.jpg Value = FF D8 FF E0
.gif Value = 47 49 46 38 ==> GIF89a
.png Value = 89 50 4E 47
.html Value = 68 74 6D 6C 3E 10
.xml Value = 3C 3F 78 6D 6C
图片马
如果后缀能够为jsp、php等,然而内容必须为图片,那么能够用图片马来进行getshell
或者会解析图片为相干的代码
•Windows
copy 1.jpg/b+1.php/a 2.jpg
•*nix(我失败了)
cat file1.txt >> file2.jpg
cat file1.txt file2.jpg >> file3.jsp
条件竞争
如果网站的文件上传的过程是:服务器获取文件–>保留上传临时文件–>重命名挪动临时文件 这样的步骤时,就能够通过一直地对文件进行上传和拜访,从而使服务器还未重命名挪动临时文件时,咱们就利用时间差关上了文件,胜利执行其中的恶意代码。
具体方法:并发发包,如Burp、fuff等
二次渲染
1.二次渲染的工具可能存在RCE等破绽,如ImageMagick
2.通过十六进制寻找二次渲染后内容未扭转的局部,再在其中插入代码
双上传
和题目一个意思,同时结构两个上传,可能服务端只会验证第一个上传,而第二个上传则间接保留
修复倡议
1.后缀白名单,只容许上传jpg、jpeg、png、gif
2.内容完整性检测
3.WAF
文件上传FUZZ
•upload-fuzz-dic-builder
•结构优质上传破绽fuzz字典