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


前言

Apache在2.4.0-2.4.29版本中存在一個解析漏洞。程序在解析PHP時,如果文件名最后有一個換行符x0A,apache依然會將其當成php解析,但是在上傳文件時可以成功的繞過黑名單。

如果上傳文件的php程序是設置的白名單,那么這個漏洞將無法利用。

漏洞環境

該環境使用vulhub搭建,該漏洞路徑為 vulhub/httpd/CVE-2017-15715。進入該漏洞路徑后執行以下命令:

docker-compose up -d

-d 表示后台運行。

注意:該命令必須在漏洞目錄下執行,該命令是啟動當前目錄下的docker容器。

如果不會搭建環境可以參考官方文檔:https://vulhub.org/#/docs/

原理分析

啟動容器后執行以下命令查看容器ID。

docker ps

在這里插入圖片描述

然后執行以下命令進入容器。

docker exec -it 容器ID /bin/bash

exec 表示在容器中執行一個命令,該命令后加容器ID和要執行命令,上面執行的命令就是/bin/bash。
-i 表示即使沒有連接,也要保持STDIN打開,也就是一直監聽命令的狀態。
-t 表示分配一個tty終端設備,加上這個參數就具有按TAB自動補全命令等等功能。
更多詳細內容可以參考:https://blog.csdn.net/qq_40081976/article/details/84590119,docker exec 的使用-it操作。

查看一下上傳文件的php文件:

cat index.php

在這里插入圖片描述

該程序是采用黑名單的形式,如果文件后綴名不在名單內即可上傳,所以 a.php\x0A不在黑名單列表中,可以上傳。但是x0A是換行符,所以apache會直接忽略,將其當成php來執行。

漏洞復現

打開目標地址 http://192.168.119.131:8080/,選擇一句話木馬准備上傳。

在這里插入圖片描述

然后打開burpsuite,開啟數據監聽。

在這里插入圖片描述

點擊網頁中提交按鈕,上傳文件。此時burpsuite就會抓取提交的數據。

在這里插入圖片描述

點擊 Hex按鈕,進入十六進制編輯頁面,並找到文件名a.php的位置。

在這里插入圖片描述

然后再文件名后插入0A,這個位置也就是在 od oa的前面。

在這里插入圖片描述

然后點擊 Forward按鈕,這時候瀏覽器上什么也沒有顯示,但是此時文件已經上傳成功了。接下來訪問一句話木馬a.php%0a,並通過參數a傳遞命令即可控制服務器。

http://192.168.119.131:8080/a.php%0A?a=id

在這里插入圖片描述

注意:該文件名是通過$_POST['name']獲取的,所以會將 x0A保留。如果文件名使用的是$_FILES['file']['name']獲取將會自動把末尾的x0A去掉,導致無法利用該漏洞。


免責聲明!

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



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