在學習 XSS 前應該學習什麼?

在這幾天看了餘弦的《Web前端黑客技術揭秘》。但是其中的代碼全都看不懂,所以來知乎請教各位應該在學習XSS前我應該有什麼基礎


可惜了,我沒下決心認真照顧好入門的同學。第一次寫書也造成書的跳躍性有些誇張,還望吃力的同學諒解,因為我肯定這本書有足夠的含金量。

只要你有認真看,尤其是我在第二章說了,基礎很關鍵,我不會去教科書般的介紹基礎,其實第一章與第二章是全書的基礎。如果理解不好,註定會是半吊子。

但是第二章篇幅很大,要全部看明白又需要很多真正的基礎,這些基礎就是:javascript, html, dom, css, actionscript等。尤其是javascript。我在第二章內容中實際上是有推薦一些快速入門javascript和dom的書的,比如《javascript dom編程藝術》,可能你們沒注意。至於actionscript,這是flash安全必掌握的,flash安全屬於前端安全一個非常重要分支,只是很多人都是半吊子,沒真正去玩,書里我感覺已經介紹夠詳細了,還扔出個google flash xss 0day,雖然是雞肋,不過很經典。

我給大家一個建議:這本書既然都這樣了,又有足夠含金量,那大家多baidu/google去擴展學習所涉及到的基礎,多跟進實戰,多融會貫通,大不了加我Q,我也許還能抽空指點一二。我保證你會受益匪淺。

最後,希望大家能獨立找到屬於自己的一條方法論。


以下是我學習xss時的一些紀錄共享給你,你可以用瀏覽器打開下面鏈接研究page參數後面的值是如何觸發xss的,

00x1 這個最簡單什麼也沒過濾
http://xsst.sinaapp.com/example/1-1.php?page=%3Cimg%20src=x

00x2 兩種觸發xss方法
No1
1.打開http://xsst.sinaapp.com/example/1-2.php?page=2 以確保惡意 cookie的所在域
2.先執行 javascript:alert(document.cookie="x=&alert(0)&") 設置一個含有跨站代碼的COOKIE
3.打開http://xsst.sinaapp.com/example/1-2.php?page=2 即可觸發跨站

No2
http://xsst.sinaapp.com/example/1-2.php?page=22;alert(0);

0x3 &之間的xss
http://xsst.sinaapp.com/example/test1-2.php?page=111%27%2balert(0)%2balert(2));//
http://xsst.sinaapp.com/example/test1-2-2.php?page=16666%27);%0aeval(alert(0));alert(1);//%27
http://xsst.sinaapp.com/example/test1-2-3.php?page=1%27;%0ajQuery.globalEval(%27a%27%2b%27lert%27%2b%27(document.cookie)%27);//%27;
html源代碼中載入了jquery 調用jquery裡面的jQuery.globalEval執行


00x4 基於Dom的反射型XSS


http://xsst.sinaapp.com/example/1-3.htm?url=javascript:alert(0)
Document型的xss通常比較隱蔽 html源代碼終不中有時候也不保存提交的惡意代碼javascript:alert(0)


上面講的《白帽子講web安全一書》也好,其他的web安全書也好,無論前後端,我認為都不會和你講HTML的基本知識,但都需要到HTML和JS的技術,所以要看web安全書的話,其實還是需要掌握一些web基礎的...
建議到:w3school 在線教程 學習....


HTML 教程 | 菜鳥教程

CSS 教程 | 菜鳥教程

JavaScript 教程


web安全方面有兩本書都很值得推薦,一本是餘弦老師的《Web前端黑客技術揭秘》 還一本是道哥的《白帽子講web安全》。
但如果題主只是對於xss這一個漏洞十分感興趣,或者出於各種各樣的目的需要深入學習,其實絕大多數網路上博客、包括一些開源的工具,時效性較差,給初學者帶來很多困擾和不必要的坑。
我僅以xss這個漏洞的名稱來舉例:本身這個漏洞的名字叫 corss site scripting 簡寫為css,但是之所以叫xss是因為css與web瀏覽器中解析的層疊樣式表(css)重名,故取名xss。然而,cross site scripting 直譯過來叫做跨站腳本攻擊,其實這個名字本身也存在誤導性。如今的web前端開發者應該都清楚,在現代瀏覽器的同源策略保護下,瀏覽器中的跨域行為受到了限制,並且其實從xss這個漏洞的攻擊原理上講,「跨站」這兩個字其實真的沒有什麼必要。
出於工作關係,我們團隊的工作涉及到很多金額支付方面的業務,前段時間一直在做web方面的安全問題調研,產出了一些博客和開源工具,如果有興趣,你可以看下我的博客作為一個初學階段的掃盲。
博客傳送門:
XSS漏洞的原理
xss掃描工具的代碼和使用文檔 在博客里有。
還有什麼問題也可以直接回復我進行溝通。


當然是各種前端規範。

這些是根基:

  • ECMAScript 2015 Language Specification ECMAScript
  • http://developers.whatwg.org/ HTML5 spec
  • http://dev.w3.org/html5/markup/ HTML5 reference
  • http://platform.html5.org/ 瀏覽器技術嚮導

比較新的:

  • Content Security Policy Level 2
  • Payment Request API
  • WebUSB API

一切都在不斷變化,太多的技巧都只是細枝末葉,就像 Flash XSS 的奇技淫巧的一樣,很快就消逝。

跟隨潮流,不如創造潮流。


不需要太多基礎,可以自己構造一個html看看。
&alert(1)&這樣。


html,javascript


&alert(1)&


其實是html,javascript;各種編碼知識;瀏覽器對各種編碼的解析順序以及解析的基本知識。


& alert("XSS")&


先了解具體的各個類型和實現手法,像延伸到客戶端的UXSS:Android安全之WebViewUXSS漏洞 - 李大師的文章 - 知乎專欄


會HTML js,剛畢業接觸了web安全這塊很想學習,但是不知道從哪裡入手,希望大神指點一下。


沒有html 和 js 基礎看餘弦大大的書,真的很難。學好js ,xss入門自然而然就懂了。後面更猥瑣的方法就可以參考學習大牛們寫的書了。


學網路技術的前提是必須是要掌握一門編程!


白帽子講web安全這本書挺不錯,通俗易懂易上手


推薦閱讀:

怎樣在知乎上寫出高質量的好答案?
初三了 應該學古箏嗎?
你所知道的著作等身的人?
為什麼在知乎大部分人選擇替別人打工?
19:00 - 24:00 睡覺,然後起床學習一天是否有效率?

TAG:學習 | 網路安全 | 黑客Hacker | XSS | 電腦小白 |