1. 程式人生 > >web安全工程師學習路線

web安全工程師學習路線

下面的學習路線是來自: secWiKi


前言

一直想學習滲透測試工程師,但找不到比較適合我的學習路線,以前零碎的學習不僅效果奇差又堅持不下去。最近突然想起這個web安全工程師的學習路線,感覺還挺合適我這種難以堅持又不會規劃的人,而且學習的內容也符合滲透測試工程師的要求,所以目前就按照這個路線學學看。雖然這條路已經有好多人都知道了,但網上並沒有完整的學習筆記,可能是大佬們都沒有上傳到網上吧,我也就獻醜一波。第一次寫部落格筆記估計不會很理想,還請給予在下一些建議,共同討論,共同進步!

   	我在按照這個路線學習的同時目前的輔助教材是《Metasploit滲透測試魔鬼訓練營》,用於學習滲透測試的流程

輔助材料僅供個人參考

如果是第一次學習這方面的知識,看不懂書上的內容也沒關係,要記住書不是看一遍就會的,需要一遍又一遍的閱讀與測試。讀第一遍目的是留個印象,快速通讀;讀第二遍才是跟著書中的步驟操作;讀第三遍時書中的大部分內容已經熟練了。

	當然這種方法比較耗時,適用於那些過於難以理解的書本,僅供參考哈!

正文

該學習路線共29周,也就是7個月左右。看似時間比較久,但按照路線上的小規劃學習,不要去想後面的東西,一步一步終將匯成大江。

  • 2周
  1. Web安全相關概念
    熟悉基本概念(SQL注入、上傳、XSS、CSRF、一句話木馬等)。
    1.通過關鍵字(SQL注入、上傳、XSS、CSRF、一句話木馬等)進行Google/SecWiki;
    2.閱讀《精通指令碼黑客》,雖然很舊也有錯誤,但是入門還是可以的;
    3.看一些滲透筆記/視訊,瞭解滲透實戰的整個過程,可以Google(滲透筆記、滲透過程、入侵過程等);

  • 3周
  1. 熟悉滲透相關工具
    熟悉AWVS、sqlmap、Burp、nessus、chopper、nmap、Appscan等相關工具的使用。
    1.瞭解該類工具的用途和使用場景,先用軟體名字Google/SecWiki;
    2.下載無後們版的這些軟體進行安裝;
    3.學習並進行使用,具體教材可以在SecWiki上搜索,例如:Brup的教程、sqlmap;
    4.待常用的這幾個軟體都學會了可以安裝音速啟動做一個滲透工具箱;

  • 5周
  1. 滲透實戰操作
    掌握滲透的整個階段並能夠獨立滲透小型站點。
    1.網上找滲透視訊看並思考其中的思路和原理,關鍵字(滲透、SQL注入視訊、檔案上傳入侵、資料庫備份、dedecms漏洞利用等等);
    2.自己找站點/搭建測試環境進行測試,記住請隱藏好你自己;
    3.思考滲透主要分為幾個階段,每個階段需要做那些工作,例如這個:PTES滲透測試執行標準;
    4.研究SQL注入的種類、注入原理、手動注入技巧;
    5.研究檔案上傳的原理,如何進行截斷、雙重字尾欺騙(IIS、PHP)、解析漏洞利用(IIS、Nignix、Apache)等,參照:上傳攻擊框架;
    6.研究XSS形成的原理和種類,具體學習方法可以Google/SecWiki,可以參考:XSS;
    7.研究Windows/Linux提權的方法和具體使用,可以參考:提權;
    8.可以參考: 開源滲透測試脆弱系統;

  • 1周
  1. 關注安全圈動態
    關注安全圈的最新漏洞、安全事件與技術文章。
    1.通過SecWiki瀏覽每日的安全技術文章/事件;
    2.通過Weibo/twitter關注安全圈的從業人員(遇到大牛的關注或者好友果斷關注),天天抽時間刷一下;
    3.通過feedly/鮮果訂閱國內外安全技術部落格(不要僅限於國內,平時多注意積累),沒有訂閱源的可以看一下SecWiki的聚合欄目;
    4.養成習慣,每天主動提交安全技術文章連結到SecWiki進行積澱;
    5.多關注下最新漏洞列表,推薦幾個:exploit-db、CVE中文庫、Wooyun等,遇到公開的漏洞都去實踐下。
    6.關注國內國際上的安全會議的議題或者錄影,推薦SecWiki-Conference。

  • 3周
  1. 熟悉Windows/Kali Linux
    學習Windows/Kali Linux基本命令、常用工具;
    1.熟悉Windows下的常用的cmd命令,例如:ipconfig,nslookup,tracert,net,tasklist,taskkill等;
    2.熟悉Linux下的常用命令,例如:ifconfig,ls,cp,mv,vi,wget,service,sudo等;
    3.熟悉Kali Linux系統下的常用工具,可以參考SecWiki,《Web Penetration Testing with Kali Linux》、《Hacking with Kali》等;
    4.熟悉metasploit工具,可以參考SecWiki、《Metasploit滲透測試指南》。

  • 3周
  1. 伺服器安全配置
    學習伺服器環境配置,並能通過思考發現配置存在的安全問題。
    1.Windows2003/2008環境下的IIS配置,特別注意配置安全和執行許可權,可以參考:SecWiki-配置;
    2.Linux環境下的LAMP的安全配置,主要考慮執行許可權、跨目錄、資料夾許可權等,可以參考:SecWiki-配置;
    3.遠端系統加固,限制使用者名稱和口令登陸,通過iptables限制埠;
    4.配置軟體Waf加強系統安全,在伺服器配置mod_security等系統,參見SecWiki-ModSecurity;
    5.通過Nessus軟體對配置環境進行安全檢測,發現未知安全威脅。

  • 4周
  1. 指令碼程式設計學習
    選擇指令碼語言Perl/Python/PHP/Go/Java中的一種,對常用庫進行程式設計學習。
    1.搭建開發環境和選擇IDE,PHP環境推薦Wamp和XAMPP,IDE強烈推薦Sublime,一些Sublime的技巧:SecWiki-Sublime;
    2.Python程式設計學習,學習內容包含:語法、正則、檔案、網路、多執行緒等常用庫,推薦《Python核心程式設計》,不要看完;
    3.用Python編寫漏洞的exp,然後寫一個簡單的網路爬蟲,可參見SecWiki-爬蟲、視訊;
    4.PHP基本語法學習並書寫一個簡單的部落格系統,參見《PHP與MySQL程式設計(第4版)》、視訊;
    5.熟悉MVC架構,並試著學習一個PHP框架或者Python框架(可選);
    6.瞭解Bootstrap的佈局或者CSS,可以參考:SecWiki-Bootstrap;

  • 3周
  1. 原始碼審計與漏洞分析
    能獨立分析指令碼原始碼程式並發現安全問題。
    1.熟悉原始碼審計的動態和靜態方法,並知道如何去分析程式,參見SecWiki-審計;
    2.從Wooyun上尋找開源程式的漏洞進行分析並試著自己分析;
    3.瞭解Web漏洞的形成原因,然後通過關鍵字進行查詢分析,參見SecWiki-程式碼審計、高階PHP應用程式漏洞稽核技術;
    4.研究Web漏洞形成原理和如何從原始碼層面避免該類漏洞,並整理成checklist。

  • 5周
  1. 安全體系設計與開發
    能建立自己的安全體系,並能提出一些安全建議或者系統架構。
    1.開發一些實用的安全小工具並開源,體現個人實力;
    2.建立自己的安全體系,對公司安全有自己的一些認識和見解;
    3.提出或者加入大型安全系統的架構或者開發;
    4.看自己發展咯~