Apache HTTPD 換行解析漏洞(CVE-2017-15715)&& Apache HTTPD 未知后綴解析漏洞


Apache HTTPD 換行解析漏洞(CVE-2017-15715)

漏洞詳情

Apache HTTPD是一款HTTP服務器,它可以通過mod_php來運行PHP網頁。其2.4.0~2.4.29版本中存在一個解析漏洞,在解析PHP時,1.php\x0a將被按照PHP后綴進行解析,導致繞過一些服務器的安全策略。

復現

打開漏洞頁面,發現一片空白,到docker里查看了一下,發現此頁面並未寫前端,所以就自己寫html表單上傳文件

可以看到這里獲取文件名是需要單獨post一個name的,因為如果通過$_FILES['file']['name']獲取文件名的話,會把\x0a自動去除,所以$_FILES['file']['name']這種方式獲取文件名就不會造成這個漏洞

<form action="" method="post" enctype="multipart/form-data">
	<input type="file" name="file">
	<input type="text" name="name">
	<input type="submit" value="submit">
</form>

burp抓包,在Hex選項卡.php后面0d的位置右鍵-Insert byte,添加一個0a,然后發包,成功上傳

瀏覽器訪問 /x.php%0A,正常解析

Apache HTTPD 未知后綴解析漏洞

漏洞詳情

該環境版本:

  • PHP 7.x 最新版
  • Apache HTTPD 2.4.10 穩定版(來自debian源)

由此可知,該漏洞與Apache、php版本無關,屬於用戶配置不當造成的解析漏洞。

訪問 /uploadfiles/apache.php.jpeg即可發現,phpinfo被執行了,該文件被解析為php腳本。我們可以通過上傳文件名為xxx.php.jpg或xxx.php.jpeg的文件,利用Apache解析漏洞進行getshell。

那在當前環境下具體是什么配置不當呢
在ubuntu下,Apache的配置文件在etc/apache2/apache2.conf,查看一下這個文件,發現包含了conf-enabled下的所有.conf配置文件

conf-enabled下都是conf-available中文件的鏈接,所以真正的配置文件在conf-available

就是該目錄下的docker-php.conf配置不當造成未知后綴解析漏洞

真正成因就在AddHandler application/x-httpd-php .php
是由於運維人員在配置服務器時,為了使Apache能夠解析PHP,而自己添加了一個handler。這句話的作用也是為了讓Apache把PHP文件交給php_moudle解析,但是它與sethandler的區別是它的后綴不是用正則去匹配。所以在文件名的任何位置匹配到php,他都會讓php_module解析。類似1.php.xxx.yyy文件就會是這樣的順序,.yyy無法識別,向左,.xxx無法識別,向左,.php可以識別,就激活php處理器,執行PHP代碼,解析漏洞就產生了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM