1. 程式人生 > >小白入坑 Web 滲透測試必備指南

小白入坑 Web 滲透測試必備指南

640.gif?wxfrom=5&wx_lazy=1

本文來自作者肖志華 在 GitChat 上分享「Web 滲透測試入坑必備指南」,閱讀原文」檢視交流實錄

文末高能

編輯 | 黑石

小白如何快速入門

由於本人技術性受限制,可能部分內容顯得不那麼清晰,如有疑問請讀者圈聯絡我。再者,內容不會完全講清楚,因為本身話題的原因,部分會一筆帶過。

小白該如何踏入 Web 安全這個坑呢?我的經歷是,興趣所在。我是野路子,全靠興趣來自學。

現 Web 安全如果要講入門,要求並不高,兩三天就能入門,而我也僅在入門級別。

我接觸這個比較早,最初是在10年還是09年來接觸到一份網傳 Web 滲透課,後沉迷於此。

期間玩的第一個靶機是 dedecms5.7 最新 sql 注射漏洞利用,當時並不懂什麼技術性的東西。然後一直沒怎麼學過,學習資源有限也就停了。

安全問題都體現在輸入輸出的問題上,能夠分析資料流就有跡可循了。先學會用工具,工具報什麼漏洞你就應該學著去百度這個漏洞,瞭解並且復現它。

在復現的過程中,勢必會遇到很多以前從未遇到的問題,這時候就要學著用谷歌去解決問題。你能遇到的問題,別人也許也遇到了,並且做了記載。

向記錄學習過程中的問題並解決的博主致敬!

Web 知識本身就非常豐富,覆蓋範圍也非常廣泛:

  • 從瀏覽器到伺服器、資料庫;

  • 從 HTML、JavaScript 和 CSS 到 PHP、Java、ASP(.net);

  • 從頁面載入到 DOM 渲染;

  • 從靜態頁面到 MVC;

  • 從 URL 協議到 HTTP 協議。

我相信大多數人如果沒有前端的經驗,想入這個坑,先學前端就已經要崩了,但是並不需要一次性學這麼多。

瞭解基本攻擊型別,再去復現它,不斷學習,不斷進步,在疑惑中解決問題,在解決問題中成長並積累經驗,這就是我告訴大家的方法,無捷徑可走。

請務必實戰,不實戰,單理論的話,容我說一句放屁!再牛的前端,不關注安全技術,也能倒在前端 Xss 攻擊上。

Web 安全高手都是實戰練出來的,漏洞喂出來的。切莫想快速入門。快速如果定義在三個月,每天12小時用來研究 Web 安全,我估計也夠入門了。

安全圈特別浮躁,很難有一個靜心的交流環境,無數交流環境都是被髮表情混水坑死的。所幸有 Gitbook 這樣技術氛圍豐厚的社群,很實在。

摸漏洞摸久了,經驗自然也就豐富了,前些天我挖了 Csdn 一波儲存性XSS,危害是劫持任意使用者登陸會話,已經上報並修復。

出於原則不能公開漏洞詳情,留個連結做證明吧。http://my.csdn.net/rNma0y  訪問此條連結即可。

最後一句話做總結:“整就牛!”

Nmap 的使用

Nmap 作為一款埠掃描軟體,可以說是目前最強大的埠掃描工具,更是很多安全從業者所必備的工具。

Nmap的安裝教程請自行安裝,有 Windows 系統的也有 Unix 以及 Mac。

Nmap的掃描方式有很多,包括 TCP Syn TCPACK 掃描等,使用也比較簡單,僅僅需要幾個引數。掃描指定IP開放的埠:

nmap -sS -p 1-20000 -v 220.176.172.178

表示使用半開掃描,系統很少會儲存日誌。掃描C段主機:

nmap -sP 220.176.172.178/24

0?wx_fmt=png

這裡給出的結果是C段存在256個主機,方便我們後期對目標進行C段滲透。指定埠掃描 :

nmap -p 80,8080,22,445 220.176.172.178

指定埠掃描和半開結果類似,故不貼圖。掃描主機作業系統:

nmap -o 220.176.172.178

掃描全部埠:

nmap -v -A 220.176.172.178

0?wx_fmt=png

這裡可以看到初步就已經判斷出來了 23埠和8888埠都是使用tcp協議。後面他會自行進行Syn的掃描,結果較慢,故不在等待。

0?wx_fmt=png

這是全埠掃描得出的結果,但是要注意的地方是,他只是預設的1000個高危埠掃描,若要檢測全部埠,還需要加入-P-這個引數才行。

Namp 的命令很多,我這裡只是列舉了常用的幾個命令,需要檢視更多命令的請百度 namp 的官網進行命令手冊翻閱。

Safe3

Safe3 作為一個國產的漏洞掃描工具,和 Appscan 來做比較還是有些不足。雖有不足,但依然無法阻止眾多安全從業者的使用。我用 safe3 第一個印象就是覺得,快。

在 Windows 平臺下,開啟速度和掃描速度是非常之快的。

0?wx_fmt=png

這就是 safe3 的全面貌,中文介面,做使用者的友好性十分的強。操作也比較傻瓜的,填入掃描的網站地址後,選擇需要掃的漏洞就行。

0?wx_fmt=png

由圖可見,掃描結果顯示的是sql注入的漏洞,但是safe3這款工具誤報性個人覺得是相當的高,筆者也很少使用,只是有時候拿來掃個後臺地址而已。

Sqlmap

qlmap 作為一款強勢的 sql 注入攻擊工具,其功能性之強是其他 sql 注入工具所無法比擬的。如果要說缺陷,那就是眾多的引數以及英文介面。

sqlmap 是一款非常強大的開源 sql 自動化注入工具,可以用來檢測和利用sql注入漏洞。它由 python 語言開發而成,因此執行需要安裝 python 環境。

我這裡是 KaliLinux2.0 系統,已經集成了 sqlmap,所以 Windows 平臺的朋友需要安裝 Python 環境才能執行。檢測注入點是否可用:

這裡需要用到引數:-u
-u:指定注入點URL

0?wx_fmt=png

這裡是在進行注入測試了,如果存在注入,那麼應該返回該網站的應用程式詳:

0?wx_fmt=png

這裡返回了伺服器系統2008 ,web 容器為 IIS7.5,指令碼語言是 asp 的,資料庫為 SQLserver 2005 版本。

1. 列出該資料庫中的所有資料庫名稱

引數: —dbs

0?wx_fmt=png

0?wx_fmt=png

上圖所顯示的就是我們在輸入了 —dbs 引數後,sqlmap 列出的所有資料庫,也叫做爆庫。

由於我 Kali 下開的 sqlmap 太多了,我又找不到那個命令視窗,就拿個新的網站來做接下來的例子。

2. 列出當前程式所在的資料庫

引數:—current-db

0?wx_fmt=png

圖中已經列出了當前應用程式所使用的資料庫是“vps415”。列出指定資料庫的所有表。

sqlmap -u “http://www.hkmsedu.com/class.php?id=121“ -D vps415 —tables

—tables 引數便是用來獲取資料庫表,-D引數為指定的資料庫,結果如下:

0?wx_fmt=png

3.讀取指定表中的資料

sqlmap -u “http://www.hkmsedu.com/class.php?id=121“ -D vps415 -T book —columns

引數為:—columns

結果如下:

0?wx_fmt=png

4. 讀取指定欄位及內容

0?wx_fmt=png

引數為:-C 指定欄位名稱,-T指定表名,-D指定資料庫名,—dump 為儲存資料。

Sqlmap 會把資料儲存在資料夾下,已cvs檔案字尾。

0?wx_fmt=png

到此,就已經完成了用 sqlmap 進行 sql 注入的一個完整過程,sqlmap 引數還有很多,如需深入瞭解,請自行查閱官方命令手冊。

APPscan

APPscan 的介面如下,很簡潔

0?wx_fmt=png

進入配置嚮導介面,如下所示。

0?wx_fmt=png

選擇 WEB 掃描,同時他也可以掃描 Web Services,我們選一個 Web 站點進行掃描。

0?wx_fmt=png

然後一路回車即可。掃描專家建議就是一個建議程式,可開可不開。掃描過程如下:

0?wx_fmt=png

APPScan 的介面非常簡單,左上角是基於 URL 的爬行引數,左下角儀表盤是總的安全報告。又側則是風險詳情資訊。下面便是掃描結果,可以看到這個站已經存在 SQL 盲注以及 SQL 注入等網站安全問題。

0?wx_fmt=png

旁邊可執行一些手動語句的測試來驗證漏洞是否存在。以上漏洞可一個一個的去手動復現,到此,AppScan 就已經完成了一次自動化的掃描過程。

Appscan 和 WVS 類似,不過是英文介面,所以我選了 AppScan 來做例項,並不是 WVS 不及 Appscan。

重點來嘍,作為一名滲透測試人員,Burpsuite 工具可以說是在眾多工具中位列榜首可是神器呢,基本以後的安全測試之路都需要用這款工具去操作。所以學好 Burpsuite 的使用是非常重要的。

Burpsuite

有兩個版本,一個是免費版,一個是Pro(Professional)版,相比只有一個功能差距,免費版不帶掃描功能,Pro版則有掃描功能,但是,作為一個優秀的安全工具,Pro版則是太貴,我記得正版需要 2000 來塊人民幣(買不起),所以就自然有了破解版,我手中這款 1.7.11就是Pro破解版(羞恥)。

0?wx_fmt=png

首先,介面如上,功能模組包括 taeget、proxy、spider、Scaneer、intuder、Repeater 等模組。

由於1.7.11版本字型設計有些許問題,所以下面用1.58版本展示。

首先,選入“Options”模組,進入“Display” Display 模組,找到第二欄,“Http Message Display”,選擇字型為“微軟雅黑”,改這個設定的原因是,後面的 HTTP 請求訊息如果中文可能會亂碼。

0?wx_fmt=png

然後,進入“proxy”,遂“options”,第一欄,設定你的代理IP地址,因為他本質就是個瀏覽器操作後截獲資料進行分析,需要用代理來。

具體代理資訊可以轉到瀏覽器代理 IP 設定的方法。我這裡以 Edge 為例。

設定-高階設定-代理設定-開啟代理設定即可。如下圖:

0?wx_fmt=png

這個代理設定要和 burp 上的設定一樣才能抓到HTTP響應哦~

接下來,我們看 intercpt 功能,也就是最基礎的功能,抓取當前頁面的http請求。

0?wx_fmt=png

如果以上設定沒有問題了,那麼你應該會成功訪問該目標地址,我這裡測試的是“gitbook.cn”。

訪問的同時,我點選了 intercept is 模組  Is off Is on 分別關,開兩種狀態。我這裡選擇了on,那麼這個頁面的 HTTP 請求將被顯示到 burp 中的這個模組下。

0?wx_fmt=png

上面就是顯示的內容了,可以看出上面資訊呢?請求來自http://gitbook.cn:80,開放了80埠,IP地址為[123.59.80.114.]。

請求是GET的,協議是 http1.1 而不是 http2.0,http狀態碼是200,表示返回成功。請求頁面是 http://gitbook.cn/。

下面較為重要的資訊就是 cookie 等登陸資訊。通過對截獲的http資訊,一般就能看出一些安全問題。下面用例項+抓包請求資訊來介紹,我經常用到的 intruder 模組使用。

Intruder,字面解釋為入侵者,解釋完美的詮釋了這個模組是多麼的爆炸。案例詮釋 Burp 的爆炸功能。

我的測試目標是一所高校,拿到所在的域名之後,首先進行了掃描器的自動化掃描,並且我自己也開始進行手動測試,從該高校的官網,爬到了一處OA系統,OA系統為自主開發,並不是什麼市面上的A8之類。

0?wx_fmt=png

訪問到這個頁面的時候,我的第一想法是,應該可以成功滲透。

因為無驗證碼,無許可權控制,這樣也就提供了爆破的資訊,爆破也就恰恰是我所要講的 burp 中的 intruder 模組功能之一。

隨便輸入賬號密碼後,我們來看看網頁訪問請求。

0?wx_fmt=png

可以看到,截獲到的 http 請求頁面如上,aspx(Asp、net)的指令碼語言。

0?wx_fmt=png

賬號和密碼ID分別都是 6666,明文傳輸。我就很奇怪,為什麼要很多涉及到登陸的網頁,不肯做一點點加密?

哪怕是 base64 編碼後再傳入也好啊。但事實就是這樣,明文傳輸。

0?wx_fmt=png

我們右鍵,選擇 Ctrl+R,傳送到 Repeater 模組來分析登陸響應。點選左上角 GO 即可。

0?wx_fmt=png

在 params 模組下,可以更改你的輸入引數,用於測試不同的引數會返回什麼內容,但是需要每次修改後都點選 Go,用於測試。

0?wx_fmt=png

如上圖,我修改了 txtuserld 為 admin password 保持了 6666 不變 點選 GO 後的結果。一串亂七八糟的,待會我們再提。

回到 intercept 模組下,我們選擇 Ctrl+I,傳送到 intruder 模組下,進行猜解使用者名稱和密碼。

0?wx_fmt=png

上圖所示,positions 模組下顯示具體引數,標黃的(用黃色字型顏色顯示出來的)都是變數引數,我們猜解使用者名稱和密碼則需要指定一些引數。

右邊的“clear”,則是清除所有引數,清除後會去掉所有變數(顏色),選中你需要的引數,然後選擇“Add”就可以指定該引數為變數。

我指定了使用者名稱作為變數引數,其餘不變。意味著 txtuserld:admin   txtpassword:123456  其中 userld 中的 admin 引數為變數。

有的讀者可能奇怪,為什麼我這裡要設定使用者名稱為變數呢。

因為考慮到我的測試目標是 OA 系統,OA 系統為多人辦公系統,線上人數幾百人。使用者名稱不止一個 admin,如果選擇 admin,可能會出錯。

所以我的思路是爆破他的賬號,所以我選中了 admin 做變數,而不是爆破他的密碼。相比之下去選擇一批賬號進行爆破,成功率遠遠比一個賬號成功率高了太多。

也要結合實際環境來測試,比如網站後臺,只有一個 admin 管理員賬號的情況下,顯然我這種情況是不合適的。

0?wx_fmt=png

變數設定完畢後,選擇 payloads,來進行字典的配置,payload Sets 就是攻擊型別,有多重變數的情況下,可以選擇。

比如賬號和密碼都為變數,如果測試一個字典則不顯得那麼機智,需要字典在兩個變數之間相互測試,就用到這個功能模組,這裡我們不做測試,遂跳過,保持預設就好。

在字典裝好後,在這個模組的旁邊有個options模組,這裡用來更改類似於執行緒的引數。

在第二欄有個 Request Engine 引數,這裡第一欄是 Number of threads 預設是5。

這個意思是,執行緒。預設5執行緒進行攻擊,這個更改需要根據網站的配置和字典的數量,如果網站配置好,請往上加,如果不好,跑一跑就會跑壞,那麼就預設。

0?wx_fmt=png

我設定的執行緒為50,設定完了後,就可以點選左上角的 intruder,選擇第一個了。

0?wx_fmt=png

開始進行爆破,我這裡匯入的是弱賬號 top500,通過幾秒鐘的碰撞後, length 的返回數字頭中,包含了 2910-2973. 唯獨出現了一個“liujuan”的 ID 返回了 3391 數字頭。

這個賬號有點可疑,我們放到前面所講的 Ctrl+R 中來分析一下。

0?wx_fmt=png

更改 uid 後,點選 Go,返回了 http 資訊,如上圖,基本可以判斷這個賬號就是正確的賬號,已經成功爆破出來,為了驗證猜想,我們使用該ID進入網頁。

0?wx_fmt=png

如上圖,測試已經成功,burpsuite 就是這麼暴力的一個安全測試工具,這只是其中幾個模組,真正玩的轉的人,很少。

個人覺得能玩轉 burp 的所有功能,得花好幾個月來專門學習 burp 這方面的資料,遺憾的是市面上還沒有一本關於 burp 的工具書,如果有大神願意寫,那是自然最好的。

通過以上學習,能基本掌握這幾款工具的用法了,當然不能說之能成功滲透目標了,因為這隻針對無訪問控制,無驗證碼,存在弱口令的網站情況。

通過案例學習,開發者也應該明白,怎樣去做才能更加安全,為使用者保駕護航。

案例是哪個高校,我就直說了,屬於雲南大學主站,這個漏洞,我在80天前就已經提交給漏洞平臺了,他們也整改了,今天寫下這篇文章的時候是2017年11月1日22:11:05,我萬萬沒想到,整改是指哪改哪的姿勢。

安全問題萬萬不可指哪改哪,我當時提交的另一個賬號的弱口令,但是我明明確確的是寫了屬於邏輯漏洞,整改意見清清楚楚寫上了“增加驗證碼效驗機制防止爆破”。

但他們只改掉了出問題的那個賬戶的密碼……

所以我很多時候不能理解廠商的態度,加個驗證碼效驗如此簡單的事情,非得讓攻擊重新發生一次。
是不是一定要等使用者資料洩露,企業等遭受致命打擊才能明白資訊保安的重要呢?

白帽子的測試是否合法,邊界在哪裡?

相信這是很多人都關心的問題,從白帽子袁煒的事件來說(該白帽子挖世紀佳緣的漏洞並通知該廠商後被世紀佳緣起訴),白帽子的的邊界在哪?

嚴格來講,只要沒有授權的測試,都是違法的,屬於未授權訪問,如果追究這罪名就可以吃。

授權測試比如什麼呢?漏洞平臺的 SRC,比如京東,小米等 SRC 是鼓勵白帽子挖洞提交的,確認後甚至會送你小禮物,這些廠商建立的 SRC 平臺,是有些許合法授權的意思。(個人認為)

白帽子做測試都應當遵守一個原則,點到為止,即:我只證明漏洞的存在,不會真正的實施破壞或者利用。未修復的漏洞,不應當公開其詳情。所以我想廠商不會通過司法途徑解決。

但是,如果你在找到SQL注入點後,進行了資料修改讀取並且下載到本地,這就是脫庫行為,有這種行為,就觸犯了邊界,那麼廠商可以報警了,並且你也存在犯罪行為。

有時候,廠商也不必這麼小氣,不存在邊界行為就不用報警,不要人家證明了你網站有漏洞後,你悄悄修復了,然後報警。

網站有漏洞是好事,一般來說白帽子的檢測並沒有給廠商帶來多大損失,入侵本身也沒有明顯惡意,還主動告知漏洞及修補方案,大多數通情達理的廠商都不會選擇走法務。

白帽子並不是一個人在戰鬥,隨意抓人的後果可能會觸怒其他白帽子,對廠商些許會帶來相應損失。

比如,挖到洞後不再提交,直接網際網路匿名公開呢?送個小禮物表示一下是不是比冰冷手銬好太多了?

找好邊界,尤其重要。

OWASP top10

官方網址可以看這裡:https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project

2017年的十大風險已經選出來了。分別是:

  1. 攻擊注入漏洞

  2. 失效的身份認證和會話管理

  3. 跨站指令碼 Xss

  4. 失效的訪問控制

  5. 安全配置錯誤

  6. 敏感資訊洩露

  7. 攻擊檢測與防範不足

  8. 跨站請求偽造(CSRF)

  9. 使用含有已知漏洞的元件

  10. 未受保護的 API。

這些內容我就不貼出來了,我把官方的 PDF 文件傳送到讀者圈提供閱讀理解。
相信官方的解釋也比我解釋的更好。

挖到洞該怎麼辦?

很簡單,0day 就刷一波積分,不是通用性就上交國家啦~

練手靶機

本地環境推薦使用DVWA進行模擬攻擊操作練手,該系統包含了很多Web漏洞,便於復現。
真實環境請用谷歌hack語法搜尋網站程式進行實機攻擊。

個人推薦書單

學安全務必啃書,書中的知識結合實戰經驗會讓你瞭解的更徹底也更快。

0?wx_fmt=png

這是我目前在看的一系列叢書,要推薦大概就這些吧。《Web 安全深度剖析》是本好書,入門就靠這書帶。《黑客攻防技術寶典 Web 實戰篇第二版》也值得看,就是內容太多,歪果仁寫的。

接著就是道哥的《白帽子講 Web 安全》啦~前端黑客可看餘弦大大的 Web 前端黑客技術揭祕。雙十一我自己入了 Python 和幾套散文集。

最後,需要用到以上工具的讀者圈聯絡我,連結不放了。祝大家想往這條路上走的人越走越遠。

近期熱文

通知

個人和企業的資訊洩露到今天已經嚴重到了什麼程度?

嚴重到只要想查,就可以用各種社會工程學的方式來了解你的大部分資訊。

在網路環境裡,如果不會用手段保護自己,那和“透明人”沒什麼兩樣。

0?wx_fmt=jpeg

「閱讀原文」看交流實錄,你想知道的都在這裡