【網絡安全】網站漏洞挖掘思路
前言
哈嘍,大家好,本篇主要分享網站漏洞思路,希望你看完有所收獲。
一、登錄框常見漏洞
1、常規漏洞
sql注入、萬能密碼
我們在用戶名中輸入 ‘or 1=1#,密碼隨意。就變成了select name.passwd from users where username= ‘’ or 1=1#’ and password=???。在SQL語法中 # 是注釋符,所以后面的語句都會杯注釋掉,那么上面的語句就等價于select name.passwd from users where username=’’ or 1=1。在or 連接中, username=’’ 和 1=1 中有一個為真就為真。所以1=1肯定為真。如果存在sql注入的漏洞,則可以直接登錄進去。
url重定向
網站接受用戶輸入的鏈接,跳轉到一個攻擊者控制的網站,可能導致跳轉過去的用戶被黑客設置的釣魚頁面騙走自己的個人信息和登錄口令。
未授權訪問
未授權訪問漏洞,是在攻擊者沒有獲取到登錄權限或未授權的情況下,不需要輸入密碼,即可通過輸入網站控制臺主頁面地址或者不允許查看的連接便可進行訪問,同時進行操作。
修改返回包
由于對登錄的賬號及口令校驗存在邏輯缺陷,以再次使用服務器端返回的相關參數作為最終登錄憑證,導致可繞過登錄限制,如服務器返回一個參數作為登錄是否成功的標準,由于代碼最后登錄是否成功是通過獲取這個參數來作為最終的驗證,所以。攻擊者通過修改參數即可繞過登錄的限制!
越權
登錄框處同樣存在越權:
- 平行越權:獲得相同等級的其它用戶的權限;
- 垂直越權:低權限用戶獲取高權限用戶的權限,例如:用戶權限獲得管理員權限,或者超級管理員權限。
目錄遍歷、信息泄露
目錄遍歷漏洞是由于web中間件目錄訪問相關的配置錯誤造成的,該漏洞會泄露web應用程序的敏感路徑、敏感的文件信息、網站的編輯器路徑或測試接口、系統敏感目錄等信息。
造成漏洞原因
程序在實現上沒有充分過濾用戶輸入的…/之類的目錄跳轉符,導致惡意用戶可以通過提交目錄跳轉來遍歷服務器上的任意文件。
跨站腳本攻擊
分三類:反射型、存儲型、DOM型
利用:獲取cookie,釣魚
這里我就不細說了
2、用戶相關
明文傳輸、用戶名遍歷
在登錄框BP抓包,發現用戶名、密碼是明文傳輸的,即客戶端與服務器的數據傳輸未加密。
危害:攻擊者可能通過劫持ARP欺騙、嗅探Sniffer、等手段截獲敏感數據,若獲取用戶名和密碼信息,可以進入到系統當中。
漏洞挖掘:
1、查看是否使用HTTPS協議
2、用戶名、密碼是否加密
任意用戶注冊
利用:在登錄框處輸入手機號,密碼,驗證碼隨便填,BP抓包,嘗試驗證碼爆破
下圖作用是可以抓到返回包并可修改返回值:
任意密碼重置
任意賬號密碼重置的6種方法,這里深入講一下:
- 短信驗證碼回傳:通過手機找回密碼,響應包中包含短信驗證碼。
修復建議:響應包中去掉短信驗證碼。
修改用戶名、用戶ID或手機號重置任意賬號密碼:
通過手機找回密碼一般需要短信驗證碼驗證。當我們輸入正確的手機號和正確的短信驗證碼,然后進入重置密碼的最后一步,也就是輸入新的密碼輸入密碼后提交到服務端的post數據包需要包含當前用戶的身份信息。而一般網站是通過用戶名或用戶ID來標識用戶身份的,如果這個用戶名或用戶ID沒有和當前手機號、短信驗證碼進行綁定;也就是說服務端只驗證用戶名、ID是否存在,而不去驗證用戶和當前手機號是否匹配,那么我們就可以通過修改用戶名、ID去修改其他用戶的密碼了。也可以修改的地方不限于找回密碼的數據包,比如修改資料的地方也可能存在這樣的漏洞。
修復建議:
用戶操作個人信息時,服務端要對當前用戶身份進行驗證,防止越權操作;
用來標識用戶身份的名稱或ID可以使用自定義加密,也可以隱藏這些參數,直接從cookie中獲取用戶信息;
用戶修改密碼時應該先對舊密碼進行驗證,或者使用手機短信驗證;
用戶修改手機號時需要先對原手機號進行驗證。
- 修改響應包重置任意賬號密碼:通過手機找回密碼一般需要短信驗證碼驗證,服務端需要告訴客戶端,輸入的驗證碼是否正確。如果客戶端收到true的信息,那么就會向帶著true的信息向服務端請求進入下一步,而服務端收到true的信息,就會允許客戶端進入下一步。反之,如果是false的信息,服務端就不會允許客戶端進入下一步。所以我們進入下一步的關鍵是讓服務端收到客戶端的true信息。而通過Burpsuite,我們可以修改服務端返回到客戶端的信息,這樣一來,我們就可以輸入任意短信驗證碼,然后將服務端返回的false信息改為true就可以繞過短信驗證碼的驗證了。
修復建議:
服務端對驗證碼進行驗證,結果為true時直接跳到下一步,無需向客戶端單獨返回驗證結果;
輸入新的密碼,然后提交到服務端,服務端應對當前用戶名、手機號、短信驗證碼進行二次匹配驗證,都為true時,才可以修改成功。
- 跳過驗證步驟重置任意賬號密碼:找回密碼流程一般需要四個步驟:1、驗證用戶名;2、驗證短信驗證碼;3、輸入新密碼;4、重置成功。
利用思路:第一步正常輸入用戶名,第二部輸入任意驗證碼,直接訪問輸入新密碼,重置密碼。
原因:當我們輸入新的密碼后,提交到服務端,服務端并沒有對當前用戶身份進行二次驗證,只是簡單的獲取到用戶名或ID以及新密碼,從而導致跳過短信驗證碼驗證重置任意賬號密碼。
修復建議:
每一個步驟都要對前一個步驟進行驗證;
最后提交新密碼時應對當前用戶名或ID、手機號、短信驗證碼進行二次匹配驗證。
- 重置密碼鏈接中token值未驗證或不失效導致任意賬號密碼重置:使用郵箱重置密碼時,服務端向郵箱發送一個重置密碼的鏈接,鏈接中包含當前用戶的身份信息和一個隨機生成的token信息,如果未對token值進行驗證或是驗證后不失效,我們就可以通過修改用戶名或用戶ID來重置任意賬號密碼。
修復建議:
服務端對客戶端提交的token值進行驗證;
保證token值使用一次后即失效,防止重復使用;
對用戶ID進行自定義加密;
使用根據用戶ID生成的token值來標識用戶,鏈接中不攜帶用戶ID。
- 找回密碼的短信驗證碼可被爆破導致任意賬號密碼重置:找回密碼時使用位數較少的短信驗證碼,或者驗證碼沒有設置有效時間限制,導致攻擊者借助自動化工具(例如BP)進行爆破獲得短信驗證碼,從而導致重置任意賬號密碼。
修復建議:
驗證碼滿足一定復雜度,且限制驗證碼生效時間;
驗證短信驗證碼的數據包使用token值并驗證,防止自動化工具爆破
弱口令
短信相關漏洞
短信轟炸
短信炸彈是利用互聯網第三方接口發送垃圾短信轟炸,只需輸入手機號碼就可以利用網絡短信無限轟炸對方手機,具有惡意騷擾功能的軟件。
短信驗證碼爆破
上面講到過了,例如:用BurpSuite爆破。
驗證碼回顯
思路:登錄接收驗證碼時,BP抓包,可以看到驗證碼回顯在返回包中。
萬能驗證碼
類似于弱口令,程序員開發為了方便,設置比較簡單,例如8888、0000等。
驗證碼失效、未與用戶綁定
二、搜索框存在什么漏洞?
- SQL注入:SQL注入漏洞主要形成的原因是在數據交互中,前端的數據傳入到后臺處理時,沒有做嚴格的判斷,導致其傳入的"數據"拼接到SQL語句中后,被當作SQL語句的一部分執行,從而導致數據庫被增、刪、改、查的危害。
- xss漏洞
三、新增主題、添加用戶處存在什么漏洞
越權
sql注入
文件上傳
未授權登錄
csrf
四、導入、導出excel處存在什么漏洞
任意文件讀取、下載
任意文件上傳漏洞
xxe
五、內容編輯處存在什么漏洞
xss
sql注入
越權
文件上傳
編輯器:fckeditor、ueditor
六、修改頭像處
文件上傳:getshell、xss
越權
七、頁面內容瀏覽處一般存在漏洞
越權
sql注入
八、結束語
如果有哪里需要改正歡迎各位在評論區留言和我一起探討。如果你覺得對你有幫助的話,就點贊支持一下,你們的支持就是我創作的最大動力!