• 熱門專題

圖解HTTP讀書筆記(十)

作者:  發布日期:2016-11-01 19:52:58
Tag標簽:筆記  
  • 圖解HTTP讀書筆記(十)

    Web的攻擊技術

    HTTP協議本身并不存在安全性問題,因此協議本身幾乎不會成為攻擊對象。應用HTTP協議的服務器和客戶端,以及運行在服務器上的Web應用資源才是攻擊目標。

    在客戶端即可篡改請求

    在Web應用中,從瀏覽器那接收到的HTTP請求的全部內容,都可以在客戶端自由的變更、篡改。

    在HTTP請求報文內加載攻擊代碼,就能發起對Web應用的攻擊。通過URL查詢字段或表單、HTTP首部,Cookie等途徑把攻擊代碼傳入,若這時Web應用存在安全漏洞,那內部信息就會遭到竊取,或被攻擊者拿到權限管理。

    image

    針對Web應用的攻擊模式

    對Web應用的攻擊模式有以下兩種。

    主動攻擊 被動攻擊
    以服務器為目標的主動攻擊

    主動攻擊:是指攻擊者通過直接訪問Web應用,把攻擊代碼傳入的攻擊模式。

    由于該模式是直接針對服務器上的資源進行攻擊,因此攻擊者需要能夠訪問到那些資源。

    主動攻擊模式里具有代表性的攻擊是SQL注入攻擊和OS命令注入攻擊。

    image

    以服務器為目標的被動攻擊

    被動攻擊:是指利用圈套策略執行攻擊代碼的攻擊模式。在被動攻擊過程中,攻擊者不直接對目標Web應用訪問發起攻擊。

    被動攻擊通常的攻擊模式:
    - 步驟1

    攻擊者誘使用戶觸發已設置好的陷阱,而陷阱會啟動發送已嵌入攻擊的HTTP請求。
    

    步驟2

    當用戶不知不覺中招后,用戶的瀏覽器或郵件客戶端就會觸發這個陷阱。

    步驟3

    中招后的用戶瀏覽器會把含有攻擊代碼的HTTP請求發送給作為攻擊目標的Web應用,運行攻擊代碼。

    步驟4

    執行完攻擊代碼,存在安全漏洞的Web應用會成為攻擊者的跳板,可能會導致用戶所持的Cookie等個人信息被竊取,登錄狀態中用戶權限遭惡意濫用等后果。

    image

    被動攻擊模式中具有代表性的攻擊是跨站腳本攻擊跨站點請求偽造


    實施Web應用的安全對策

    實施Web應用的安全對策大致分為兩部分

    客戶端驗證 服務端驗證
    輸入值驗證 輸出值轉義

    image

    客戶端驗證是為了盡早的識別輸入錯誤,Web端的輸入值驗證通常是檢查是否是符合業務邏輯,或檢查字符編碼等預防對策。輸出轉義是很關鍵的安全策略,當輸出值轉義不完全時,會因觸發攻擊者傳入的攻擊代碼,而給輸出對象帶來損害。


    跨站腳本攻擊

    跨站腳本攻擊(Cross-Site Scripting,XSS)是指利用網站漏洞從用戶那里惡意盜取信息。

    動態創建的HTML部分有可能隱藏著安全漏洞。就這樣,攻擊者編寫腳本設下陷阱,用戶在自己的瀏覽器上運行時,一不小心就會受到被動攻擊。

    跨站腳本攻擊可能造成的影響

    利用虛假輸入表單騙取用戶個人信息。 利用腳本竊取用戶的Cookie值,被害者在不知情的情況下,幫助攻擊者發送惡意請求。 顯示偽造的文章或圖片。
    SQL注入攻擊

    SQL注入(SQL Injection):是指針對Web應用使用的數據庫,通過運行非法的SQL而產生的攻擊。

    該安全隱患有可能引發極大的威脅,有時會直接導致個人信息及機密信息的泄露。

    SQL注入攻擊有可能會造成以下等影響。

    非法查看或篡改數據庫內的數據 規避認證 執行和數據庫服務器關聯的程序等

    例如:
    正確的SQL語句:

    select * from table_name where name='jack'and age>20;

    SQL注入語句:(將剛才的name=’jack’改為name=’jack–’,語句如下:)

    select * from table_name where name='jack'--' age>20;

    SQL語句中的–之后全視為注釋,即后面的過濾條件會自動的忽略。這樣會對數據庫的增刪改查有很大影響。


    OS命令注入攻擊

    OS命令注入攻擊(OS Command Injection)是指通過Web應用,執行非法的操作系統達到攻擊的目的。只要在能調用Shell函數的地方就有存在被攻擊的風險。

    可以從Web應用中通過Shell來調用操作系統命令。倘若調用Shell時存在疏漏,就可以執行插入的非法OS命令。

    OS命令注入攻擊可以向Shell發送命令,讓Window或Linux操作系統的命令行啟動程序。也就是說,通過OS注入攻擊可執行OS上安裝著的各種程序。


    HTTP首部注入攻擊

    HTTP首部注入攻擊(HTTP Header Injection):是指攻擊者通過在響應首部字段內插入換行,添加任意響應首部或主體的一種攻擊。屬于被動式攻擊模式。

    HTTP首部注入攻擊可能會造成以下影響:
    - 設置任何的Cookie
    - 重定向至任意URL
    - 顯示任意的主體(HTTP響應式截斷攻擊)

    通過%0D%0A(表示HTTP報文中換行符),在HTTP請求頭中的一個字段中,如Location:xxx…/?index=1%0D%0ASet-Cookie:123456789。
    因為%0D%0A表示換行,這樣就會在HTTP請求頭中額外的再加上一個頭信息。這樣攻擊者就可以偽裝成用戶。


    HTTP響應式截斷攻擊

    HTTP響應式截斷攻擊是用在HTTP首部注入的一中攻擊。

    如果我們在響應頭中的頭部字段中將兩個%0d%0A%0D%0A并排插入字符串后發送。這樣就換2行,就可作為HTTP首部與主體部分分隔所需的空行了。這樣就可以偽造主體,達到攻擊的目的。

    利用這個攻擊,已觸發陷阱的瀏覽器會顯示偽造的Web頁面,再讓用戶輸入自己的信息,達到和跨站腳本攻擊相同的效果。


    郵箱首部注入攻擊

    郵箱首部注入(Mail Header Injextion):是指Web應用中的郵件發送功能,攻擊者通過向郵件首部To或Subject內任意添加非法內容發起的攻擊。

    利用存在安全漏洞的Web網站,可對任意郵件地址發送廣告郵件或病毒郵件。

    %0D%0A在郵件報文中代表換行符。與HTTP首部注入和HTTP響應式截斷相似。

    eg:
    在發送郵件的報文首部這樣

    xxxxx%0D%0ABcc:user@example.com

    就會換行,對Bcc郵件地址追加發送

    eg:
    如果這樣

    xxxxxx%0D%0A%0D%0ATest Message

    就相當于換2行,就有可能篡改郵件文本內容并發送。

    再以相同的方法,就有可能改寫To和Subject等任意郵件首部,或者向文本添加附件等動作


    目錄遍歷攻擊

    目錄遍歷(Directory Traversal):攻擊是指對本無意公開的文件目錄,通過非法截斷其目錄路徑后,達成訪問目的的一種攻擊。

    這種攻擊有時也稱為路徑遍歷(Path Traversal)攻擊。

    目錄遍歷詳解


    遠程文件包含漏洞

    遠程文件包含漏洞(Remote File Inclusion):是指部分腳本內容需要從其他文件讀入時,攻擊者利用指定外部服務器的URL充當依賴文件,讓腳本讀取之后,就可以運行任意腳本攻擊。

    這主要是PHP存在的安全漏洞,對PHP的include或require來說,這是一種可通過設定,指定外部服務器的UR作為文件名的功能。但該功能太危險,PHP5.2.0之后默認設定此功能無效。


    因設置或設計上的缺陷引發的安全漏洞

    強制瀏覽

    強制瀏覽(Forced Browsing)是指,從安置在Web服務器的公開目錄下的文件中,瀏覽那些原本非自愿公開的文件。

    強制瀏覽有可能會造成以下一些影響。

    泄露顧客的個人信息等重要情報 泄露原本需要具有訪問權限的用戶才可查閱的信息內容 泄露未外連到外界的文件

    強制瀏覽的幾種形式:

    文件目錄一覽

    通過指定目錄名稱,即可在文件一覽中看到顯示的文件名稱。

    eg: http://www.example.com/log/

    推測文件名及目錄名

    文件名稱容易被推測。

    http://www.example.com/entry/entry_081202.log
    備份文件
    http://www.example.com/cgi-bin/entry.cgi(原始文件)
    
    http://www.example.com/cgi-bin/entry.cgi~(備份文件)
    
    http://www.wxample.com/cgi-bin/entry.bak(備份文件)
    

    由編輯軟件自動生成的備份文件無執行權限,有可能直接以源代碼形式顯示。

    經認證才可顯示的文件

    直接通過URL訪問原本必須經過認證才能在web頁面上使用的文件(HTML文件,圖片,PDF等文檔,CSS及其他數據)。


    不正確的錯誤消息處理

    不正確的錯誤消息處理(Error Handing Vulnerability)的安全漏洞是指,Web應用的錯誤信息內包含對攻擊者有用的信息。

    與Web應用有關的主要錯誤信息:

    Web應用拋出的錯誤消息 數據庫等系統拋出的錯誤信息

    Web應用不必在用戶的瀏覽畫面上展示詳細的錯誤信息。對攻擊者來說,詳細的錯誤信息可能給他們攻擊作為提示。


    開放重定向

    開放重定向(Open Redirect)是一種對指定的任意URL作重定向跳轉的功能。

    而于此功能相關聯的安全漏洞是指,假如指定的重定向URL到某個具有惡意的Web網站,那么用戶就會被誘導至那個Web網站。

    eg:

    這是一個URL發生重定向跳轉的正常請求

    http://example.com/?redirect=http://tricorder.jp

    但,如果攻擊者知道,redirect后面的連接換成設置好的陷阱Web網站連接。如:

    http://example.com/?redirect=http://hackr.jp

    這樣就會指向hackr.jp。

    如果可信度高的Web網站,開放重定向功能,則很可能被攻擊者選中并用來作為釣魚攻擊的跳板。


    因會話管理疏忽引發的安全漏洞

    會話管理是用來管理用戶狀態的必備功能,但是如果在會話管理上有所疏忽,就會導致用戶的認證狀態被竊取等后果。

    會話劫持

    會話劫持(Session Hijack):是指攻擊者通過某種手段拿到了用戶的會話ID,并非法使用此會話ID偽裝成用戶,達到攻擊的目的。

    下面列舉了幾種攻擊者可獲得會話ID的途徑:
    - 通過非正規的生成方法推測會話ID
    - 通過竊聽或XSS攻擊盜取會話ID
    - 通過會話固定攻擊(Session Fixation)強行獲取會話ID

    image

    會話固定攻擊

    會話固定攻擊(Session Fixation):強制用戶使用直指定的會話ID,屬于被動攻擊。

    image

    深入淺出Session攻擊方式之一固定會話ID

    跨站點請求偽造

    跨站點請求偽造(Cross-Site Request Forgeries,CSRF)攻擊是指攻擊者通過設置好的陷阱,強制對已完成認證的用戶進行非預期的個人信息或設定信息等某些狀態更新,屬于被動攻擊。

    跨站點請求偽造可能會造成以下影響:
    - 利用已通過認證的用戶權限更新設定信息等
    - 利用已通過認證的用戶權限購買商品
    - 利用已通過認證的用戶權限在留言板上發表言論

    image


    其他安全漏洞

    密碼破解

    密碼破解攻擊(Password Cracking)即算出密碼,突破認證。

    密碼破解的2種手段
    - 通過網絡進行密碼試錯
    - 對加密密碼進行破解

    通過網絡進行密碼試錯

    主要有2種方式:
    - 窮舉法
    - 字典攻擊

    窮舉法

    窮舉法又稱為暴力破解法,是指對所有密鑰集合構成密鑰空間,進行窮舉。

    如:銀行密碼,000000-999999中的數字逐一進行產生嘗試,就可以試出真實密碼。(當然,只能嘗試3次)

    字典攻擊

    字典攻擊是指利用事先收集好的候選密碼(經過各種組合方式后存入字典),枚舉字典中的密碼,嘗試通過認證的一種攻擊手法。

    如:有些人喜歡用生日作為密碼,可以將生日日期數值話,0101-1231保存為字典,進行嘗試。

    字典攻擊與窮舉法相比,需要嘗試的候選密碼較少,攻擊耗費的時間較短;當然字典中如果沒有正確密碼,就無法破解,但是窮舉法必定會找到一個正確的密碼


    對已加密密碼的破解

    Web應用在保存密碼時,一般不會直接以明文的方式保存,通過散列做處理或salt(加鹽)處理。如果想獲取密碼,就需要解密成明文形式。

    從加密過的數據中導入明文通常有以下幾種方法:

    通過窮舉法·字典攻擊進行類推 彩虹表 拿到密鑰 加密算法的漏洞

    通過窮舉法·字典攻擊進行類推

    如:破解MD5值。通過對大量的字符串進行MD5算法處理,然后一一匹配是否相等。

    彩虹表
    彩虹表:是由明文密碼及與之對應的散列值構成的一張數據表,是一種事先制作龐大的彩虹表,可在窮舉法·字典攻擊等實際破解過程中縮短消耗時間的技巧。

    image

    拿到密鑰
    拿到密鑰,破解密碼。

    加密算法的漏洞
    考慮算法漏洞,利用漏洞嘗試解密。(困難太大,不易成功)

    點擊劫持

    點擊劫持(Click jacking):是指利用透明的按鈕或鏈接做成陷阱,覆蓋在Web頁面上。然后誘使用戶在不知情的情況下,點擊按鈕,訪問鏈接。這種行為又稱為界面偽裝(UIRedressing)。

    Dos攻擊

    Dos攻擊(Denial of Service attack):是一種讓運行中的服務呈停止狀態的攻擊。有時也叫做服務停止攻擊或拒絕服務攻擊。

    Dos攻擊的兩種攻擊方式:
    - 集中利用訪問請求造成資源過載,資源用盡的同時,實際上服務也就呈停止狀態。
    - 通過攻擊安全漏洞使服務頭停止。

    其中,集中利用訪問請求的Dos攻擊,單純來講就是發送大量的合法請求。服務器很難分辨何為正常請求,何為攻擊請求,因此很難防止Dos攻擊。

    多臺計算機發起的Dos攻擊稱為DDos攻擊(Distributed Denial of Service attack)

    DDos攻擊通常利用那些感染病毒的計算機作為攻擊者的攻擊跳板。

    后門程序

    后門程序(Backdoor):是指開發設置的隱藏入口,可不按不正常步驟使用受限功能。利用后門程序就能使用原本受限制的功能。

    通常的后門程序分為以下3中類型:
    - 開發階段作為Debug調用的后門程序
    - 開發者為了自身利益置入的后門程序
    - 攻擊者通過某種方法設置的后門程序

    可通過監聽進程和通信的狀態發現被植入的后門程序。但設定在Web應用中的后門程序,由于和正常使用時區別不大,通常很難發現。

延伸閱讀:

About IT165 - 廣告服務 - 隱私聲明 - 版權申明 - 免責條款 - 網站地圖 - 網友投稿 - 聯系方式
本站內容來自于互聯網,僅供用于網絡技術學習,學習中請遵循相關法律法規
香港最快开奖现场直播结果