程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> IIS5 ISAPI Extension Back Door

IIS5 ISAPI Extension Back Door

編輯:關於MYSQL數據庫
IIS5 ISAPI Extension Back Door


Our Team: http://www.ph4nt0m.org
Author: 雲舒([email protected])
====================================================

感謝與參考

1.在獲取shell的時候格式很難看,envymask告訴我是網絡延遲的原因,得以解決,感謝!
2.參考《綠盟安全月刊》第37期的技術專題裡面的第五章《Exploit Microsoft INTERNET INFORMATION SERVER》,地址為http://www.nsfocus.Net/index.PHP?act=magazine&do=vIEw&mid=1662
3.參考MSDN函數庫


一.前言
二.申明
三.實現
四.參考


一.前言

最近的sql injection攻擊很流行,一般的解決方法是使用通用的防注入函數來保護程序不受威脅。但是有寫些序作者經常忘記包含通用函數,導致沒有效果。前些日子研究徹底防止SQL Injection攻擊時,看了些IIS5的ISAPI Filter文檔,決定利用IIS提供的API接口做個東西,這樣可以很好的防止sql injection攻擊。
湊巧發現,這樣依附在IIS上面的擴展模塊,還可以作為別的用處,比如作為一個後門程序。這樣進程的隱藏,端口的隱藏,服務的隱藏問題都不需要解決,由IIS包辦了。作為後門,為了隱蔽性,我選擇了ISAPI Extension接口。前後大約一個多星期,做出了一個這樣的東西,還不知道叫什麼名字好。


二.申明

1.代碼裡面有些特殊字符,因為我忘記不了她,請自己修改。
2.代碼可以隨意轉載,但是請保證文檔完整,並不得用於商業用途。
3.代碼可以隨意修改,但是如果能夠給我一份,將不勝感激。
4.代碼我只是演示這種後門的危害,用做任何用途均與我無關。

三.實現

1.解析

鑒於隱蔽性,我沒有選擇ISAPI Filter,而是選擇了ISAPI Extension方式。ISAPI Extension是IIS的功能擴展模塊,它能獨立支持某一項特殊的HTTP請求,系統默認支持的asp腳本由%SystemRoot%\system32\inetsrv\inetsrv\ASP.dll解析。自己實現一個動態連接庫,就可以實現自己特殊的功能,例如php就是利用自己帶的dll文件來解析PHP文件的。IIS先獲取請求文件的擴展名,再根據配置的應用程序映射,交由特定的dll處理。

2.權限

IIS5的配置都保存在%SystemRoot%\system32\inetsrv\MetaBase.bin文件中,它有兩個主鍵:LM和Schema。LM主鍵下面有W3SVC/InProcessIsapiAPPS鍵,這是一個數組,裡面包含的是一組指向一些ISAPI的路徑。在這個數組裡面的ISAPI運行的時候都是由inetinfo.exe直接啟動的,繼承inetinfo.exe的local system權限;而不在其中的ISAPI則是由svchost.exe派生的dllhost.exe進程啟動的,運行的身份是IWAM_NAME,權限極低。這裡,我們可以使用IIS的腳本adsutil.vbs將我們的dll加到數組當中,命令為adsutil.vbs set w3svc/inprocessisapiapps Dll Path。更好的辦法是替換掉printer擴展的映射,此映射由%systemroot%\msw3prt.dll來解析,而且這個dll文件默認存在於W3SVC/InProcessIsapiAPPS鍵中。這也就是2000年.printer溢出得到system權 限的原因。

3.導出

根據MSDN描述,ISAPI Extension需要導出三個函數,GetExtensionVersion,TerminateExtension以及HttpExtensionProc

4.功能

首先,密碼功能肯定是需要的,這裡我將標准的HTTP協議擴充出一個Icy方法,如果客戶端使用此方法請求注冊的映射,則認證成功,否則不予理睬。這裡,你也可以修改代碼,使用HTTP協議的其他部分做認證,比如Accept字段。

其次,後門主要是獲取一個shell,但是某些服務器可能設置了禁止system訪問cmd,因此,我還提供了下載功能,這樣可以下載一個cmd,然後通過shell CustomerCmd運行,得到shell執行命令。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved