《白帽子講web安全》讀書筆記

alberthao發表於2018-05-05

這篇是2018年讀書計劃裡面的一本書的讀書筆記。還好,基本上按計劃進行。

又是厚厚的一本書,為了不弄虛做假,只得變更計劃,這一次調整為讀前三章,安全世界觀,瀏覽器安全和xss。其它待用到時再專門深入學習。
吳翰清是本書作者,icon是一個刺字,圈內人稱道哥。曾供職於阿里,後創業,最後迴歸阿里。 更多關於作者的經歷可以參考這裡:
https://www.secpulse.com/archives/65276.html

1 安全世界觀

所有術的層面最後都回歸到道的層面,所以開篇的章節,作者從道講起。
這一部分需要思考的的第一個問題是:我們為什麼要研究web安全?
我心裡在想,和這個類似,區塊鏈安全需要我們關注嗎,為什麼?
第二個問題:白帽子的工作和黑帽子有何不同?我們要像黑帽子學習什麼?
第三個問題:安全的本質是什麼?
第四個問題:有沒有一勞永逸的安全方案?
第五個問題:請談一談你對安全三要素的理解。
第六個問題:請談一談安全評估做什麼?怎麼做?
第七個問題:白帽子在設計安全方案時,有哪些原則可以參考?它們分別應對或解決哪一方面的問題。
每一個問題都夠寫一篇小論文了。

2 瀏覽器安全

2.1 同源策略

同源策略限制來自不同源的document或指令碼對當前document或指令碼進行修改。 影響源的因素有協議、埠、域名。
script、img、iframe標籤卻可以跨域載入資源,實際上它們由瀏覽器發起了一次get請求,JavaScript不同於XMLhttprequest,不能讀寫返回的內容。
除了DOM,cookie,xmlhttprequest受同源策略限制,一些瀏覽器載入的第三方外掛也有各自的同源策略。

2.2 瀏覽器沙箱

瀏覽器沙箱主要是通過資源隔離,使得對瀏覽器所在的本機進行保護。但是現實中,也有人通過瀏覽器外掛漏洞來繞過。

2.3 惡意網址攔截

瀏覽器廠商和安全廠商合作,對惡意網址給使用者提醒。phishtank是一個免費提供惡意網址的機構,ev ssl是一種安全增強型證照。

2.4 瀏覽器新技術需要考慮的安全

使用者友好的功能需要關注,例如\和?的處理。擴充套件和外掛的安全。

3 XSS跨站指令碼攻擊

3.1 XSS概念和分類

前兩章基本是道的層面,這一章就開始更多關注術的層面。XSS英文是Cross Site Script,所謂的XSS攻擊是指黑客通過html注入,篡改了網頁,插入了惡意指令碼,從而在使用者瀏覽時控制使用者瀏覽器的一種攻擊<script>alert(CSS)</script>只是我們驗證是否有xss的一種辦法,而真正的payload會實現更多邪惡的功能。
xss傳統上分為反射型和儲存型,DOM型,DOM其實也是一種反射型。

3.2 XSS 攻擊

XSS payload

這一節先介紹了cookie劫持,然後列舉了通過構造get和post請求結合XSS來獲取qq郵箱郵件列表,XSS釣魚,識別使用者瀏覽器,識別使用者軟體,識別使用者曾經訪問過的網站,獲取使用者真實IP等場景。

XSS攻擊平臺

常見的平臺有Attack Api,BeEF,XSS-Proxy。還有書中沒提到的,餘弦的XSS'OR,每天可以測試一次攻擊。 工具平臺可以為我們演示XSS危害提供幫助。

XSS蠕蟲

書中提到了MySpace曾經的Samy蠕蟲。真正可怕的蠕蟲會悄無聲息的竊取使用者祕密。

XSS構造技巧

常見技巧有利用編碼規則、突破長度限制、利用base標籤、window.name。此外,不要忽視flash、一些貌似只能攻擊自己的XSS如何利用、JS框架安全問題。 XSS與各種編碼請看這裡: https://blog.csdn.net/abc_ii/article/details/16891689

3.3 XSS防禦

HttpOnly

通過設定cookie的httponly屬性,抵禦xss後的cookie劫持攻擊。但是它並沒有解決XSS防禦。

輸入檢查

輸入檢查主要是對特殊字元如<,>,'等進行過濾。網上有很多XSS filter。 但是xss filter有可能對語境理解不充分,發生漏報或者轉義了使用者資料。

輸出檢查

PHP和JS中都有HtmlEncode功能相關的函式。但這並不意味著就可以完全抵禦XSS。書中舉了一例,由於html parser優於Javascript Parser執行,還是會造成XSS。

正確防禦思路

這一節(書中3.3.4)列舉了各種可能的html輸出中,如何防禦,如何攻擊。 網上應該有不少cheatsheet,也可以搜尋XSS cheatsheet瞭解更多。

處理富文字

如果網頁中允許使用者提交自定義的html程式碼就要關注這一節。

防禦DOM based XSS

主要是在javascript輸出html時,看輸出是到內容或屬性,還是事件或指令碼。分別執行不同的encode。前者htmlencode,後者javascriptencode。

業務視角看XSS

儲存型高於反射型,有使用者互動地方都有風險,PageView高的地方重點關注。

4 實驗環境

1、一個瀏覽器
能夠除錯Javascript的瀏覽器都應該可以。
2、Javascript除錯工具
書中提到的有Firebug,Fiddler,IE8開發者工具。
3、JavaScript除錯環境(內附JS學習網站) http://lixiaolai.com/2016/07/31/makecs-simplest-js-dev-environment/

5 其它資源

線上java除錯工具
https://jsfiddle.net
BeeF
http://www.freebuf.com/sectool/4799.html
Attackapi框架
http://www.cnblogs.com/milantgh/p/3645166.html XSS cheatsheet
sec-wiki查詢XSS

6 後續學習

如果要深入XSS,對JS必須深入學習。
How To Become A Hacker
https://people.redhat.com/zaitcev/notes/hacker-howto.html

7 寫的不錯,贊助一下

enter image description here

相關文章