軟體專業的學生想學習滲透測試網路安全,找了教程卻眼花繚亂,有學長推薦過一些東西 dvwa……kali?

接題目,awvs之類,可是學長也是愛好滲透而已,之前用過啊d之類的東西,卻感覺滲透不應該是簡單的用啊d掃描,搭建了dwva卻只會用很少的功能,kali里的工具也只是按教程走了流程而已,googlehack了簡單的站,一些安全論壇也經常瀏覽,但是始終感覺在滲透線外面,所以想找個師傅 或者領路人,系統的指點一下我,如果能詳細的指點當然更好啦,我看了很多這樣的回答,大神很多,所以懇請大家認真回答,如果我哪裡不對,請嚴肅的批評我,然後最好幫我點一下前面的燈塔,謝謝大家了!!


記得今年(2017年)先知白帽大會上,豬豬俠做了個分享,議題是我的白帽學習路線,附上PPT的鏈接https://github.com/ring04h/papers/blob/master/%E6%88%91%E7%9A%84%E7%99%BD%E5%B8%BD%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF--20170325.pdf

真實的反映出來我們這種野路子一路走來的心酸歷程。

一開始我也是個工具黨,日站就是一把梭,拿起啊D就是艹。天天用自己機器掃埠搞爆破抓肉雞,殊不知自己也成了別人的肉雞。

也記得當時折騰到凌晨5點總算是搞下了學校的網站(相信各位黑闊都是先拿學校網站開刀的吧)

那時候的感覺,就跟打遊戲開掛一樣。開始很爽,到後面越來越沒意思了。最後就成了機械性的重複動作了。

然後,就想知道,工具為什麼可以呢?啊D是怎麼注入的呢?為啥這麼上傳就可以?xss又是什麼呢?

然後就開始接觸程序,了解程序內部工作原理。抓包或是攔截請求去分析。

同時也是培養了自己的安全方面的意識,看到一段代碼下意識的會去想這代碼哪裡有可能出鍋。

安全要入門,還是得深入的去吃透基礎的東西。

比如sql注入,為什麼會有注入,怎麼防止注入。過濾了引號空格還能注么,過濾了關鍵詞呢?

再比如文件上傳,限定文件夾靠譜么?黑名單妥當么?

這都是基礎性的東西。這些東西都是可以在代碼中一窺究竟的。

其實說實話,滲透很多時候都是在猜,猜他是不是這麼弄的。猜他用的是不是有漏洞的組件。然後再一點一點嘗試。

有時候跟朋友一起聊天說滲透,真心覺得滲透就是用自己已知面去懟對方的黑盒子。自己所知道的深度廣度決定了對對方系統整體的了解情況

所以,其實可以看出來,點好前置技能是十分重要的。

所以其實我不是很建議你拿著工具去搞。工具只是工具。是人的一種思維的具現化,只是一個固定的模式。只有人的頭腦,才是靈活多變的。才是有無窮可能的。

嗯,接下來扔點乾貨吧。

比方說,你要搞Web滲透。那肯定得對各種Web系統架構有個了解吧

一個網站是怎麼運行起來的?

什麼是LAMP?什麼是Web中間件?資料庫又是幹什麼的?除了PHP還有什麼能寫網站?

MySQL和SQL Server有什麼區別?

Linux各種髮型版(Debian、CentOS、Ubuntu、IBM AIX、Solaris)什麼區別

Windows Server各個版本(2000、2003、2008、2012、2016)之間有什麼區別

MySQL在Windows和在Linux下都有什麼不同?

等等等等。

從這些就能大概看出來要搞Web滲透的技能棧。

首先是Linux Server以及Windows Server,最起碼要到熟練的地步。買本《鳥哥的Linux私房菜 基礎篇》啃完,各大雲上買個Linux的VPS把玩個一兩年,不需要專門的的去學,自然就能到熟練的地步

然後Windows Server,自己虛擬機里按個,沒事就瞎搞搞。基礎操作方面巨硬爸爸已經儘可能簡化了,作為學習者我們只要了解怎麼玩就行了,網上很多教程的。

Linux和Windows Server的一些區別,自己慢慢用就能體會出來。

然後資料庫。最起碼SQL的CURD操作得知道吧W3Cschool上刷一遍SQL教程,很快就能掌握。然後搞本《SQL注入攻擊與防禦》看完,大部分注入應該都可以手工搞定了。

然後是前端,JS是重中之重,不要求會寫,但求能看懂。

然後是各類環境架構,各個組件之間是如何協同工作的,這個自己動手搭一遍就知道怎麼回事。

然後是程序,不要求所有語言門門精通,至少有一門能達到隨心所欲的地步,其他的能看懂即可。個人推薦是Python和PHP,PHP來寫有漏洞的環境,Python來寫工具攻擊,這樣學習會更快,也會對漏洞了解的更為清晰。目前Web方面用到的語言跑不出主流的那幾個

最後是邏輯漏洞,窮舉爆破、越權訪問、流程跳過/亂序、未授權訪問,信息泄露等等。舉個例子,找回密碼一般邏輯是先輸入手機/郵箱,然後會發送一個驗證碼,如果是流程跳過的話,就可以不用填寫驗證碼直接進入到修改這個步驟(根據URL或是其他的判斷,例如參數step=3為最終修改密碼頁)。如果是窮舉的話,就是填寫手機驗證碼這個地方沒有錯誤次數限制。如果是信息泄露的話,就是驗證碼可能是前端驗證,抓包就可看到到底發送的驗證碼是什麼(以前搞滲透遇到過這麼寫的,真心是佩服的)

到這步可以說你已經兩腳踏進門了。剩下的就是增長見識。去看一些別人的滲透思路,想想為什麼要這麼搞。出了這條路是不是還有其他的路。可以去烏雲鏡像站,那裡的的思路應該夠學很久了

這時候應該也接觸到內網滲透了。首先就要對於網路結構要有清晰的認識,建議下個思科模擬器(Cisco Packet Tracer)或是華三模擬器(H3C網路設備模擬器官方免費下載 - 服務 - 新華三集團-H3C)去練練,了解網路是怎麼回事,二層/三層網路分別指的是什麼,OSI七層模型在網路中的作用,IP/掩碼/網關都是幹什麼的,什麼是路由,數據包是怎麼尋徑的等等

還有協議,老實講到目前我也只是對HTTP協議了解的比較多,其他的協議基本都是隨用隨查。

有興趣的話可以吧《TCP/IP詳解》三本啃一下(PS:三本下來還是挺厚的),自己寫程序去實現裡面的一些東西,會對整個網路有更深入的了解

接下來就是內網滲透,信息收集很重要,掌握多少信息決定了你在這個內網中能走多遠。

還有主機滲透,常見埠所對應的的服務是什麼,服務的banner如何識別,確定服務之後,這個服務可能有什麼漏洞?例如1433弱口令,redis的寫公鑰,445的RCE(MS08-067/MS17-010)等等

然後就是各大CMS及開源軟體的漏洞,跟著前人的腳步去看看這個漏洞怎麼產生的,自己根據思路來寫一個驗證(poc)程序,然後就是做一個list記錄起來,把相關的利用工具(exploit)也收集起來

還有各種軟體的漏洞。同樣,研究原理,吃透原理,寫出工具

同時你也可以自己去下載一些開源的代碼做審計,自己去發現漏洞。推薦使用法師的源碼審計系統(開源世界:Seay源代碼審計系統2.0開源 後期更多強大功能期待共同開發)

到這裡你手裡應該有不少漏洞利用工具了,這時候就可以嘗試自己去寫屬於自己的掃描器了。把之前的各種exploit串起來,以你自己的思路去不斷地捶打優化。

我始終覺得一個優秀的滲透測試工程師一定是一個優秀的開發者,優秀的運維,優秀的DBA,優秀的網路工程師

滲透吃的是經驗飯,見得越多經驗就越豐富。也就更容易劍走偏鋒,從一個刁鑽的角度出發,往往會有意想不到的收穫。

另外,滲透指的不僅僅是網站,針對客戶端程序,針對手機APP,針對各類物聯網設備,都可以看做是滲透。根據自己喜好自由發展即可

其實歸結到底,最重要的技能是牛逼的學習能力及快速的信息的查找篩選能力。

有興趣是好事,滲透這條路很酷,也很苦。共勉。


給你推薦套我們自己出的視頻課程吧,希望能幫到你。

第二季:鏈接: http://pan.baidu.com/s/1geUdvRd 密碼:quu7

第三季:鏈接: http://pan.baidu.com/s/1dFgsJNr 密碼:1c5j


我覺得應該先看看今年出台的新網路安全法(非抖機靈)

然後再去學python,kali之類的


參考「南慕蓉北喬峰」。

慕容復的牛逼在於後天努力和「斗轉星移」,後者本質上是對各門各派武功路數的熟悉,14歲時的金剛指就已超越自以為天下第一的黃眉僧;

喬峰的牛逼在於天賦異稟和「降龍十八掌」,豐富的實戰經驗,用一套太祖長拳就可以血洗聚賢庄。

上面兩種,無論哪種都足以做到一流,但兩者對比終究還是後者要 ,勉強不來的。


我是開發人員,現在的能力也局限於開發領域。

我贊同本答題下infinite回答的內容——先了解開發,再考慮信息安全。

這兩者有點像遊戲里進階職業的味道,做了開發人員,才能在將來選擇做一名安全人員。

如果你開發都一知半解的話……做信息安全人員很可能連最基本的要求都做不到。


其實……編寫代碼實現某一項功能其實並不困難,其難點在於這些代碼能經受住各種情況的考驗。

以Java為例,需要生成隨機數,你認真翻翻Java API Doc就會發現Java自帶的隨機數生成就有兩種:一種是普通隨機數,產生隨機數所使用的seed往往是可預測的;另一種是安全隨機數,其生成隨機數的機制更為複雜,相對也更為安全,具體可以直接翻看文檔。

// 普通隨機數
Random notSaftyRandomGenerator = new Random();

// 安全隨機數
SecureRandom saftyRandomGenerator = new SecureRandom();

作為開發人員,在關鍵的需求點上,對安全要求極高的安全點上,你要是通過普通的方法生成隨機數……等產品交付使用,該漏洞被抓住……可能就是重大的開發事故了。


還有一個例子就是SQL注入,考慮到功能實現的自由度,很多Java的ORM框架都提供了佔位符方便將數據插入其中形成真實的SQL語句再送到資料庫執行。

如果編寫惡意的SQL語句,清空現有的數據表都是小意思的……數據泄露,被非法用戶拿到那才是更加可怕的事情。

作為開發人員,要認真對待自己編寫的代碼,要防範可能被惡意利用的情況,這往往要求開發人員也要不斷學習不斷進步。光靠框架來防止意外的發生……有時可行,有時不可行。


你看,信息安全人員如果不會開發,就不知道什麼地方可能會有漏洞,也無從進行安全測試……

行文簡短,也有很多不足,如果對你有所啟發,再好不過了。


做滲透測試涉及到的幾個層次的安全。

應用安全,中間價安全,系統安全。在這幾個安全之外,需要熟悉計算機網路,腳本編程等。

當然,隨著現在分工的明確化,尤其是大企業當中,這些領域都是分工負責的。

但既然是做滲透測試,應用安全應該熟悉,剩下的需要有所涉獵。

比如對網站做滲透測試,可能需web安全的知識拿到shell,然後通過系統安全的知識去提權,中途可能會依靠計算機網路的知識去實現內外網的穿越。

而應用安全,本身離不開應用開發。只有知道開發思路,才能去找到攻擊的點。比如xxe漏洞,你需要知道什麼情景下會傳輸xml數據,為什麼要用xml而不是json,只有明白這個,你在做滲透測試的時候才會下意識的對應的點挖掘。

再比如,遇到一些不開源的cms,通過各種途徑拿到了源碼,這個時候需要代碼審計,如果你沒有一定的開發功底,是不是只能眼睜睜望著了。

不要企圖開發都不懂就做安全,註定是會被淘汰的這樣。如果你想學習web安全,先把web開發學好。想學安卓安全,先把java和安卓開發學好。當你有開發的基礎之後,安全是一件水到渠成的事情。

如果你一開始就接觸dvwa,想去挖漏洞,最後耽誤的是自己。

當有了基礎之後,可以開始接觸安全,包括看一些安全書籍,玩一些靶場平台,做一些ctf題。記住,滲透測試實戰經驗非常重要,這個時候要邊積累邊刷src。

最後,祝學習之路順暢。沒事少刷知乎,其他人的回答讓我懷疑自己走錯了地方。


最近在教女朋友入門web,寫了個路線和稍微具體的過程,先佔坑,寫完發。(溜


前面很多人已經提供了非常棒的資源,我這裡給你提供些建議,希望你在一開始就能避開彎路,堅持下來

培養興趣

當你開始想學安全的時候,你心裡有股雞血,要做一番事情,當一個很厲害的黑客,畢業後拿很高的工資

但當你真正開始弄的時候,你會發現事實上並沒有那麼簡單,尤其是當你一頭扎進某一個安全領域缺發現遲遲難以入門的時候

你會發現,無論聽了多少課,看了很多書,還是在真正實戰/模擬實驗的時候很有挫敗感,這個時候很難堅持下來。

我覺得你應該先注重興趣的培養,而不是一開始就一頭扎進某個安全分支裡面。

你看到的很多大佬都說自己一開始很水,就會盜個號,黑個站。但我覺得恰恰是這種簡單粗暴的「快感」培養了他們濃厚的興趣,讓他們能堅持下來。

所以,無論你選擇參加比賽,或者是發論文,或者是在網上尋找獵物,請在一開始就找一個最容易讓自己獲得成就感的東西,然後你可以沿著這條線不斷深入,再結合其他人推薦的一些答案研究,學習。

基礎能力

其次,很多的安全分支確實需要一些開發經驗,尤其是在挖漏洞的時候。

如果你當過WEB前端程序員,你就知道前端程序員通用的代碼習慣,也能更快的發現潛在的問題。

安全不是憑空產生的,是先有產品,先有代碼,先有使用邏輯,先有應用需求,之後才有安全的需求。

所以你做安全,其實就是找一些這幫做產品的程序員沒考慮到的情況,然後實施攻擊。因此你做過這一行的話肯定要快的多

所以,確實應該先學基礎。

你有了些基礎之後,看人家的解釋和分析會快的多,不然你看分析都看不懂,到那時候就會懷疑自己當初的選擇是不是正確了~~~~

最後的一些細節

最後,現在安全行業已經比較細分了,建議你千萬不要貪大,老老實實選一個方向鑽研透徹,不愁無用武之地,一個系統你只要從任何一個點攻破都算你成功。

現階段的話針對學生的CTF比賽比較火爆,很多大廠商都願意投錢辦比賽,獎金很豐盛,而且比賽拿到不錯成績的話實習/就業都非常方便,我覺得是一個不錯的激勵機制,你可以考慮。

希望你能堅持下來,不要半途而廢!


幾篇文章給你參考

移動APP滲透測試方案 展示5個方面總結3種常見漏洞

滲透測試的8個步驟 展現一次完整的滲透測試過程及思路

實戰微信銀行滲透測試 展示安全評估思路、工具及經驗

某運營商滲透測試實戰 展示滲透測試工具及業務系統中的常見問題

下載 | Kali Linux2017.2新版發布 增加了一大批新網路滲透測試工具

滲透測試人員入門 如何配置Kali Linux直接用於工作

滲透測試工程師的17個常用工具 還有專家告訴你如何成為滲透測試人員

你不要覺得滲透測試隨便拿個工具就可以做了 要了解業務還需要給出解決方案

如何通過WIFI滲透企業內網?


題外一句,首先你是有興趣。心靈雞湯一堆什麼莫扎特貝多芬什麼的勤奮不勤奮的,其實他們只是想玩音樂而已。

滲透也是。只要不是三分鐘熱度。

路線什麼的前排高票在web上已經說的很全好了。但是有一些遺漏。

1.可以去多打打CTF,看看writeup。南京郵電大學攻防平台CTF作為入門挺好的。在沒有實戰環境下ctf是不錯的學習方法。

2.沒看到彙編,可能因為這個比較難。如果你真的有眼界的話強烈推薦《0day安全(第二版)》不然連溢出漏洞利用都看不懂,只能做腳本小子,想要有深度必須的去弄弄的。不知道為什麼軟體分析完全被人遺忘了。

3.必須腦洞大。這是藝術,不是找茬技巧。


經常訪問一個網站就可以了,GitHub:)


思路要靈活,看你想做什麼,比如打ctf,還是刷src。建議你找一款適合自己的腦圖,再進行深入學習。ps如果是山東的,可以線下隨時交流。


說實話網路安全這東西天賦真的很重要,教程之類的一般都是指點你入門而已,可以參考進去21世紀一來所有上榜的黑客基本都是憑藉興趣以及過人的天賦自學成才的


我覺的先找本適合的權威的書邊看邊實踐


看來你是想非常深入這個領域了,學破壞必然從建設開始學起,不然你都不知道那根是支撐柱怎麼爆破。你把專業課先深入一下,很多時候邏輯思維能力比知識點更重要


謝瑤,泡屁股中,無聊來回答一波,現在的滲透測試主要學的web安全,其他東西就只是工具的用法了。web當然不是啊d,dvwa這種東西,《web安全權威指南》作為第一本書吧,書上的知識更系統,下一步幹嘛你或許就知道了


先任選一漏,搞通一個。不要一知半解,不留疑問。


滲透在我看來,專科生-會找漏洞,懂理論,實戰經驗少,基本都是測試環境多

野路子-實戰經驗多,思路廣,可以從細微入手,比如從一個小小的信息泄露,一步步的去獲取許可權,直到獲取整個網站的數據和許可權,然後內網,專科生一般不敢搞,野路子接觸的越多也是越不敢搞,涉及黑色產業鏈的搞的多

比如你盯上了一個企業,知道員工的郵箱,在找到公網伺服器的郵箱站點,你就去爆破啊,不行就社工啊,在不行就想辦法搞那個員工啊,從員工入手,員工手裡肯定有企業的東西吧,可能有VPN和企業伺服器的賬號密碼,可能有內部文檔,可能有內部代碼,搞下來,實在不行給他種馬,等到公司你在搞內網,如果郵箱爆破成功,也可能得到以上的東西,甚至更大的許可權,如果是為了勒索,通過員工電腦再去搞企業內部,就夠了,如果是為了數據,一個員工是入口,一個是網站漏洞,一個是第三方託管平台等等…

以上內容為假設

滲透嘛,看思路啦,還有就是漏洞你得能發現,能利用,沒有現成的工具,或者發現通用的,那就自己寫poc

有授權,那就是滲透測試,沒有,那就是黑客入侵行為啦

不多說了,就當我吹了會牛b吧


斗膽邀請了幾個大神,目前想到的就這麼多,請見諒


推薦閱讀:

作為一個白帽子,你挖到第一個漏洞的經歷是怎樣的?

TAG:網路安全 | 黑客Hacker | 滲透測試 | 白帽黑客WhiteHat | KaliLinux |