界面安全性系列2-Webshell

一.Webshell是什麼?

  webshell就是asp,php,jsp或者cgi等網頁文件形式存在的一種命令執行環境,也可以將其稱做爲一種網頁後門。

二.Webshell可以做什麼?

  黑客在入侵了一個網站後,通常會將asp或php後門文件與網站服務器WEB目錄下正常的網頁文件混在一起,然後就可以使用瀏覽器來訪問asp或者php後門,得到一個命令執行環境,以達到控制網站服務器的目的。。

三.Webshell主要模式

  


下面是別人總結的幾種方式,我加了描述和自己的一些看法和經歷

1. 直接上傳獲取webshell

       通過上傳文件功能,比如評論圖片等,這類主要是後臺需要驗證上傳文件。比如mimetype後綴名。

       我們網站出現過一次情況驗證了mimetype,在對上傳文件後move文件到上傳目錄的時候取了file[‘name’]做最後的拼接, 而驗證是驗證了file['tmp_name']的對應mimetype和後綴。

       攻擊者通過修改post的數據包裏面的name值使得上傳後的文件從png轉成了php。。。解決辦法當然是把name值也進行了驗證

2.添加修改上傳類型

       很多管理後臺允許修改前臺上傳功能的支持的文件類型,而通過攻擊這部分將對應的文件類型增加進去,然後通過前臺的上傳就可以了。

       這個主要是功能防範,如果用的是開源的系統,沒需求使用該功能可以直接將修改支持文件類型的功能裁剪掉 。。

3.利用後臺管理功能上傳webshell

      這部分其實也是後臺的一些功能漏洞,允許修改一些配置文件,直接將配置文件暴露在前端訪問。

       或者比如增加友情鏈接功能 直接在友情鏈接出將代碼寫入比如http://aa.com</div><?php eval($_GET['aaa']);?> 之類的嵌入到友情鏈接的頁面,這樣友情鏈接的功能直接就成了webshell

4. 利用後臺管理向配置文件寫webshell

      跟3也是類似的,將代碼寫到一些文件裏。對應的文件裏就有了可執行的代碼。

5. 利用後臺數據庫備份及恢復獲取webshell

    主要是利用後臺對access數據庫的“備份數據庫”或“恢復數據庫”功能,“備份的數據庫路徑”等變量沒有過濾導致可以把任意文件後綴改 爲asp,從而得到webshell

6. 利用數據庫壓縮功能

7 asp+mssql系統

8. php+mysql系統

     SELECT …… INTO OUTFILE

9. phpwind論壇從後臺到webshell的三種方式

10 .也可以利用網站訪問計數系統記錄來獲取webshell


後面幾個主要結合mysql注入,或者系統功能等,將對應的shell代碼寫到某個地方,再通過保存或者sql備份導出等功能將對應的sql裏面存放的植入代碼導入到指定位置的指定後綴文件比如aa.php等



三.Webshell防範

從根本上解決動態網頁腳本的安全問題,要做到防注入、防暴庫、防COOKIES欺騙、防跨站攻擊等等,務必配置好服務器FSO權限。最小的權限=最大的安全。

防範webshell的最有效方法就是:可寫目錄不給執行權限,有執行權限的目錄不給寫權限。


我的經驗是將上傳和運行目錄隔離,或者服務器分開。在關鍵功能上進行嚴格防範。有點廢話。。


在允許上傳文件的網站和web應用中,應當應用下面的一系列最佳實踐方法。這些實踐方法將有助於你保證web應用的上傳文件的安全性。

  定義一個.htaccess文件,只允許訪問指定擴展名的文件。

  不要把.htaccess文件和上傳文件放在同一個目錄裏,應該放在父目錄裏。

  一個典型的只允許 gif, jpg, jpeg 和 png文件的.htaccess文件應當包含下面的代碼(根據你的需求做調整)。這樣也能阻止雙擴展名攻擊.

  deny from all order deny,allow allow from all

  如果可能,把文件上傳到root目錄以外的目錄裏。

  禁止覆蓋已存在的文件(以阻止.htaccess覆蓋攻擊)

  創建一個mime-type白名單列表。(只允許這個列表裏的Mime-type)

  生成一個隨機的文件名,並且加上此前生成的文件擴展名、

  不要只依賴客戶端驗證,這不夠。理想的是既有客戶端驗證也有服務器端驗證。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章