前段時間咱們SINE安全收到客戶的滲透測試服務委託,在這以前,客戶網站受到攻擊,數據被篡改,要求咱們對網站進行全面的滲透測試,包括漏洞的檢測與測試,邏輯漏洞.垂直水平越權漏洞,文件上傳漏洞.等等服務項目,在進行安全測試以前,咱們對客戶的網站大致的瞭解了一下,整個平臺網站,包括APP,安卓端,IOS端都採用的JSP+oracle數據庫架構開發,前端使用VUE,服務器是linux centos系統.下面咱們將滲透測試過程裏,對文件上傳漏洞的檢測與webshell的分析進行記錄,但願更多的人瞭解什麼是滲透測試.php
咱們直擊漏洞根源,查看代碼在uplpod.php文件裏,能夠看到有個lang變量給了language.php,並附加條件,設置的指定文件都存在,才能夠將參數值傳遞過去,代碼截圖以下:前端
仔細看,咱們看到代碼調用了save_file的調用方式,由此能夠致使langup值能夠僞造,追蹤溯源看到該值是對應的WEB前端用戶的文件上傳功能,在用戶文件上傳這裏,並無作安全效驗與安全白名單攔截機制,致使能夠重命名,直接將.jsp的腳本文件上傳到網站的根目錄下,包括APP也存在該漏洞.linux
咱們SINE安全技術來滲透測試復現一下該文件上傳漏洞是如何利用的,首先登陸會員,並打開我的資料頁面,有個文件上傳功能,裏面只容許上傳圖片格式的文件,只容許上傳JPG,PNG,GIF,等後綴名的文件,以普通的圖片文件來上傳,咱們抓取POST的上傳數據包,將cont1的路徑地址改成/beifen/1.jsp,並提交過去,返回數據爲成功上傳.複製路徑,瀏覽器裏打開,發現咱們上傳的JSP腳本文件執行了,也再一次的證實該漏洞是足以致使網站數據被篡改的,在這以前客戶的網站確定被上傳了webshell網站木馬文件,隨即咱們對客戶的網站源代碼進行全面的人工安全檢測與分析,對一句話木馬特製eval,加密,包括文件上傳的時間點,進行檢查,發如今網站的JS目錄下存在indax.jsp,瀏覽器裏打開訪問,是一個JSP的腳本木馬,能夠對網站進行篡改,下載代碼,新建文件,等網站管理員的操做,同理APP端也是存在一樣的漏洞.調用的文件上傳功能接口是同樣.具體的webshell截圖以下:web
到這裏咱們只是滲透測試的一方面,主要是檢測的文件上傳功能是否存在漏洞,是否能夠重命名,自定義上傳路徑以及文件格式繞過,關於滲透測試中發現的文件上傳漏洞如何修復,咱們SINE安全給你們一些修復建議與辦法,首先對文件的上傳格式進行限制,只容許白名單裏的jpg,png,gif等格式的文件上傳,對自定義的路徑地址進行變量覆蓋,不容許更改路徑地址.對上傳的目錄作腳本的安全限制,去除JSP的腳本執行權限.shell