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

前言——首先我這是在前輩的經驗上自己動手做了這次實驗,全都仰仗前輩的經驗總結。

漏洞簡介:

apache httpd是一款http服務器,它可以通過mod_php來運行php網頁,其中2.4.0~2.4.29版本中存在一個解析漏洞,在解析php時,1.php、0xa將被按照php後綴進行解析,導致繞過一些服務器的安全策略。

復現:

我是在kali環境下,預先已經裝好了docker。

不知怎麼下載docker的和安裝的可以去vulhub上自行解決:漏洞搭建環境指導

下載漏洞集成環境vulhub:

git clone https://github.com/vulhub/vulhub.git

啓動docker:

systemctl start docker

  1. 在物理機上創建目錄
  2. mkdir -p /var/www/html、
  3. 然後創建個容器,並關聯物理機的/var/www/html目錄
  4. docker run -d -v /var/www/html:/var/www/html -p 8080:80 --name apache php:5.5-apache
  5. 再把物理機的/var/www/html開放寫權限
  6. chmod 777 /var/www/html/

在html目錄下編輯一個php文件,內容如下:

      該代碼爲模擬一個存在解析漏洞的環境

<?php
 if(isset($_FILES['file'])) 
{    
 $name = basename($_POST['name']); 
 $ext = pathinfo($name,PATHINFO_EXTENSION);  
 if(in_array($ext, ['php', 'php3', 'php4', 'php5', 'phtml', 'pht']))
 {        
 exit('bad file');     
}   
  move_uploaded_file($_FILES['file']['tmp_name'], './' . $name);
 }

對這個代碼進行分析的話,發現這裏獲取文件名是需要單獨post一個name的,如果通過下面這樣的方式就會把\0xa自動去除,也就不會造造成這個漏洞

$_FILES['file']['name']

接着創建一個index.html文件:

      內容如下:

<form action="/你的PHP文件名.php" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="text" name="name">
    <input type="submit" value="submit">
</form>

這是創建了一個上傳表單

我們創建一個php文件,內容如下:

<?php
phpinfo();
?>

直接將其上傳會顯示上傳失敗

將其上傳後抓包,在Hex選項卡中name=你的php文件名.php後面0d的位置右鍵-Insert byte,添加一個0a,然後發包,成功上傳

瀏覽器訪問:ip:8080/x.php%0A成功解析

回車的(0D)是不行的,雖然能上傳成功,但是無法解析

優秀復現文章:

CVE-2017-15715漏洞復現

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章