記一次防範webshell實戰

WebShell攻擊的方式是這樣的:

1.通過網站提供的上傳入口,比如是上傳圖片的入口,上傳時上傳後綴爲jps的圖片

2.通過抓包工具抓包,修改上傳的後綴爲 .jsp或.php等,將實際內容更改爲木馬代碼(比如創建一個用戶賦予root權限)

3.上傳成功後其實就成功了,可以通過創建的用戶登錄到你的服務器(其實這裏我沒太理解,查資料說需要菜刀將木馬文件的路徑寫到菜刀上,然後就OK了,但這邊的腳本上傳到服務器不會自動執行嗎?希望有大佬可以指點下迷津)

這種做法是繞過前端驗證,將木馬傳到服務器

解決方案:

1.從源頭上就杜絕非法文件上傳到服務器,前端驗證是可以繞過的,那加上後端驗證即可

2.限制腳本文件權限,禁止訪問木馬文件

後端驗證:

             在後端代碼中驗證下上傳文件是否是.jpg,.png,.gif,.jpeg這樣,就無法繞過驗證而將腳本文件上傳到你的服務器

限制腳本文件權限

             看到說可以通過apache來禁止訪問,想了想其實也可以通過nginx,但這邊我是簡單的在web.xml中加了段話來達到目的

<security-constraint>
    <display-name>interceptor-jsp</display-name>
    <web-resource-collection>
      <web-resource-name>JSPs</web-resource-name>
      <url-pattern>*.jsp</url-pattern>
      <url-pattern>*.php</url-pattern>
      <url-pattern>*.asp</url-pattern>
    </web-resource-collection>
    <auth-constraint/>
  </security-constraint>

(ps:我的是Java項目)

這裏加上後所有的,jsp .php .asp文件都無法訪問,因爲我這個項目正好是用的html,沒用jsp,所以可以配.jsp

這裏配好後,一寫得不好就會啓動報錯,大概報錯的是Catalina localhost巴拉巴拉的,原因是url-pattern裏沒寫好,

如果寫/xxx/xxx/*.jsp抱歉,就會報錯了,想要禁止某個後綴的文件訪問只能寫 *.xxx,前面不能加上目錄的,如果有其他的寫法可以達到指定某個目錄下的所有後綴爲xxx的禁止訪問,請瘋狂艾特我,謝謝

 

此上,皆爲我的一點愚見,如有不足煩請評論指出 (抱拳)

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