由于測試過程中很多系統我們能接觸到的只有一個登陸界面,所以要充分挖掘漏洞,進行深入操作

登錄 注冊

萬能密碼繞過登錄

存在 SQL 注入的情況下,有可能使用萬能密碼直接登錄

admin' or '1'='1'--
admin' OR 4=4/*
"or "a"="a
' or''='
' or 1=1--

有超級多

登錄口 SQL 注入

存在 SQL 注入的話直接注出賬密

有些可以構造用戶注入登錄,比如熊海 cms 后臺登錄處存在 sql 注入

$login=$_POST['login']; 
$user=$_POST['user']; 
$password=$_POST['password']; 
$checkbox=$_POST['checkbox']; 
if ($login<>""){ 
$query = "SELECT * FROM manage WHERE user='$user'"; 
$result = mysql_query($query) or die('SQL語句有誤:'.mysql_error()); 
$users = mysql_fetch_array($result);

這里萬能密碼起不到作用,因為他是通過用戶名去數據庫查密碼,再進行匹配,還有一種方法非常巧妙

user:1' union select 1,2,'test','c4ca4238a0b923820dcc509a6f75849b',5,6,7,8# 
password:1

這是 mysql 的特性, 在聯合查詢并不存在的數據時,聯合查詢就會構造一個虛擬的數據,就相當于構造了一個虛擬賬戶,可以使用這個賬戶登錄

未授權訪問

后臺未授權訪問

列舉幾種找未授權訪問的方法

?使用目錄掃描工具,如 dirsearch 等掃描路徑,有的可能存在目錄遍歷

?查看 js 代碼中登錄成功后的跳轉 url

?使用 jsfind 找可疑 url

?利用 web 程序已知漏洞如:druid 未授權的 urls、springboot mapping 等未授權漏洞界面找可疑的 url,訪問查看是否存在未授權

?有些可能在未授權進入后臺一瞬間,重定到登錄頁面,這時可以利用 burp 抓包把跳轉包 drop 掉

組件未授權

使用的組件可能會出現漏洞,常用的未授權漏洞,對于端口的收集也至關重要,可以提高漏洞利用面

?Redis 未授權訪問漏洞

?MongoDB 未授權訪問漏洞

?Jenkins 未授權訪問漏洞

?Memcached 未授權訪問漏洞

?JBOSS 未授權訪問漏洞

?VNC 未授權訪問漏洞

?Docker 未授權訪問漏洞

?ZooKeeper 未授權訪問漏洞

?Rsync 未授權訪問漏洞

?Atlassian Crowd 未授權訪問漏洞

?CouchDB 未授權訪問漏洞

?Elasticsearch 未授權訪問漏洞

?Hadoop 未授權訪問漏洞

?Jupyter Notebook 未授權訪問漏洞

https://www.freebuf.com/vuls/265318.html
https://xz.aliyun.com/t/6103

其他功能點 (注冊)(找回密碼)

超長用戶名注冊

注冊用戶

admin+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++1

覆蓋掉原來的 admin 用戶,不常見

任意重置密碼

此時客戶端會發一個驗證碼包,這是隨意輸入驗證碼,發包,返回包

返回包錯誤的回顯為 {“status”:0},將返回包的東西換成 {“status”:1},即可重置密碼

用戶枚舉漏洞

找回密碼界面,輸入用戶名抓包,查看返回包中泄露的信息

比如:TerraMaster TOS 用戶枚舉漏洞 CVE-2020-28185

輸入用戶名 admin 點擊確定,查看 Burp 捕獲的包,其中有一個請求包用于確認用戶 admin 是否存在,存在則返回用戶的郵箱信息

驗證碼問題

驗證碼不刷新

驗證碼不會自動刷新,導致一個驗證碼可以用很多次

驗證碼失效

驗證碼無效依然可爆破,在挖掘弱口令的時候,常常會遇到圖片驗證碼無效的情況,此時只需要輸入正確的賬號密碼和驗證碼,使用 burpsuite 依然可繼續爆破

驗證碼前端返回

有的平臺可能驗證碼校驗在前端進行,錯誤的將后臺的驗證碼返回到前端,導致攻擊者可以抓取返回包中的驗證碼

驗證碼爆破

有的平臺可能驗證碼比較簡單只有幾位數字,且沒有對登錄次數限制,存在爆破,使用 burp 抓包爆破

驗證碼可重復使用

實例:通過一分鐘發送一次,可同時存在多條有效的驗證碼,通過爆破驗證達到任意密碼重置漏洞

驗證碼短信轟炸

對于驗證碼發送次數沒有做限制,導致造成短時間內短信重發,使用 burp 抓取獲取驗證碼的包放到 repeater 不斷重放,更暴力點可以使用 intruder

驗證碼 OCR

對登錄頁面使用工具如 xcode 對驗證碼進行識別爆破用戶賬號密碼

驗證碼驗證邏輯錯誤

就是驗證碼可以修改接收者,將賬戶修改密碼的驗證碼抓包修改為其他手機號,后臺并沒有做驗證

萬能驗證碼

可能存在萬能驗證碼 0000 或者 9999,不常見

越權

過于簡單的 cookie

如果用戶登錄后的 cookie 并不是隨機的,而是如

cookie:Guest

這種過分簡單的身份驗證方法,可以導致越權,如果又存在用戶注冊,就可以注冊一個普通用戶然后越權為 admin

HTML 源碼信息泄露

固定加密的賬密

比如:中科網威 下一代防火墻控制系統存在賬號密碼泄露漏洞,攻擊者通過前端獲取密碼的 Md5 后解密可獲取完整密碼登陸后臺

fofa語句:body="Get_Verify_Info(hex_md5(user_string)."

F12 查看前端發現 admin 的 md5 加密密碼

注釋泄露信息

必須泄露的 url,或者敏感信息

ELSE

URL 重定向

經常出現在登錄成功跳轉中,可以修改參數跳轉到任意頁面,可用于釣魚

比如:www.ocean.com?redir=aHR0cDovL2FkbWluLmFhYS5jb20=[1]

redir 后面的可能會進行 base64 編碼

redirect、redirect_to、redirect_url、url、jump、jump_to、target、to、link、linkto、Domain

已知漏洞利用

因為一個 web 服務會用到很多組件,只要一個組件出現漏洞,這個密不透風的墻就被推到了,所以說資產收集是很重要的,收集足夠多的信息,知己知彼百戰百勝

有條件可以用一個掃描器掃描已知漏洞

?web 框架歷史漏洞

?cms 歷史漏洞

?oa 歷史漏洞

?使用 fofa、瀏覽器插件 wappalyzer 等收集資產,然后拿漏洞庫的 poc 去嘗試. 工具地址: https://www.wappalyzer.com/

弱口令

默認密碼

很多設備都存在默認的帳號密碼

特別是一些廠商設備弱口令很常見

常見設備弱口令整理[2]
https://wiki.bylibrary.cn/%E9%80%9F%E6%9F%A5%E8%A1%A8/%E5%B8%B8%E8%A7%81%E4%BA%A7%E5%93%81%E5%BC%B1%E5%8F%A3%E4%BB%A4/

一個簡單的弱口令就讓高昂的設備白給

測試賬號未刪除

比如 test,ceshi

拼音姓名字典

拼音姓名字典、用戶名字典(如 root,system,admin1 等)+ 弱口令爆破,使用常規的拼音姓名字典 +123456,123,等弱口令進行爆破

如果網站有注冊功能,破解用戶密碼的時候可以先去注冊查看注冊機制,如果可以使用 123456 等

密碼那么就用拼音字典去爆破 123456 等弱口令,如果不行,可根據密碼復雜程度制作密碼,比如密碼需求是字

母加數字的八位,就可以嘗試 abcd1234 等符合密碼規則的密碼進行爆破

* 用戶名枚舉

使用兩位字母和三位字母枚舉,爆破 123456 等弱口令,成功爆破出一枚管理員后臺賬號密碼,之前一個學校的后臺弱口令沒成功,SQL 注入后發現用戶名全是姓名首字母,密碼 1111

提示過于詳細

當爆破的時候返回包顯示密碼不正確用戶名不存在的時候,我們可以搜集這些用戶名進行專門的弱口令爆破,例如我爆破出存在多個存在的用戶名,首先搜集這些用戶名,然后設置 burpsuite,通過以下格式的方法進行爆破,例如:Lihua,lihua123 lihua lihua lihua lihua@123 lihua lihua1234 且注意網站下方是否有建立時間,如果時間是 2017 年建站的 ,我們的密碼可以設置成 lihua@2017 lihua@2018 等進行專門針對用戶名的爆破

域名做字典

截取子域名一部分作為字典挖掘弱口令

比如學校 wlzx(網絡中心),tw(團委),jxzl(教學質量)等常見的系統用戶名也是子域名

根據網站性質猜測用戶名,比如教務類網站常有 teacher,student1 等用戶名,或者企業縮寫為用戶名

搜集文章發布者姓名

搜集文章發布者姓名,在挖掘弱口令漏洞的時候,我常常會搜集文章發布者的姓名,網頁上會有一些文章發布者的名字,我會把它搜集其他作為針對該網站爆破后臺的用戶名,并且整合前幾種方法進行爆破。如果遇到中文名的管理員,我會把它轉換為英文名,比如發布者: 李剛,我的字典里就會多 lilgang,lg,lig,lgang,這幾個用戶名,配合前幾種姿勢進行爆破。當然也遇到過比較奇葩的,直接就是中文為用戶名

信息收集

不放過細節,qq 群號很重要

在以前遇到一個這樣的案例,網站上面存在一個客服 qq 群號碼,網站是需要公司用戶登錄的,驗證碼也無法爆破,我在了解了網站的業務之后,通過網站上的 qq 群號碼加群,在群公告之中發現了默認密碼是 xxx@xx1, 但是不知道用戶名,就在群里問了一句我登錄不進去了,然后私聊一些群里的其他用戶獲取了用戶名是企業統一信用代碼,而群名片就是企業名字。我通過中國企業統一代碼查詢網站得知了這些企業的用戶名。然后通過該默認密碼進入了后臺繼續深入挖掘。另外在 src 上也挖到過同類問題,直接通過企業用戶名和企業信用代碼就可以重置企業用戶密碼進而查看學生簡歷,總而言之,任何網頁上的信息都可能作為用戶名,需要細心搜集

注冊賬號搜尋信息

在網站登錄口無法爆破的時候,可以耐下心來注冊,通過后臺搜索好友等方法搜集用戶名。然后在了解注冊密碼復雜程度機制之后挨個挨個的去手工嘗試用戶名密碼。比如搜集到了 lihao 用戶名,就可以參照前面的方法手動嘗試 lihao lihao123 等密碼進行登錄,此方法需要很大耐心,但是十分有效

安裝文檔

搜集該網站的安裝文檔,使用文檔等尋找默認賬號密碼或者未打碼(也可以通過百度,谷歌,百度網盤等搜集)

Fuzz

工號、學號、身份證號等 fuzz,當遇到用戶名可能為工號的情況下,fuzz 一波數字工號 ,或者尋找有無工號泄露的地方,根據工號繼續爆破

擴展

思考爆破時什么變量是可控的

當我們遇到一個段的測試任務時,可以使用一個簡單的弱口令字典批量爆破整個段的服務。不管內網還是外網都實用,例如內網想爆破 ssh 的時候,可以使用