轉載:https://github.com/PyxYuYu/MyBlog/issues/102前端
業務邏輯漏洞
業務邏輯漏洞
HTTP/HTTPS
請求分析沒有
驗證碼限制或者一次驗證碼可使用 屢次
使用的狀況下
Burpsuite
Hydra
Cookie 和 Session
問題
Cookie
機制採用的是在客戶端保持狀態的方案,用來記錄用戶的一些信息,也是實現 Session
的一種方式Session
機制採用的是在服務器端保持狀態的方案,用來跟蹤用戶的狀態,能夠保存在集羣、數據庫、文件中Cookie
的內容主要包括:名字、值、過時時間、路徑和域,其中路徑和域一塊兒構成 Cookie
的做用範圍,若不設置過時時間,則表示這個 Cookie
的生命期爲瀏覽器會話期間,關閉瀏覽器窗口,則消失,這種生命期爲瀏覽器會話期的 Cookie
被稱爲會話 Cookie
Session
機制是一種服務端的機制,當程序須要爲某個客戶端的請求建立一個 Session
時,服務器會首先檢查這個客戶端的請求裏是否包含了一個 Session
標識(Session id
),若是已包含說明此前已經爲此客戶端建立過 Session
,服務器會按照 Session id
將這個 Session
檢索出來使用(檢索不到,會新建一個),若是客戶端請求不包含 Session id
,則會爲此客戶端建立一個 Session
而且生成一個 Session id
,這個 Session id
將被在本次響應中返回給客戶端保存,保存這個 Session id
的方式能夠採用 Cookie
,若是客戶端瀏覽器禁用了 Cookie
,通常這種狀況下,會使用一種 URL
重寫的技術來進行會話跟蹤,即每次 HTTP
交互,URL
後都會被附加一個諸如 sid=xxxxxxxx
這樣的參數,服務端根據此來識別用戶Cookie
是否爲空、Session
是否爲 true
來判斷用戶是否能夠登陸,只要構造一個 Cookie
或 Session
爲 true
就能夠繞過認證登陸Session
會話固定攻擊
Session id
)的攻擊手段Session id
,而後監聽用戶會話狀態Session id
登陸站點Session id
得到合法會話Session id
的方式
XSS
Session id
在 URL
中,能夠經過誘導用戶去點擊重置了 Session id
的 URL
Cookie
來存放 Session id
,可使用如下方法
Cookie
到瀏覽器
Cookie
document.cookie="sessionid=123"
XSS
攻擊來達到目的HttpOnly
屬性,但有少數瀏覽器存在漏洞,即便設置了 HttpOnly
,也能夠重寫 Cookie
,因此還須要其餘驗證方式,好比 User-Agent
、Token
等HTML
的 <META>
標籤加 Set-Cookie
屬性
HTML
文檔中增長 <META>
標籤的方式來設置 Cookie
<META>
標籤的處理目前還不能被瀏覽器禁止Set-Cookie
的 HTTP
響應頭部設置 Cookie
Web
服務器的響應中加入 Set-Cookie
的 HTTP
響應頭部DNS
服務器Cookie
仿冒攻擊
Cookie
中的某個參數來實現登陸其餘用戶HTTPS
,前端加密,用密文去後臺驗證,能夠利用 smart decode
進行解碼手機號
篡改
郵箱或者用戶
篡改
Referer
和 POST
中的普通用戶改爲 admin
admin
的密碼修改頁面,利用邏輯漏洞獲取超級權限訂單ID
篡改
訂單ID
查看是否能查看其餘訂單信息商品編號
篡改
goods_id
(商品編號)爲高積分的商品編號用戶ID
篡改
用戶ID
,修改 ID
查看是否能查看其餘用戶信息簡歷ID
金額
篡改
商品數量
篡改
JS
腳本限制,未在服務端校驗用戶提交的數量,經過抓包修改商品最大限制數量,即將請求中的商品數量改成大於最大數值限制,查看是否能完成修改後的數量完成業務流程驗證碼
)
phone=18888888888abc
驗證碼
及 token
)
verifycode=xxxx
,或者由 md5
加密後顯示,解密便可(同理,有的時候輸入用戶名,抓包能夠看到返回的手機號等其餘信息)token
),先記錄下這個加密字符串URL
後新增了一個加密驗證的字符串token
Unix時間戳 + md5
md5
加密字符串1491293277
(10位),能夠判斷爲 Unix時間戳
Unix時間戳
進行暴力破解,便可得到重置密碼的連接token
只差 1-2
,並且能夠猜想出爲服務器時間token
,就能夠構造出未知賬號的密碼找回連接username
改成他人用戶名,提交後成功修改他人密碼token
token
,可是依然能夠直接修改 用戶ID
進而修改他人密碼token
token
,重置密碼Cookie
內從 JSESSIONID
開始的內容替換至正常流程的發生驗證碼包內,同時替換本身接受驗證碼的郵箱,提交Cookie
、他人賬號、本身郵箱替換至驗證驗證碼模塊,提交(不用在乎返回是否錯誤)token
模塊,提交獲取 token
token
和上面的內容替換至最後的重置密碼模塊,提交成功修改密碼URL
連接中有 uid
參數,修改 uid
參數爲他人的,便可實現將他人的帳戶綁定上本身的手機,以後經過手機來修改密碼userId
爲他人,修改 mobilePhone
爲本身的手機,便可實現將他人的帳戶綁定上本身的手機,以後經過手機來修改密碼URL
連接中修改 用戶ID
爲他人,郵箱不變,以後經過連接能夠將他人帳戶綁定爲本身的郵箱,以後經過郵箱找回密碼Uid
參數,修改成他人,便可修改其餘用戶密碼Session id
、用戶ID
修改成剛剛從其餘用戶名抓包得到的內容,提交這個包,便可成功修改他人密碼F12
審查元素,修改本身的手機爲他人手機,提交成功修改他人手機(也能夠抓包修改)URL
,記錄下來USERNAME_COOKIE
爲其餘用戶(有可能會通過編碼,好比 base64
),提交便可修改其餘用戶密碼step
參數,能夠修改這個參數爲最後一步(好比:5),提交即可略過以前的步驟Burpsuite
中能夠選取 do intercept --> response to this request
)URL
跳轉到驗證身份頁面,連接中就有一段加密字符串,記錄下,隨便輸入驗證碼,抓包,修改包中數據爲正常流程下的數據,替換加密字符串,Forward
發送,就能夠繞過驗證碼,直接修改密碼type
之類的參數,也能夠嘗試修改,有 email
之類的參數,能夠嘗試刪除內容),發送修改後的包,手機成功接收驗證碼type
之類的參數,能夠繼續嘗試修改,發送就能夠成功修改密碼txt
文件,導入 Sqlmap
中跑一遍token
生成
token
生成可控
URL
連接中的加密字符串同樣,因此能夠利用這個加密字符串User
爲其餘用戶(User
有可能會使用 md5
加密),發送,就能夠返回其餘用戶的加密字符串URL
連接,加入加密字符串,能夠直接繞過驗證碼,重置密碼admin
,至關於修改了密碼session
覆蓋
session
覆蓋致使了,這個連接成爲了修改他人密碼的連接,成功修改他人密碼Burpsuite
Hydra
用戶名
(郵箱等等)type
之類的參數用於判斷執行順序,可直接更改跳轉至支付成功頁面業務邏輯漏洞終總結
JS
瞭解(JS
中可能會存在信息泄漏)特殊參數
,頗有可能就是這些 特殊參數
決定了業務步驟數字 + 字母
嘗試繞過HTTP/HTTPS
請求分析,關注重點在各類能夠用於區別的參數,繞過必要驗證,跳過業務步驟