Apache(總聯想到武直那個)是最常見,使用人數最多的一款web服務器軟件。跨平台,多擴展,開源,用過的人都說好
Apache的漏洞主要集中在解析漏洞這一塊
1.未知擴展名解析漏洞
Apache的一個有名的解析特性:一個文件可以有多個以點分隔的后綴,當最右側后綴無法識別的時候,繼續向左識別,知道識別到認識的合法后綴才進行解析
很好理解不截圖了 我上傳了一個名字叫lcx.php.qqq 的文件,當此特性存在的時候,一看.qqq不認識,繼續解析,.php我認識,解析成php文件了。訪問也是同理,比如訪問phpinfo.php.qqq可成功顯示phpinfo
那么哪些后綴Apache不認識?
不在mime.types當中的都不認識 (Multipurpose Internet Mail Extensions)
到安裝Apache的目錄下找這個文件
里面有一堆
但是這里有一個問題
當PHP與Apache的結合方式為fastcgi時,測試結果如圖,不存在此解析漏洞
而PHP與Apache的結合方式為module時是存在此解析漏洞的
除了結合方式,此漏洞存在與否還與默認Apache解析方式有關,沒有認識的后綴就會按照默認方式解析
這點要注意
所以可利用的點emmm......
防御的話,修改Apache配置文件 httpd.conf 禁止PHP文件的訪問權限,或者改上傳的文件名
2.AddHandler解析漏洞
在httpd.conf中
AddType application/x-httpd-php .jpg (.jpg可以換成.txt什么的 將擴展名為.jpg的文件按PHP執行)
或者
AddHandler php5-script .php (只要文件名中包含.php就會按照PHP執行)
防御:修改Apache配置文件 httpd.conf 禁止PHP文件的訪問權限
要么
偽靜態試試,把有什么php的文件重寫吧
如圖是開啟了rewrite功能
新建.htaccess文件,語法網上找吧
3.CVE2017-15715
2.4.0~2.4.29版本的Apache受災
熟悉正則的老哥都知道,$匹配輸入字符串的結尾位置。如果設置了 RegExp 對象的 Multiline 屬性,則 $ 也匹配 '\n'換行或 '\r'回車(要匹配 $ 字符本身,請使用 \$)
於是,在解析PHP時,例如1.php\x0a將被按照PHP后綴進行解析,導致繞過一些服務器的安全策略
例: 上傳一個文件1.php ,用burp抓包, 找到上傳的文件名后面加個什么東西,比如加個.變成 1.php. ,再send to repeater ,把新加的. 位置的hex十六進制編碼處改成0a,再傳上去
之后訪問 /1.php%0A ( %0A為換行的URL編碼)即可按照PHP執行此文件
只要用正則來匹配后綴進行php解析的Apache就可能存在這個問題
也算是新時代的Apache解析漏洞,對應老版的本文第1點
防御 :避免使用這些版本的Apache,或者前面那些思路還可以利用
隨便轉載,請標明作者出處