《Nginx文件类型错误解析漏洞--攻击演练》 (转)
今天看書看到其中提到的一個(gè)漏洞,那就是Nginx+PHP的服務(wù)器中,如果PHP的配置里 cgi.fix_pathinfo=1 那么就會(huì)產(chǎn)生一個(gè)漏洞。這個(gè)配置默認(rèn)是1的,設(shè)為0會(huì)導(dǎo)致很多MVC框架(如Thinkphp)都無(wú)法運(yùn)行。這個(gè)漏洞就是比如 localhost/img/1.jpg 是正常地訪問(wèn)一張圖片,而 localhost/img/1.jpg/1.php 卻會(huì)把這張圖片作為PHP文件來(lái)執(zhí)行!如下圖,應(yīng)該是404 NotFound 才對(duì)的,它卻顯示說(shuō)是有語(yǔ)法錯(cuò)誤。
好家伙,既然有漏洞那就嘗試怎么攻擊吧。先看思路:首先弄一個(gè)很小的JPG文件方便修改,然后在JPG文件中插入代碼,再上傳,最后在瀏覽器打開(kāi)。
第一步,小的JPG文件當(dāng)然是直接用Photoshop做一個(gè)了;
幾個(gè)像素就夠了。樣子隨便,你喜歡就好。
第二步,在JPG中插入代碼,這個(gè)要用到二進(jìn)制編輯器;
JPG圖片如何修改成為可以執(zhí)行PHP代碼?這里以實(shí)驗(yàn)?zāi)康?#xff0c;以成功執(zhí)行一個(gè)輸出PHP運(yùn)行環(huán)境信息的函數(shù) phpinfo() 為例。
首先這里編輯圖片的話并不是說(shuō)用畫圖或者Phtoshop之類的圖形軟件,這次要用到的軟件叫做 二進(jìn)制編輯器,其中我用的這款名叫 Bz.exe,打開(kāi)圖片文件如下圖
不要被嚇到,就是16進(jìn)制的數(shù)而已,右邊顯示的是對(duì)應(yīng)的ASCII碼,我們直接改右邊就可以了。通過(guò)幾個(gè)JPG文件的對(duì)比發(fā)現(xiàn),從第二行開(kāi)始就可以自行修改了,于是開(kāi)工修改,注意不要使用退格刪除導(dǎo)致長(zhǎng)度縮短,要用字符替換的,否則會(huì)造成文件格式損壞。修改成如下圖,保存到本地的圖片文件夾中,在本地測(cè)試。
!注意不要使用退格刪除導(dǎo)致長(zhǎng)度縮短,圖片損壞,比如像下圖第一個(gè)的那種改了之后不顯示縮略圖的就已經(jīng)是損壞了,損壞的圖片可能會(huì)在上傳的時(shí)候被攔截掉。
改好之后再本地測(cè)試,
似乎還不行,看起來(lái)應(yīng)該是后面有一些PHP語(yǔ)法錯(cuò)誤,那就簡(jiǎn)單粗暴,修改成下圖這樣,即是把后面的內(nèi)容全部使用/* 來(lái)注釋掉 結(jié)尾用 */ 閉合注釋,當(dāng)然結(jié)尾的注釋不加也可以,只會(huì)多顯示一個(gè)“Unterminated comment starting”的警告而已。建議不需要改成*/結(jié)尾,否則修改后的圖片在Photoshop中會(huì)打不開(kāi)(因?yàn)镕F D9是jpg文件的標(biāo)準(zhǔn)結(jié)尾)。
可以看到,已經(jīng)可以執(zhí)行PHP代碼了。本地攻擊演練成功!
第三步,上傳,因?yàn)樯蟼鞯拇_實(shí)是jpg格式的文件,網(wǎng)站幾乎無(wú)法識(shí)別和攔截;
第四步,在瀏覽器打開(kāi),Hello World!
這一步成功需要兩個(gè)條件:
1)服務(wù)器是Nginx+PHP并且配置里是cgi.fix_pathinfo=1;
2)網(wǎng)站沒(méi)有屏蔽上傳目錄的腳本執(zhí)行權(quán)限;
所以,慢慢找吧,也許可遇而不可求;
?
|++ 此漏洞的功擊效果與“文件上傳漏洞”相當(dāng)
∞、防御建議
1)使用Apache、IIS等成熟久經(jīng)考驗(yàn)的服務(wù)器軟件,在動(dòng)態(tài)語(yǔ)言的支持上,Nginx還是太年經(jīng)了。
2)上傳目錄、靜態(tài)資源目錄,都設(shè)置好屏蔽腳本執(zhí)行權(quán)限。例如使用Apache服務(wù)器的在相應(yīng)目錄下放一個(gè) .htaccess 文件,里面寫上
RewriteEngine On RewriteRule (?i:\.php)$ - [F]?
http://www.cnblogs.com/batsing/p/nginx_bug1_attack.html
轉(zhuǎn)載于:https://www.cnblogs.com/softidea/p/5350828.html
總結(jié)
以上是生活随笔為你收集整理的《Nginx文件类型错误解析漏洞--攻击演练》 (转)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 贪心算法-Best cow line-字
- 下一篇: Nginx + 阿里云SSL + tom