自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

小議驗(yàn)證碼的安全性及如何繞過(guò)

安全 數(shù)據(jù)安全
在實(shí)際業(yè)務(wù)及生產(chǎn)中,某些功能會(huì)要求有CAPTCHA。而不安全的CAPTCHA,將會(huì)導(dǎo)致敏感數(shù)據(jù)被竊取,認(rèn)證攻擊,DOS用戶甚至管理員等嚴(yán)重問(wèn)題的發(fā)生。因此對(duì)于開(kāi)發(fā)人員和使用者而言,具有一個(gè)好的設(shè)計(jì)和實(shí)施的CAPTCHA至關(guān)重要!

一、什么是驗(yàn)證碼?

CAPTCHA是(全自動(dòng)區(qū)分計(jì)算機(jī)和人類(lèi)的圖靈測(cè)試)的簡(jiǎn)稱,是用于區(qū)分計(jì)算機(jī)和人類(lèi)的一種程序算法,這種程序必須能生成并評(píng)價(jià)人類(lèi)能很容易通過(guò)但計(jì)算機(jī)卻通不過(guò)的測(cè)試。

像我們平時(shí)最常遇到的,就是基于圖片的驗(yàn)證碼。這類(lèi)圖片驗(yàn)證碼通常包含的,都是些易于用戶識(shí)別簡(jiǎn)單的驗(yàn)證信息。如下圖所示。用戶必須準(zhǔn)確的識(shí)別圖像內(nèi)的字符,并以此作為人機(jī)驗(yàn)證的答案,方可通過(guò)驗(yàn)證碼的人機(jī)測(cè)試。相反如果驗(yàn)證碼填寫(xiě)錯(cuò)誤,那么驗(yàn)證碼字符將會(huì)自動(dòng)刷新并更換一組新的驗(yàn)證字符,直到用戶能夠填寫(xiě)正確的驗(yàn)證字符為止。

orwell

二、驗(yàn)證碼的重要性

1. 防止與認(rèn)證相關(guān)的攻擊行為

以下列舉的是一些較易受到暴力攻擊的點(diǎn)。例如:

  • 登錄:一旦缺少驗(yàn)證碼的保護(hù),攻擊者則很可能通過(guò)暴力破解的方式非法接管用戶賬戶。
  • 忘記密碼:如果網(wǎng)絡(luò)應(yīng)用程序使用詳細(xì)消息響應(yīng)帳戶存在或不存在,那么攻擊者則可以進(jìn)行用戶名的枚舉。
  • 注冊(cè):程序批量創(chuàng)建垃圾賬戶。此外還可以進(jìn)行用戶名的枚舉。(正常情況下沒(méi)有應(yīng)用程序會(huì)允許用戶,同時(shí)注冊(cè)兩個(gè)相同用戶名的賬號(hào))

2. 避免垃圾郵件和DOS

我們知道很多網(wǎng)站都有提交表單的功能,并需要由站點(diǎn)管理員審核通過(guò)。例如:會(huì)員申請(qǐng),聯(lián)系我們,反饋表,調(diào)查表等。這些功能都需要驗(yàn)證碼的保護(hù),如果不加以防護(hù)那么將會(huì)導(dǎo)致以下情況的出現(xiàn):

  • 大量的垃圾表單可能產(chǎn)生,不僅會(huì)影響網(wǎng)站的訪問(wèn)速度,還會(huì)加大站點(diǎn)管理員的工作量,而且一些合法用戶的請(qǐng)求,也可能會(huì)因此被拒絕。
  • 電子郵件轟炸:一些功能可以發(fā)送電子郵件到一個(gè)任意的郵件地址。如果沒(méi)有得到有效的驗(yàn)證保護(hù),那么惡意攻擊者則可以利用程序,向特定的目標(biāo)發(fā)送大量的垃圾郵件。

3. 保護(hù)數(shù)據(jù)挖掘機(jī)器人

  • 某些包含大量數(shù)據(jù)的站點(diǎn)極易遭受數(shù)據(jù)挖掘攻擊,因此它們也需要驗(yàn)證碼的保護(hù)。例如:社交網(wǎng)絡(luò)和搜索引擎。

三、驗(yàn)證碼為什么能被繞過(guò)?

驗(yàn)證碼被繞過(guò),有以下兩個(gè)原因:

  • 設(shè)計(jì)問(wèn)題
  • 執(zhí)行問(wèn)題

在以下的內(nèi)容,我將會(huì)帶大家認(rèn)識(shí)到這兩個(gè)問(wèn)題所在。以及如何解決這些問(wèn)題,建立更為安全的人機(jī)驗(yàn)證。

1. 設(shè)計(jì)問(wèn)題

設(shè)計(jì)問(wèn)題則意味著驗(yàn)證碼本質(zhì)上的脆弱性,但執(zhí)行卻不存在問(wèn)題。以下演示將有助于我們了解設(shè)計(jì)問(wèn)題的真正原因,以及如何破解它:

(1) 設(shè)計(jì)問(wèn)題#1:

以下的示例中我們可以看到,這里的驗(yàn)證碼就是一道數(shù)學(xué)運(yùn)題。而這里的問(wèn)題就出在頁(yè)面的HTML源碼上。

captcha-arith.png

你可以在Github上下載到該驗(yàn)證碼的源碼:

https://github.com/securelayer7/Captch-Bypass-Vulnerable-Script/tree/master/ArithmeticCAPTCHA

如何破解?

在這種情況下攻擊者往往都會(huì)通過(guò)獲取該頁(yè)面的HTML源碼,計(jì)算答案并提交HTTP響應(yīng)來(lái)破解驗(yàn)證碼。

captha-arith-crack.png

你可以在Github上下載到該利用代碼:

https://github.com/securelayer7/Captch-Bypass-Vulnerable-Script/tree/master/CaptchaExploits

(2) 設(shè)計(jì)問(wèn)題#2:

某些驗(yàn)證碼可能會(huì)采用相對(duì)有限的問(wèn)題數(shù)據(jù)庫(kù)。例如以下是一個(gè)基于圖片的驗(yàn)證碼,很顯然這里不能再利用上面提到的破解方案來(lái)破解。但這里的問(wèn)題出在,這里的圖片驗(yàn)證碼字符是固定并且有限的,在本例中該驗(yàn)證碼只會(huì)在來(lái)回10個(gè)固定字符組合中更換。因此一旦掌握了它的問(wèn)題數(shù)據(jù)庫(kù),那么破解也自然就不成問(wèn)題了。

captcha-ten.png

你可以在Github上下載到該驗(yàn)證碼的源碼:

https://github.com/securelayer7/Captch-Bypass-Vulnerable-Script/tree/master/TenRepeatedCAPTCHA

如何破解?

攻擊者首先必須手動(dòng)解決這10個(gè)驗(yàn)證碼問(wèn)題,并同時(shí)記錄下這些問(wèn)題的答案。然后通過(guò)工具將這些問(wèn)題的答案存放在自己的數(shù)據(jù)庫(kù)中,進(jìn)行不斷的暴力攻擊嘗試即可。

captcha-tenrepeated-crack.png

你可以在Github上下載到該利用代碼:

https://github.com/securelayer7/Captch-Bypass-Vulnerable-Script/tree/master/CaptchaExploits

2. 執(zhí)行問(wèn)題

執(zhí)行問(wèn)題則意味著驗(yàn)證碼由于執(zhí)行不力而可被破解,但從設(shè)計(jì)的角度來(lái)看是完美的。

以下示范將有助于我們了解,執(zhí)行問(wèn)題的真正含義以及如何破解它:

(1) 執(zhí)行問(wèn)題#1:

在演示中,我們正在使用Google reCAPTCHA人機(jī)驗(yàn)證。我們使用API將用戶解決的CAPTCHA響應(yīng)發(fā)送給Google的端點(diǎn)。更多請(qǐng)點(diǎn)擊:

https://www.google.com/recaptcha/intro/index.html 。API以JSON的輸出形式回復(fù)請(qǐng)求,以及HTTP狀態(tài)碼。到現(xiàn)在為止,還沒(méi)發(fā)現(xiàn)什么問(wèn)題 !!

但是執(zhí)行問(wèn)題也就出在這里。開(kāi)發(fā)人員無(wú)法檢查JSON響應(yīng),而以檢查發(fā)送的HTTP狀態(tài)碼是否為200 OK,作為驗(yàn)證碼正確與否的判斷依據(jù)。

weak-captcha-1.png

你可以在Github上下載到該驗(yàn)證碼的源碼:

https://github.com/securelayer7/Captch-Bypass-Vulnerable-Script/blob/master/GooglereCAPTCHA/weakcaptcha1.php

weak-captcha-1-code.png

如何破解?

攻擊者只需要制作一個(gè)腳本即可將任何值發(fā)送給人機(jī)驗(yàn)證碼,并且都將會(huì)被服務(wù)器所接收,因?yàn)闊o(wú)論你發(fā)送什么答案,服務(wù)器都只會(huì)通過(guò)檢查Google API發(fā)送的狀態(tài)碼是否為200 OK來(lái)作為判斷依據(jù)。下圖中,我們作為答案發(fā)送的值是“InvalidAnswerOfCAPTCHA”

你可以在Github上下載到該利用代碼:https://github.com/securelayer7/Captch-Bypass-Vulnerable-Script/tree/master/CaptchaExploits

(2) 執(zhí)行問(wèn)題#2:

驗(yàn)證碼存在于web頁(yè)面,在用戶提交后將被驗(yàn)證,但問(wèn)題卻出在了if和else一個(gè)簡(jiǎn)單的子句中。這個(gè)錯(cuò)誤是由于開(kāi)發(fā)人員將響應(yīng)碼寫(xiě)在了其它部分形成的。所以這里即使驗(yàn)證碼答案是錯(cuò)誤的,應(yīng)用程序仍將給予用戶積極的響應(yīng)。

weak-captcha-2.png

weak-captcha-2-code.png

你可以在Github上下載到該驗(yàn)證碼的源碼:https://github.com/securelayer7/Captch-Bypass-Vulnerable-Script/blob/master/GooglereCAPTCHA/weakcaptcha2.php

如何破解?

攻擊者只需要制作一個(gè)腳本,即可向驗(yàn)證碼發(fā)送任意值。在下圖中,我們作為答案發(fā)送的值是“InvalidAnswerOfCAPTCHA”

“InvalidAnswerOfCAPTCHA

你可以在Github上下載到該利用代碼:https://github.com/securelayer7/Captch-Bypass-Vulnerable-Script/tree/master/CaptchaExploits

(3) 執(zhí)行問(wèn)題#3:

驗(yàn)證碼存在于web頁(yè)面,但在提交后未在服務(wù)器端進(jìn)行驗(yàn)證。

weak-captcha-3.png

你可以在Github上下載到該驗(yàn)證碼的源碼:

https://github.com/securelayer7/Captch-Bypass-Vulnerable-Script/blob/master/GooglereCAPTCHA/weakcaptcha3.php

https://github.com/securelayer7/Captch-Bypass-Vulnerable-Script/blob/master/GooglereCAPTCHA/weakcaptcha4.php

如何破解?

攻擊者只需通過(guò)輸入錯(cuò)誤的驗(yàn)證碼和任意電子郵件,就可以輕松地繞過(guò)它。

你可以在Github上下載到該利用代碼:

https://github.com/securelayer7/Captch-Bypass-Vulnerable-Script/tree/master/CaptchaExploits

四、如何保護(hù)自己免受CAPTCHA攻擊?

其實(shí)這個(gè)問(wèn)題也很簡(jiǎn)單,大家可以按照以下步驟,來(lái)制作一個(gè)強(qiáng)大的CAPTHCA功能:

設(shè)計(jì):實(shí)施設(shè)計(jì)良好的CAPTCHA方案。從以上示例中我們可以看到,大多數(shù)我們自己設(shè)計(jì)的驗(yàn)證碼都或多或少的存在一些問(wèn)題。因此,我建議大家盡可能的使用像Google這樣的第三方CAPTCHA。

執(zhí)行:在你選擇了具有良好設(shè)計(jì)的人機(jī)識(shí)別系統(tǒng)后,下一步是正確的執(zhí)行。我們已經(jīng)看到,盡管有一個(gè)設(shè)計(jì)良好的CAPTCHA,但是如果不能正確執(zhí)行,仍然可以被破解。如果你使用的是Google reCAPTCHA,請(qǐng)參照以下操作步驟:

  • 以檢查Google發(fā)送的JSON響應(yīng)取代HTTP狀態(tài)碼檢查。
  • 在if和else子句中實(shí)現(xiàn)正確的邏輯,區(qū)分有效和無(wú)效的答案。
  • 不要透露你的私人CAPTCHA密鑰。

如何保護(hù)自己免受CAPTCHA攻擊?

你可以從這里下載安全的CAPTCHA代碼:

https://github.com/securelayer7/Captch-Bypass-Vulnerable-Script/blob/master/GooglereCAPTCHA/goodcaptcha.php

五、總結(jié)

在實(shí)際業(yè)務(wù)及生產(chǎn)中,某些功能會(huì)要求有CAPTCHA。而不安全的CAPTCHA,將會(huì)導(dǎo)致敏感數(shù)據(jù)被竊取,認(rèn)證攻擊,DOS用戶甚至管理員等嚴(yán)重問(wèn)題的發(fā)生。因此對(duì)于開(kāi)發(fā)人員和使用者而言,具有一個(gè)好的設(shè)計(jì)和實(shí)施的CAPTCHA至關(guān)重要!

所有腳本的Github鏈接:https://github.com/securelayer7/Captch-Bypass-Vulnerable-Script

責(zé)任編輯:趙寧寧 來(lái)源: FreeBuf
相關(guān)推薦

2017-12-21 07:38:19

2017-05-18 09:36:11

大數(shù)據(jù)爬蟲(chóng)驗(yàn)證碼

2022-01-20 10:54:23

移動(dòng)手機(jī)短信驗(yàn)證碼隱患

2015-09-21 15:31:05

php實(shí)現(xiàn)驗(yàn)證碼

2018-11-23 09:36:11

Python驗(yàn)證碼KNN

2023-07-11 10:38:24

區(qū)塊鏈文件驗(yàn)證安全

2013-06-19 10:19:59

2012-12-26 10:53:26

2021-01-19 10:29:34

短信驗(yàn)證碼密碼

2022-02-11 07:10:15

驗(yàn)證碼

2021-10-19 06:05:20

網(wǎng)站安全網(wǎng)絡(luò)威脅網(wǎng)絡(luò)攻擊

2016-10-09 13:33:12

2020-11-16 07:28:53

驗(yàn)證碼

2020-12-29 05:33:03

Serverless驗(yàn)證碼架構(gòu)

2013-01-23 10:08:45

2011-11-02 12:43:33

2014-03-31 11:29:14

虛擬服務(wù)器安全性合規(guī)性
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)