1. 程式人生 > >WEB安全入門(轉)

WEB安全入門(轉)

一. 首先你得了解Web

Web分為好幾層,一圖勝千言:

事實是這樣的:如果你不瞭解這些研究物件是不可能搞好安全研究的。
這樣看來,Web有八層(如果把瀏覽器也算進去,就九層啦,九陽神功……)!!!每層都有幾十種主流元件!!!這該怎麼辦?
別急,一法通則萬法通,這是橫向的層,縱向就是資料流啦!搞定好資料流:從橫向的層,從上到下→從下到上,認真看看這些資料在每個層是怎麼個處理的。

資料流中,有個關鍵的是HTTP協議,從上到下→從下到上的頭尾兩端(即請求響應),搞通!難嗎?《HTTP權威指南》720頁!!!坑爹,好難!!!

怎麼辦?

橫向那麼複雜、縱向資料流的HTTP協議就720頁的書!!!放棄好了……

不,千萬別這樣。



給你點信心是:《HTTP權威指南》這本書我壓根沒看過。但是通過百度/Google一些入門的HTTP協議,我做了大概瞭解,然後Chrome瀏覽器F12實際看看“Network”標籤裡的HTTP請求響應,不出幾小時,就大概知道HTTP協議這玩意了。(這是快速研究的精髓啊)

搞明白HTTP協議後,你就會明白安全術語的“輸入輸出”。

黑客通過輸入提交“特殊資料”,特殊資料在資料流的每個層處理,如果某個層沒處理好,在輸出的時候,就會出現相應層的安全問題。

精彩舉例:

1. 如果在作業系統層上沒處理好,比如Linux的Bash環境把“特殊資料”當做指令執行時,就產生了OS命令執行的安全問題,這段“特殊資料”可能長得如下這般:
; rm -rf /;

2. 如果在儲存層的資料庫中沒處理好,資料庫的SQL解析引擎把這個“特殊資料”當做指令執行時,就產生SQL注入這樣的安全問題,這段“特殊資料”可能長得如下這般:
' union select user, pwd, 1, 2, 3, 4 from users--

3. 如果在Web容器層如nginx中沒處理好,nginx把“特殊資料”當做指令執行時,可能會產生遠端溢位、DoS等各種安全問題,這段“特殊資料”可能長得如下這般:
%c0.%c0./%c0.%c0./%c0.%c0./%c0.%c0./%20

4. 如果在Web開發框架或Web應用層中沒處理好,把“特殊資料”當做指令執行時,可能會產生遠端命令執行的安全問題,這段“特殊資料”可能長得如下這般:
eval($_REQUEST['x']);


5. 如果在Web前端層中沒處理好,瀏覽器的JS引擎把“特殊資料”當做指令執行時,可能會產生XSS跨站指令碼的安全問題,這段“特殊資料”可能長得如下這般:
'"><script>alert(/cos is my hero./)</script>

...


怎樣,刺激吧?搞懂這些,就算入門啦。

  • 記好:一切的安全問題都體現在“輸入輸出”上,一切的安全問題都存在於“資料流”的整個過程中。
  • 記好:“資料流”、“輸入輸出”這兩個關鍵點。

你好像悟到了點什麼,咱們繼續……

前面說了:如果你不瞭解這些研究物件是不可能搞好安全研究的。

拿我XSS來說,曾經有人問我,我回答的一個:在學習XSS前我應該學習什麼?你可與參考下。

假如我曾經要不是比較熟JavaScript、ActionScript、HTML/CSS的話,我估計我要研究好XSS是很困難的,我熟悉這些語言剛開始的出發點是想“創造”,我做了好些Flash動畫、做了好些網站、包括自己從後端到前端獨立實現過一個部落格系統,為了解決好前端在各瀏覽器的相容問題(當時是IE6如日中天的時候),我啃了好幾本書,如《CSS網站佈局實錄》、《JavaScript DOM程式設計藝術》、《AJAX Hacks》、Flash從6版本以來到CS2的各類書籍我都多少看過,也實戰過,這一切都是在大學前三年搞定的。

大學第四年衝刺Web安全(長期以來有黑客情懷),大四下學期進入知道創宇(剛創業起步),然後到了現在,一晃在知道創宇六年。

說到這,很清晰啦:如果你不瞭解這些研究物件是不可能搞好安全研究的。

咱們繼續:)

二. 黑客兵器譜

新人入門總在尋找好工具來提高效率,Web安全這塊我之前放出了我的“兵器譜”,在這:我的滲透利器(會不斷抽時間更新)。

工欲善其事必先利其器嘛,而且新人用了好兵器會更有成就感的。

切記:這些兵器,你不僅要知其然還得知其所以然,別墮落了哦。

三. 明白“精於一而悟道”的道理