permeate靶場漏洞挖掘思路分享
原文:https://zhuanlan.zhihu.com/p/37965653
感謝作者給黑白之道投稿
簡介
最近在逛碼雲時候發現permeat靶場系統,感覺界面和業務場景設計的還不錯.所以過來分享一下.
同時也是分享一下我平時挖掘漏洞的一些思路吧,這篇文章里雖然只簡單介紹其中三種漏洞類型,但也是想是一個拋轉引玉吧,給web安全新手提供一些挖掘思路.
下載地址:
這篇文章里主要介紹其中的,SQL注入挖掘,xss跨站挖掘,以及csrf漏洞把
在挖掘一網站的漏洞時候,我們腦海里要知道什麼漏洞在什麼場景下容易出現,那些漏洞出現的比較頻繁,我腦海里的web安全漏洞有三種類型吧:
1. 編碼型漏洞
2. 業務邏輯漏洞
3. 運行環境漏洞
筆者之前給別人做代碼審計有一個習慣,通常希望給的源碼能夠正常運行,還不是光從代碼來分析問題.
為什麼這麼做呢,因為覺得如果代碼不能運行其實很多漏洞是無法光從代碼層面發現問題的.
而代碼能運行起來,其實不僅能驗證問題,也可以從系統的業務功能來找出更多問題.
比如說很多網站提供站內搜索功能,在搜索的時候通常會把用戶搜索的關鍵詞返回在頁面當中,比如"你搜搜的關鍵詞"關鍵詞"結果如下",那在這裡就很有可能存在反射型XSS漏洞.
另外很多網站都存在用戶體系,而在修改個人資料的時候很有可能存在越權問題,比如修改的個人資料的時候查看是否又提交uid參數,如果有,修改uid值,看是不是把別人的資料給修改了,這些其實都需要運行之後才能發現問題所在.
筆者在windows系統中石油wampser搭建還比較簡單,這裡先簡單介紹安裝方法:
1. 用git把代碼拉下來
2. 配置單獨的虛擬主機目錄(不要放到二級目錄,貌似有問題)
2. 新建了一個資料庫
3. 導入sql文件,文件位置 /doc/bbs_cate.sql
4. 修改一下/config/dbconfig.php文件中的資料庫賬號密碼信息
通過上面的安裝步驟之後,應該可以看到如下面的界面了.有一個默認板塊和一個默認分區,就說明連接資料庫成功了.
現在我們開始去挖掘裡面的漏洞,在項目介紹中看到有SQL注入和XSS以及CSRF問題,但是沒有告知存在漏洞的位置,所以我們需要先分析每個漏洞的對應場景.
先來說說SQL注入挖掘吧.
一. SQL注入挖掘
懂點SQL注入知識應該都可以想到sql注入是因為攻擊者可以控制sql語句中的參數所造成的,那麼我們就先找一個需要傳參的地址,在剛才的首頁中可以看到有一個默認板塊,那麼就點擊默認板塊好了,點擊之後上面的URL地址變成了
在URL中可以看到,有三個參數,但根據經驗來說,前面兩個參數m和a有點像是路由,所以這兩個先暫時用排除法排除,最後一個參數bk是一個數字,感覺應該是板塊的ID,所以可以重點關注一下,我們先記住未測試之前的頁面是什麼樣子
現在先用手動測試快速測試一下,怎麼測試呢? 可以在bk=5後面加一個單引號,或者加一個%27,得到URL地址如下
這個時候看一下頁面的運行效果如何,發現帖子列表中帖子已經不存在了.
這個時候我們可以初步的得出結論,這個地方可能存在SQL注入問題,但是還不能肯定,要肯定這個地方是否存在注入問題,我們這樣深入去驗證一下,可以使用參數值 5" or "1"="1 來進行驗證,得到URL地址如下
訪問之後,發現頁面又發生了一次變化,這個時候我們就可以肯定這個地方存在了SQL注入問題,如下圖
我們可以使用sqlmap來看看資料庫存在哪些資料庫信息,sqlmap命令如下:
通過sqlmap的反饋結果可以看出,這個地方確實存在了注入問題.
下面我們接著找一下XSS漏洞漏洞
二. XSS跨站
造成xss的主要成因我們知道是參數會被在頁面輸出,所以在找XSS漏洞的時候,我們先看看站點有什麼功能;
在首頁的圖片和帖子列表頁中可以大致看出有搜索功能,和發帖,回復帖子等功能,這些地方都會把接收的參數作為內容展示出來,所以我們可以挨個去測試.
先來一個最簡單的搜索頁吧,在導航欄有一個搜索框,我首先在搜索框中輸入test吧,得到URL地址如下
從URL地址可以看出搜索的關鍵詞會通過keywords來傳遞,傳遞之後也會顯示在頁面內容當中,如下圖
現在分析顯示html元素,在關鍵詞test的父級節點,可以看到是div,div中寫入script標籤是會被執行的,所以可以直接使用下面的payload
進行測試,通過瀏覽器訪問此連接,可以看到已經彈出123確認框
不過xss不僅限於script標籤可以被執行,也可以用img標籤的onerror屬性來執行,可以構造如下的payload
依然訪問URL地址,可以看到456的確認框被彈出來了
上面的XSS都屬於反射型的,存儲型的項目也表明存在,這裡我們先略過吧,先看看CSRF的漏洞好了.
三. CSRF
CSRF漏洞主要成因是因為服務端接收表單請求時候沒有驗證是用戶發送的請求還是瀏覽器發送的請求,所以在挖掘此類表單的時候先去找表單的位置,在前面的截圖當中,可以看到有一個發帖的按鈕,可以進去點進去看看,點擊發帖,URL地址為
在這個頁面中可以看到有一個發帖的表單,我們主要看一下表單有沒有token令牌,如果沒有的話,那就可能存在CSRF的漏洞問題,通過瀏覽器的審查元素截圖如下
在頁面中確實沒有存在token信息,因此我們可以初步得出結論,這個地方存在CSRF的可能,現在需要驗證一下,
在驗證的時候我們需要制定CSRF有GET型和POST型,get型利用起來相對簡單很多,而在這個地方表單提交雖然是通過POST,但並不排除GET提交也可以利用,所以我們先嘗試用GET型來提交數據,先通過抓包瀏覽器的網路分析模塊來看,發帖會發送哪一些數據,如下圖
在圖中可以看到,post會傳遞三個參數過去,bk和title以及content三個參數,我們先用get表單構造出一個payload出來,得到URL地址如下:
然後去瀏覽器打開這個地址,看看是否能提交表單成功,訪問後發現彈出了一個確認框,告訴我已經發帖成功了,如下圖
去列表確認一下,發現確實已經發帖成功,如下圖帖子列表
這個CSRF相對來說比較低級,很多情況下用get並不能提到post提交,因此我們再來嘗試用post方法構造一個payload出來,代碼如下
在上面代碼中可以看出,表單裡面的值已經事先做好了定義,當受害者打開之後,變回自動提交表單.
前面提到了這個系統中存在存儲型XSS,又存在CSRF漏洞,那麼我們是不是可以用來做一個XSS蠕蟲試驗呢?
四. 蠕蟲XSS
滿足蠕蟲XSS需要兩個必要條件,存儲型XSS,和CSRF漏洞,這兩個這個系統都有,所以實現起來沒有問題,需要的是先找一下存儲型XSS
在前面發帖的位置會把參數存儲起來,並展示,因此這個地方是一個比較好的試驗點,我們在發帖位置先來試驗一下吧. 如下圖,表單中提交了xss驗證代碼,當成功觸發的時候會被彈框123,如下圖
點擊發布帖子按鈕,發布帖子成功,下來來到帖子列表頁面,發現alert(123)已經被觸發成功了,如下圖
現在CSRF有了,存儲型XSS也有了,那麼接下來就是需要把它們結合起來使用了,但蠕蟲XSS利用代碼相對alert(123)來說代碼會比較長,所以我們需要先把利用代碼放到一個文件當中,然後再通過script引入進去,我們構造的代碼如下
在上面的代碼中,只要一被執行,頁面將會被插入一個img標籤,其中標籤的src屬性又會去請求表單,表單裡面的內容又是一段xss代碼,這樣變回造成XSS蠕蟲攻擊者,每次請求都會是倍數增長.如下圖,瀏覽器刷新3次之後,已經有很多帖子了.
你可能喜歡
TAG:黑白之道 |