nginx 解析php漏洞
測(cè)試過(guò)nginx諸多版本,都有該漏洞。
漏洞場(chǎng)景: nginx + php-cgi
漏洞重現(xiàn):
在網(wǎng)站根目錄上傳一個(gè)文件1.jpg
內(nèi)容為:
1 <?php
2 echo 111;
3 ?>
復(fù)制代碼
這樣訪問(wèn): http://yourdomain/1.jpg/123.php ?//這里的123隨意定義,寫(xiě)成abc也行,關(guān)鍵后邊是.php
這樣就能解析php了 ?結(jié)果為
111
這似乎很危險(xiǎn),如果作為系統(tǒng)管理員的你不知道該漏洞,那么別有用心的小人在你的網(wǎng)站上傳了本是php內(nèi)容的“圖片”,畢竟你的網(wǎng)站是允許上傳圖片的。,如果他上傳了***,那么后果不堪設(shè)想。
至于原理,等會(huì)再講,先說(shuō)說(shuō)如何解決該漏洞。
解決方法也很簡(jiǎn)單,打開(kāi)php.ini
設(shè)置 cgi.fix_pathinfo=0
注意,默認(rèn)這個(gè)參數(shù)是注釋掉的,當(dāng)然默認(rèn)值肯定不是0,所以有必要把注釋號(hào)去掉,打開(kāi)該參數(shù)。
為什么會(huì)有這樣的漏洞呢?這是因?yàn)?#xff1a;
nginx的location對(duì)請(qǐng)求進(jìn)行選擇的時(shí)候會(huì)使用URI環(huán)境變量進(jìn)行選擇,其中傳遞到后端Fastcgi的關(guān)鍵變量SCRIPT_FILENAME由nginx生成的$fastcgi_script_name決定,而通過(guò)分析可以看到$fastcgi_script_name是直接由URI環(huán)境變量控制的,這里就是產(chǎn)生問(wèn)題的點(diǎn)。
轉(zhuǎn)載于:https://blog.51cto.com/2853725/1390978
總結(jié)
以上是生活随笔為你收集整理的nginx 解析php漏洞的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: JSP页面中的pageEncoding和
- 下一篇: JVM是怎么判断不可用对象的