<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    淺談Web安全驗證碼

    VSole2018-01-02 21:32:36

    2018年春運即將拉開帷幕。春運又稱“年度全球最大規模的人口流動”,是一部“人民的斗爭史”,起初只是與黃牛斗智斗勇,后來為了整治黃牛12306不斷升級驗證碼,于是大家開始了與驗證碼斗智斗勇。那么這種驗證碼是否是必須的?且看小編對Web安全之驗證碼的解讀。

    為防止服務器端的資源被客戶端的計算機程序濫用或攻擊,服務器需要區分當前用戶是計算機還是人類,一般在網站的關鍵操作位置都會采用驗證碼技術來區分。圍繞驗證碼展開的攻防技術在Web安全中有著重要地位,本文將從驗證碼的工作原理出發,介紹驗證碼實現上容易產生的問題,并對其攻防技術現狀和未來做一個簡要介紹。 一、前言 全自動區分計算機和人類的圖靈測試(Completely Automated Public Turing test to tell Computers and Humans Apart,簡稱CAPTCHA),俗稱驗證碼,是一種區分用戶是計算機或人的全自動化程序。在CAPTCHA測試中,作為服務器端的計算機會自動生成一個問題由用戶來解答。這個問題可以由計算機生成并評判,但是必須只有人類才能解答。由于計算機無法解答CAPTCHA的問題,所以回答出問題的用戶就可以被認為是人類。 在以前的網絡訪問中,還不存在驗證碼的用法,但由于網絡更加深入地融合到人們的生產生活中,暴力猜測登陸,垃圾廣告貼等在網絡中泛濫,消耗了大量的服務器資源同時也可能威脅到服務器的安全,驗證碼作為一種實用高效技術被大量使用起來。 Web安全的攻擊與防護技術一直是互相促進的,驗證碼識別技術的不斷發展推動著驗證碼生成技術的提高。本文將從驗證碼技術的原理出發,介紹驗證碼容易出現的問題以及相關識別技術,以使讀者對驗證碼攻防技術有一個了解。 二、工作原理 常見的圖形驗證碼是與web中的會話相關聯的,在一個會話開始時,在需要使用驗證碼的地方會生成一個與當前會話相關的驗證碼,用戶識別出驗證碼后通過填寫表單將數據提交給服務器,服務器端會驗證此次會話中的驗證碼是否正確。具體來說,其工作流程如圖1所示:

    圖1 驗證碼技術工作原理 對用戶方來說,用戶訪問起始頁面,識別返回頁面中的驗證碼,在輸入驗證碼和其他信息后提交表單,在服務器處理后可查看到當前操作是否成功。 服務器在接收到用戶對初始頁面的請求后,會自動創建一個新的會話,同時生成驗證碼來關聯這個會話,并且生成用戶可見到的驗證碼圖片,最后這些頁面返回到用戶的瀏覽器上,用戶此時可看到完整的頁面;在接到用戶提交的表單請求時,服務器會比較用戶提交的驗證碼值并與之前存儲在此會話下的驗證碼值做比較,如果一致判斷驗證碼是正確,否則認為提交的驗證碼是錯誤的,可能是客戶端是計算機或者用戶識別錯誤。服務器端進行這些處理后將處理結果反饋給用戶。如果提交的驗證碼是正確的,則按照預定流程進行下一步驟,否則回到需要用戶輸入的那個界面上。 三、存在的問題 驗證碼作為區分人與機器的一道重要屏障,與之相關的對抗技術一直在WEB安全研究上有著重要意義。圖片驗證碼生成算法以及程序實現流程上都有可能帶來問題,容易被攻擊者突破。 1. 圖片驗證碼的生成可能存在如下問題 (1) 圖片驗證碼的字符空間小 如果選取的字符空間較小,則讓驗證碼識別變得相對簡單。字母數字組合的字符集比單純為數字的字符集效果要好。 (2) 圖片中的字符規則 字符進行變形,扭曲不利于程序的識別,而對人眼識別是無障礙的,但此方法對生成程序來說有一定的難度。 (3) 圖片中缺少干擾圖案 干擾圖案能有效增加驗證碼的識別難度,并且對生成程序來說代價小。 2. 在驗證碼的程序實現流程方面可能存在如下問題 (1) 驗證碼固定 一般地,用戶在開始訪問初始頁面時,瀏覽器會向服務器發起頁面請求,服務器此時創建會話,同時返回的頁面里會嵌入驗證碼圖片地址,瀏覽器在加載響應頁面后,會自動加載驗證碼圖片地址。服務器在接收到驗證碼圖片地址的請求時,會對當前會話生成一個對應的驗證碼并且返回驗證碼圖片。用戶此時根據就可根據驗證碼圖片信息填寫表單數據來進行后面的操作,這時,服務器如果檢驗出提交的驗證碼是錯誤的,服務器會返回頁面提示錯誤然后跳轉到初始頁面,因初始頁面內嵌了驗證碼圖片地址,瀏覽器再次自動刷新驗證碼頁面。 如果驗證碼輸入錯誤,會在上面的流程里自動刷新驗證碼,正常情況下,這個過程看起來是沒有問題的。但是,由于HTTP請求響應式的工作原理,使得攻擊者有可能控制驗證碼生成頁面請求不被觸發,使得在服務器上同一會話內,服務器端保存的此會話下的驗證碼一直有效。 基于此,服務器端的正確處理應該是在驗證碼檢驗失敗時,就需要設置此驗證碼失效,同時對生成的每一個驗證碼也需要設置有效期。 (2) 驗證碼的字符串值出現在返回的響應中 這是屬于程序編碼考慮不當導致,比如忘記注釋掉調試信息導致。驗證碼可能出現在響應包中的Cookie, URL, 頁面注釋,甚至驗證碼在展示的時候直接就是文本方式,這樣就完全失去了使用驗證碼的價值了。 (3) 驗證碼長度可指定 在頁面上存在參數可指定驗證碼的位數,這可簡化識別工作。此問題的出現也可能是調試的需要,并發布時忘記注釋掉相關代碼而導致。 四、對抗現狀 自驗證碼技術問世以來,其成為自動化程序運行的第一大敵人。在利益的驅動下,突破封鎖技術自然也會產生。一般來說,驗證碼的對抗技術有如下幾個方面: 1. 避免觸發驗證碼 驗證碼的引入會帶來用戶友好度的下降,增加驗證碼輸入以及人眼對驗證碼識別的可能錯誤等都會帶來不好的使用體驗。這對追求用戶體驗的網站來說,在沒遇到可疑行為時,其采取的策略是默認不開啟驗證碼功能,當觸發可疑行為識別規則時,才會出現驗證碼。基于此原理,對攻擊方來說,就是盡量避免觸發可能出現驗證碼的規則。一般可疑行為識別是通過檢查頻繁嘗試并且出錯這個行為來進行,基于此的對抗措施則是使用不同的IP來進行嘗試,或者等待足夠的時間再次嘗試,這樣讓目標網站程序認為這些嘗試都是正常的訪問請求,從而在自動化程序端連續作業時不會出現驗證碼而達到繞過的目的。 2. 驗證碼固定 從前面的驗證碼固定問題描述可看出,攻擊者可以在同一個會話下,在獲得第一個驗證碼后,后面不再主動觸發驗證碼生成頁面,并且一直使用第一個驗證碼就可循環進行后面的表單操作,從而繞過了驗證碼的屏障作用。 3. 驗證碼機器自動識別 計算機自動識別驗證碼,主要原理是通過一定的算法預先建立驗證碼范圍內的字體特征庫,再將要識別的驗證碼通過同樣的算法生成特征,與之前保存的特征庫進行比較,進而得到圖片驗證碼的值。 一般地,其識別過程有如下圖所示的處理流程: 圖2 驗證碼計算機識別過程 (1) 去噪處理 主要是去掉圖像里的所有干擾信息,比如背景的點,線等。 (2) 圖像二值化 圖像二值化就是將圖像上的像素點的灰度值設置為0或255,也就是將整個圖像呈現出黑白效果。圖像二值化主要是為了將圖像與空白區分開來,方便后續步驟的進行。 (3) 切片處理 圖片的切片處理是將每個字符所在區域分離成一個個的圖片,確保一個圖片內只有一個文字。 (4) 文字圖片標準化 對切片后的每個字符圖片,還需要進行變形修復處理,比如旋轉,縮放等操作盡量將每一個字符圖片都調整到標準格式,減小隨機度。 (5) 字符模板識別 在最后的字符識別階段,常用是通過模板對比的方法。模板的生成就是通過上述處理過程后,對給定圖片處理后把生成的特征保存下來,并且人工識別輸入其對應的字符。在用作識別階段時,就與保存的每個字符特征模板進行比較,從中找出最相近的一個字符來。 4. 人工分布式識別 機器自動識別圖片驗證碼,對簡單的情況能有較高的準確率,但對干擾多,變形復雜的圖片驗證碼,其準確率會很差。由于圖片驗證碼重要度增加,復雜的圖片驗證碼被大量使用,導致近年來出現了利用眾包力量實現的人工驗證碼識別平臺。 其工作原理圖下所示:

    圖3 人工分布式識別 自動化程序將要識別的驗證碼發送到打碼平臺,打碼平臺再將驗證碼發放給從事驗證碼識別工作的人員(俗稱打碼工作),在人工識別后再將值依次返回到自動化程序。由于是人直接參與了驗證碼的識別,此方法就讓驗證碼完全失去了屏障功能。 五、驗證碼未來可能的主要形式 隨著驗證碼攻防技術的對抗升級,驗證碼技術也出現了一些新的發展動向。 1. 從圖片驗證碼自身的發展來看,主要是圍繞增強人腦交互性來展開的,具體來說有如下幾個方向: (1) 增強干擾和字符變形 從驗證碼的機器識別可以看出來,增強干擾和字符變形能極大地提高識別難度。像下面的生成的圖片驗證碼,對人眼識別來說都存在著一些難度。 (2) 拓展字符空間 常見的圖片驗證碼都是數字或者字母,近年來出現了中文字符作為驗證碼,這樣字符空間就增大了很多。 如果字符空間足夠大,試圖通過制作字符模板庫方式來實現識別的難度就變得很大了。 (3) 增強與用戶的互動性 通過增加與用戶的互動也可增加難度,但因為這類互動都是通過問答題方式來實現,其題庫數量是否足夠以及是否具有足夠的隨機性則成為了關鍵所在。 如下圖所示的問答型驗證碼:

    2. 從驗證碼的信息傳遞途徑和方式來看,有如下幾個方式 (1) 增加信息傳遞途徑也 在原來只通過網頁來傳遞信息的基礎上增加了其他傳遞方式,比如手機短信等。對于使用手機短信驗證碼,需要確保其關聯的手機號不為攻擊者所控制,否則也將失去保護意義。因為通過在手機里安裝特定app軟件就可以獲得短信內容,這對于手機號碼攻擊者可控的情況下,驗證碼可輕松繞過;但如果其攻擊場景是賬號登陸類的,由于手機號碼不可控,則使得暴力猜測變得不可能實施。擴展驗證碼的傳遞途徑需要結合應用場景來使用,確保此途徑不容易被攻擊者獲得。 (2) 利用動態令牌進行一次一密 通過動態令牌實現的一次一密方式,就必須通過人工交互才能實現,但此方式也增加了使用成本,只適用于密級要求很高的場合。 (3) 語音方式 語音方式在當前網絡也有出現,但主要只是作為方便盲人使用的一個備用方案,但由于智能手機終端的廣泛普及,以后也有可能成為一個主要的驗證碼發展場景。 隨著技術的不斷發展,以后還會出現其他方式的驗證碼,但可以肯定的是基于人腦的思維特性來區別于程序的預設特性,至于以后會如何發展,還是讓我們拭目以待吧。 六、小結 本文從驗證碼概念、工作原理入手,介紹了當前驗證碼的攻防情況,并且簡要介紹了驗證碼的發展趨勢。 可以肯定的是,不管使用何種方式的驗證碼,都會影響用戶體驗,機器難以識別的驗證碼最后也會影響人眼的識別,驗證碼的設計者們需要在用戶體驗和安全性方面做一個折衷選擇。寄希望于通過驗證碼來作為對抗機器自動化行為的唯一途徑是不可取的,在識別自動化程序發起的遠程Web掃描,登陸猜測等方面,推薦架設WAF類的專業防護產品。目前,綠盟科技的WAF產品能對此類問題提供完整的解決方案,有效阻擋即將發生的安全事件。 來源:綠盟科技

    web技術驗證碼識別
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    淺談Web安全驗證碼
    2018-01-02 21:32:36
    2018年春運即將拉開帷幕。春運又稱“年度全球最大規模的人口流動”,是一部“人民的斗爭史”,起初只是與黃牛斗智斗勇,后來為了整治黃牛12306不斷升級驗證碼,于是大家開始了與驗證碼斗智斗勇。那么這種驗證碼是否是必須的?且看小編對Web安全之驗證碼的解讀。
    GitHUB安全搬運工
    2021-10-15 12:58:23
    Github干貨集合
    本文僅作為技術討論及分享,嚴禁用于任何非法用途。本文將介紹一個操作瀏覽器進行口令暴破的案例與驗證碼識別工具。Playwright:瀏覽器自動化工具Playwright 是一個強大的 Python 庫,僅用一個 API 即可自動執行 Chromium、Firefox、WebKit 等主流瀏覽器自動化操作,并同時支持以無頭模式、有頭模式運行。Playwright:滑動驗證碼案例生成登錄流程代碼安裝 playwright 后,運行下面命令進行錄制瀏覽器操作,并生成代碼:python -m playwright codegen
    在做安全測試的時候,隨著資產的增多,經常會遇到需要快速檢測大量網站后臺弱口令的問題。然而市面上并沒有一個比較好的解決方案,能夠支持對各種網站后臺的通用檢測。所以WebCrack就應運而生。工具簡介WebCrack是一款web后臺弱口令/萬能密碼批量爆破、檢測工具。不僅支持如discuz,織夢,phpmyadmin等主流CMS并且對于絕大多數小眾CMS甚至個人開發網站后臺都有效果。在工具中導入后臺地址即可進行自動化檢測。Recheck環節為了提高準確度,防止誤報。
    為了提高安全服務項目的檢測效率、規范性、全面性,Tide安全團隊結合在滲透測試行業的經驗和安全開發方面的積累,開發了一款自動化滲透測試工具。 該工具使用Golang開發為CS架構,集“資產探測-服務識別-爬蟲-被動監測-漏洞掃描-POC檢測-截屏-報告”于一體,適合甲方或乙方安服團隊對目標系統進行全面的安全檢測并輸出報告。 本文主要介紹一下該工具的框架及部分實現思路。
    在萬物互聯的數字時代,API承載著企業核心業務邏輯和敏感數據,在應用環境中變得越來越普遍。特別是在疫情常態化后,移動辦公、在線教育等線上應用蓬勃發展,API作為能夠支撐線上應用連接和數據傳輸重任的一種輕量化技術,受到國內外企業組織的青睞。
    滲透測試Tips
    2022-04-13 06:38:50
    知己知彼,百戰不殆1、如果提示缺少參數,如{msg:params error},可嘗使用字典模糊測試構造參數,進一步攻擊。
    限量版球鞋、演唱會門票、火車票、限量秒殺……這些搶購場景,為什么你總是搶不到?
    如果手工測試無果后再用代理手法掃描網站,必要的時候設置二級代理。什么站能掃什么站不能掃,心里一定要有點 b 數!淺藍的滲透測試導圖以及小工具這里有一個更加詳細的導圖,可以做一個大致的方向參考,跟著方向逐一測試, 期間也可以鞏固基礎。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类