作者:
zhangsan
·
2014/03/07 10:38
0x00 測試環境
作業系統:Windows Server 2008 R2 Enterprise Service Pack 1 x64 IIS版本:IIS7.5 程式:asp.net
0x01 IIS7.5的安裝
http 常見功能:開啟靜態內容,預設文件,HTTP錯誤;目錄瀏覽,WebDAV釋出如無特殊要求,不要開啟;HTTP重定向可根據需要開啟。
應用程式開發:這個可根據實際情況開啟,如為asp.net的開啟ASP.NET,.NET擴充套件性,ISAPI擴充套件,ISAPI篩選;在伺服器端的包含檔案根據需要開啟。
健康和診斷:建議開啟HTTP日誌記錄,日誌記錄工具,請求監視;其他可根據需要開啟。
安全性:建議開啟URL授權,請求篩選,IP和域限制;其他根據需要開啟。
效能,管理工具,ftp伺服器,IIS可承載的Web核心可根據開啟。
0x02 IIS7.5許可權配置介紹
IIS7.5涉及兩個賬戶,一個為匿名賬戶,一個為應用程式池賬戶。在磁碟的NTFS許可權設定中,匿名賬戶只需要擁有對網站目錄的讀取許可權即可;而應用程式池賬戶需要根據程式實際情況給予相應許可權,比如:需要去寫檔案,則要給予寫許可權,需要去呼叫一個程式(如cmd.exe)則需要給予執行許可權。總之,對檔案的訪問,首先需要有匿名賬戶的訪問許可權,然後再根據程式的操作需要什麼樣的許可權給予應用程式池賬戶相應的許可權。
研究發現的幾個基本問題:
1. 上傳目錄的寫入許可權由應用程式池賬戶決定;
2. 應用程式池預設對於的賬戶為IIS APPPOOL\{app pool name},且屬於IIS_IUSRS組;
3. 預設的匿名賬戶為IUSR賬戶,且屬於authenticated users 組;
4. 任何使用者都屬於USERS組,且手工刪除後仍然屬於USERS組;
5. 上傳木馬之後,能夠看到的目錄是由應用程式池賬戶決定的;
6. 在此測試環境下,USERS組預設擁有網站目錄的寫入許可權;
7. 一個aspx檔案的執行跟NTFS的執行許可權無關;
8. 對於網站的匿名賬戶只需要對網站目錄有讀取許可權;
9. 應用程式池賬戶執行aspx也只需要讀取許可權,但是如果要寫檔案需則寫許可權,要執行其他程式則需要執行許可權;
0x03 常見伺服器被入侵威脅及解決措施
常見伺服器入侵威脅:
1. webdav直接上傳webshell
2. 透過程式檔案上傳漏洞上傳webshell
3. webshell的許可權過高導致被提權
解決常見問題措施:
1. 解決webdav問題
在安裝的時候直接不安裝webdav元件
2.防止上傳的木馬檔案執行
可以在IIS中設定需要上傳檔案的目錄,處理程式對映中的編輯功能許可權中的指令碼去掉,這樣即使上傳了木馬檔案在此目錄,也是無法執行的。
上傳目錄取消應用程式池賬戶的執行許可權
3. 防止木馬執行後看到網站目錄之外的檔案
可以設定程式池賬戶對其他資料夾無讀取許可權。
4. 防止木馬執行後可執行cmd
取消程式池賬戶的NTFS執行許可權。
5. 防止木馬執行後執行cmd許可權過高
程式池賬戶選擇許可權較低的賬戶,最好就是預設的賬戶。
0x04 推薦安全配置方案
安全配置簡單配置:
1. 匿名賬戶使用預設的IUSR。
2. 應用程式池使用預設的標識,對於的賬戶為IIS AppPool\應用程式池名稱。
3.IIS中對上傳目錄設定為指令碼不可執行
加強安全配置:
1. 匿名賬戶使用預設的“應用程式使用者”也就是對應的IUSR。
2. 應用程式池賬戶使用預設的IIS AppPool\應用程式池名稱。
3. 刪除everyone,users在所有磁碟上的許可權。
4. 刪除users在system32上的所有許可權(需要先修改所有者為administrator)。
5. 在網站目錄下給予IUSR讀取許可權。
6. 在網站目錄下給予IIS AppPool\應用程式池名稱讀取許可權,如果程式中有特殊要求的許可權,如寫入檔案等,則再對應的目錄下給予相應的許可權,如寫入許可權。
7. 在網站要求的上傳目錄給予IIS AppPool\應用程式池名稱寫入許可權,但是不給予執行許可權。
8. 在IIS中取消上傳目錄的指令碼執行許可權。
注意:
- 以上兩種配置均使用預設的應用程式池賬戶,如果自定義,最好是將自定義加入IIS_IUSRS組。
- IIS7.5中建立多個站點的時候,如果使用預設的應用程式池賬戶,系統會預設產生如IIS AppPool\各個不同的應用程式池名稱。
- Asp.net程式在第一次訪問編譯的時候,應用程式池賬戶需要擁有system32資料夾的讀取和執行許可權
0x05 疑問
在測試過程中發現,訪問aspx程式,如果匿名賬戶為自定義的賬戶,則需要給自定義的匿名賬戶在資料夾C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files
上的寫入許可權;但是,如果使用預設的匿名賬戶,也就是IUSR時,需要給予應用程式池賬戶在此資料夾上的寫入許可權。疑問點在於此資料夾到底是需要哪個賬戶的寫入許可權,因為選擇預設的匿名賬戶時,即時禁止IUSR在此檔案的寫入許可權,只要應用程式池賬戶在此資料夾有寫許可權,一樣執行正常?
當匿名使用者為程式預設的時候,應該就是IUSR,但為什麼又傳遞的程式池賬戶?
本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!