還記得這篇文章嗎
<http://orange-tw.blogspot.tw/2011/05/project-web-security-toolkit.html>
當初說 2.0 版本就 release 出來,現在來還願了XDD
當初只是因為自己在工作上做滲透測試常常會要做的一些重複的事情想說寫個 script 來解決,並且想說寫個 GUI 比較好看,就生出來的小產品
( 後來發現最初的版本還躺在硬碟裡,用VB寫的好蠢好可愛XD )
後來陸陸續續加上 SQL Injection 弱點診斷以及自動化,接著就越寫越有興趣、越寫越大了
上面那篇文章發完後就擺爛放了一年左右沒在動了哈哈
最近又因為某些機緣重新開始整理 code
主要改進了
- 架構整體調整、以及大幅度的重構,一年後再來看自己寫的 code 會發現當初很多地方設計不良以及很容易出錯等
- 把一些比較不常用到的功能移除,當初設計目的只是為了自己方便,太進階或者太少用到的功能實根本靠自己會比用工具更快,不然給人看一堆看不懂的東西也沒用XD
- 加入新功能
程式使用 Python + wxPython 寫成,最後使用 py2exe 打包成可執行ㄉㄤ
用到的 Library 都是 LGPL 以及 BSD 授權
主要用途:
- 快速檢測自己的 Web Application 是否存在一些不該洩漏的敏感性資訊
- 自動化 / 半自動化的 SQL Injection 檢測工具
- 對於 Web Sec 中 SQL Injection 這塊有興趣的人提供一個 sample 測試流程以供學習
目前支援:
- 網站敏感目錄、具有危險性的路徑檢查
- 基本編碼以及解碼
- 半自動化 SQL Injection ( 全自動化的暫時不加上 )
- SQL Injection 支援
- ACCESS
- MYSQL Union
- MYSQL Error Based
- MYSQL Blind
- MSSQL Error Based
- MSSQL Blind
- ORACLE Error Based
- ORACLE Blind
- ORACLE UTL_HTTP
- 額外功能支援
- MYSQL load_file
- MYSQL into outfile
- MSSQL xp_dirtree
- MSSQL xp_cmdshell
- PHP eval connector
- ASP eval/execute connector
- Struts2 Code Execution
- 針對常見 401 Authorization, Web login page 進行 bruteforce
- 支援 Multithread, Proxy, Socks5 … 等等一堆雜項
相關 Documentation 可以參考這篇
接著是聲明:
***此軟體設計為網頁撰寫、管理人員上自我檢測以及教育用途
禁止用在非法的行為上,如有非法的行為後果自行承擔,
在文後提供的下載頁面上也必須經過上述同意才允以下載、使用。***
接著是一些技術細節XD
在 Settings 下有個 “Debug Mode” 將它開啟的話可以將每個 HTTP Request 中 GET 的網址以及 POST 出去的資料印出
想學習的人可以自己架設一個具有弱點的網站,之後觀察程式是如何進行檢測的。
一開始在寫的時候以為很簡單,可以很快的完成,
但越寫越發現中間的眉眉角角太多了,
每一個網址就是一個新的環境,要怎麼設計一個 SQL 語句在所有的環境下都可以通用、取得對的資料?
甚至 Access Database 還有 Race Condition 的問題存在XD
Python 處理編碼也讓我一個頭兩個大XDD
- ACCESS 的話透過 EXISTS 以及 asc, mid 來進行 Blind Injection 相信已經講到爛掉了XD
- MYSQL 的話則是透過 information_schema 取得相對應的 schema, tables 以及 columns
- MYSQL 可以透過 group_concat, concat_ws 來快速獲取資料
- MYSQL 可以透過 unhex( hex(data) ) 的方式來 bypass 一些 illegal mix of collection 的問題
- MYSQL Error Based 的話可以參考我之前的文章,透過 Duplicate 的方式取得資料
- MSSQL 的話相信教學文很多,比較 tricky 的點在於怎麼樣在 Injection 中不重複的取得整個 table 的資料? (MSSQL 沒有 limit, rownum 只能使用 subquery,該用 order by 呢還是用 where not in? )
- MSSQL sysdatabases, sysobjects, syscolumns 甚至 information_schema 都是可利用的
- ORACLE Error Based 使用 utl_addr.get_host_address 來使得錯誤資訊出現
- ORACLE 透過 utl_http.request 之後使用 socket 去接回傳的資料。
- 401 Authorization 部分可以很簡單的判斷 status != 401 等於帳號密碼合法,但是一般的 Web login page 就很難判斷了,從判斷是否有 Set-Cookie, Location 等 header 到判斷回傳的網頁是否有關鍵字等, 這部分就寫的比較弱一點
- Struts2 Code Execution 則是因為這個弱點太火紅而加上去的XD
這些都可以在 Debug Mode 下看到,有興趣學習的人可以慢慢去觀察!
Tips:
- 在 Windows XP 下顯示錯誤無法開啟,請安裝 VC Runtime library 2008
- 軟體尚在未成熟階段,有錯誤歡迎回報 ( 回覆本文或是 mail 給我皆可 )
最後附上載點嚕~