SQL注入測試工具:Pangolin(穿山甲)

第一章、簡介

 

1.1 Pangolin是什麼?

Pangolin是一款幫助滲透測試人員進行Sql注入測試的安全工具。

所謂的SQL注入測試就是通過利用目標網站的某個頁面缺少對用戶傳遞參數控制或者控制的不夠好的情況下出現的漏洞,從而達到獲取、修改、刪除數據,甚至控制數據庫服務器、Web服務器的目的的測試方法。

Pangolin能夠通過一系列非常簡單的操作,達到最大化的攻擊測試效果。它從檢測注入開始到最後控制目標系統都給出了測試步驟。

過去有許多Sql注入工具,不過有些功能不完全,支持的數據庫不夠多,或者是速度比較慢。但是,在Pangolin發佈以後,這些問題都得到了解決。Pangolin也許是目前已有的注入工具中最好的之一。

1.2 使用Pangolin可以用來做什麼

如下是一些示例:

  • 滲透測試人員用於發現目標存在的漏洞並評估漏洞可能產生後果的嚴重程度
  • 網站管理員可以用於對自己開發的代碼進行安全檢測從而進行修補
  • 安全技術研究人員能夠通過Pangolin來更多更深入的理解SQL注入的技術細節

1.3 特色

如下是Pangolin提供的一部分特點:

  • 全面的數據庫支持
  • 獨創的自動關鍵字分析能夠減少人爲操作且更判斷結果準確
  • 獨創的內容大小判斷方法能夠減少網絡數據流量
  • 最大話的Union操作能夠極大的提高SQL注入操作速度
  • 預登陸功能,在需要驗證的情況下照樣注入
  • 代理支持
  • 支持HTTPS
  • 自定義HTTP標題頭功能
  • 豐富的繞過防火牆過濾功能
  • 注入站(點)管理功能
  • 數據導出功能
  • ……等其他更多

1.4 它不能做什麼

Pangolin只是一個注入驗證利用工具,不是一個Web漏洞掃描軟件。因此您不能用它來做整網站的掃描。

另外,他也不支持注入目錄遍歷等功能,這些功能您可以藉助其他的安全工具進行。

1.5 到哪裏獲取Pangolin

Pangolin的更新速度很快,你可以經常到http://www.nosec.org/web/pangolin去下載最新版本。

1.6 運行環境

目前Pangolin只能運行在Windows系統平臺,支持32位/64位Windows NT/2000/XP/2003/Vista/2008。

支持的數據庫類型

數據庫類型 目標信息獲取 其他
MS SQL 服務器版本、服務器名稱、數據庫名稱、當前用戶、當前用戶權限、數據庫列表 執行系統命令、讀取註冊表、讀文件、寫文件、下載遠程文件、導出數據到指定的數據庫服務器
Oracle 版本信息、IP地址、當前用戶、當前會話權限、主機名、實例名稱、用戶帳號信息、外部IP地址 帳號破解、注入提權(adding)、遠程數據存儲讀取
Mysql 版本、GPC判斷、數據庫列表、臨時目錄、當前用戶、操作系統信息、用戶帳號 讀文件、寫文件
Access 數據庫路徑、根目錄、磁盤信息 只能暴力
PostgreSQL 版本信息、數據庫、當前用戶、當前會話用戶、端口、數據路徑、搜索路徑 讀文件
DB2 版本信息、數據庫、當前用戶、操作系統名稱、操作系統版本、主機名稱 ……
Sybase …… ……
Informix …… ……
Sqlite …… ……

1.7 報告問題和獲取幫助

如果您在使用過程中有任何的意見或者建議,您可以到http://www.nosec.org網站上進行評論留言,這裏會有一羣共同興趣的朋友幫助您。或者您可以直接給我發送郵件:[email protected]

 

第二章、用戶界面

下圖爲主界面圖


如上圖所示,我們可以看到Pangolin的主界面是很簡單明瞭的,它分爲幾個區域:

  • 最上面的是注入控制區域,在這裏您可以進行一些注入參數設置,以及通過點擊按鈕進入到高級配置界面;
  • 中間的一大塊區域爲數據顯示區域,用於顯示注入獲取的數據已經進行鍼對不同數據庫的高級注入操作;
  • 下面有日誌信息區還有狀態欄區,能夠告訴您當前的工作狀態信息。

下面我們就這些控件進行詳細的說明:

2.1.1 URL輸入框

在這裏輸入待測試目標的URL地址,

注意,該URL地址必須是攜帶參數的格式,例如http://www.site.com/news.asp?id=100這樣的格式。

2.1.2 注入方式選擇框

HTTP常用的數據傳輸方法有GET和POST方式,通常情況下,請求數據用GET方式,傳遞數據用POST方式。如果服務器端代碼處理GET和POST參數的操作是一致的話(JSP編程中經常可以見到),那麼通過GET和POST傳遞參數的效果是一樣的。這時使用POST可以避免服務端日誌的產生。

另外需要注意的是,如果待測參數是通過表單傳遞,那麼您需要進行地址拼接。假設參數傳遞的目標地址爲http://www.site.com/login.asp,參數分別爲username和password,那麼測試時,您需要在URL輸入框中輸入http://www.site.com/login.asp?username=aa&password=bb這樣的格式,並且將注入方式設置成POST。

普通模式下,我們建議您使用GET方式。

2.1.3 注入控制按鍵

Pangolin的注入過程採用了多線程的方式,您在注入過程中隨時可以進行暫停/繼續操作和停止操作。

在您輸入了待測試目標的URL後,您可以點擊Check進行掃描操作,這時Check按鍵變灰,Pause和Stop按鍵變爲可用,這時您就可以進行暫停或中止操作了。

這裏提醒您一點,在後面我們提到的所有的操作,無論是猜解數據也好,高級功能操作也好,在操作過程中,您隨時可以暫停或者中止,但是Check按鍵只能用於注入掃描。

2.1.4 注入類型選擇框

掃描不同的參數類型我們將注入類型分爲interger和String還有Search型。分別對應數值型,字符型還有搜索型。在掃描到注入點以後,該選擇框將自動選擇對應的注入類型。

在注入前,如果我們已知了某個參數的注入類型,那麼我們可以先從該下拉框中選擇合適的值,這樣能夠縮短注入掃描的時間。

2.1.5 數據庫類型選擇框

順便提及一點:SQL注入是跟數據庫強相關的,而不是頁面的代碼語言,這一點許多文章都誤導了讀者。我們看到什麼asp注入,php注入,jsp注入之類的概念都是不正確的。而應當說是MSSQL注入,Mysql注入或者Oracle注入等等。

在這個選擇框中指明瞭目標Web連接的數據庫類型。在掃描到注入點以後,該選擇框將自動選擇對應的數據庫類型。

在注入前,如果我們已知了目標的數據庫類型,那麼我們可以先從該下拉框中選擇合適的值,這樣能夠縮短注入掃描的時間。

2.1.6 關鍵字輸入框

什麼叫關鍵字呢?在自動化工具的測試過程中,如果目標針對不同的注入語句進行了錯誤提示的話那麼程序能夠知道這是一個典型的錯誤,然後就能夠提取信息。但是如果頁面返回的結果中並沒有帶有明確的錯誤提示信息的話,那麼程序將無法判斷哪一種情況下是正常頁面哪一種情況下是錯誤頁面。因爲,測試人員需要手動的告之程序一個正常的頁面或者錯誤的頁面有什麼特殊字符串能夠標明,這時候您就需要在這裏輸入這個字符串了。

在其他的一些注入工具中,如果測試人員沒有輸入關鍵字的話是無法進行測試的,但是在Pangolin中我獨創了自動分析關鍵字的功能,它能夠讓你在不干預的情況下自動的分析關鍵字從而更掃描出漏洞。

在2.2節中,我們將給您描述如何啓用或者關閉該功能。

2.1.7 配置按鈕

Options按鈕將帶您進入到一些全局參數的配置界面中,這一部分我們將在下一節中爲您詳細介紹。

2.1.8 掃描狀態重置按鈕

如果您在完成了一次對某個URL的注入操作以後,還想對另一個URL進行掃描操作,那麼建議您點擊一下該按鈕,從而將掃描注入的全局狀態清空。

2.1.9 注入點手工配置按鈕

本按鈕屬於高級選項,通常不建議您點擊進行配置的修改。具體用途待整理。

好了,如果您進入了本界面,說明您已經知道如何點擊"Options"按鈕了,那麼恭喜 ;)先看看如下界面圖:


從上圖可以清楚的看到,配置界面中包含四大部分:

2.2.1 HTTP標題頭編輯界面

在本界面中,您可以完全自定義HTTP標題頭域的字段,如最常用的User-Agent和Cookie標題頭,通常你需要知道一些特定含義的字符串。

這裏也做一個簡單的說明:User-Agent可以用來進行客戶端僞造,您知道爲什麼很多情況下Google能返回某些正文而我們去請求時需要我們登錄嗎?原因很簡單,網站爲了自身更好的推廣,所以針對Google的robots開放了通行證,所以我們就可以利用這種關係進行更深入的工作。而對於Cookie標題頭而言,它的作用更明顯了,說直白一點,它是我們身份的象徵。一些站點需要先登錄才能進行注入(如管理後臺的頁面),其他的一些注入工具需要你手動輸入或者讓你手工輸入登錄界面的參數字段來進行。但是在Pangolin中,您可以直接點擊以下按鈕來完成這些生澀的操作。

除此之外,你也可以自定其他一些個性化的標題頭。

2.2.1.1User-Agent選擇按鈕

這個按鈕的功能顯而易見,Pangolin預置了一些最常見的Web瀏覽器的客戶端類型以及搜索引擎的類型,在點擊按鈕以後,您可以直接選擇一個作爲您注入時使用的對象,這樣您就能僞造客戶端類型了。


2.2.1.2 預登錄界面


2.2.2 代理配置界面


2.2.3 注入掃描參數配置界面


2.2.4 高級參數配置界面


2.2.5 注入數據管理界面

第三章、基本的操作步驟


3.1 開始注入

  1. 啓動Pangolin
  2. 在URL輸入框中輸入待測試的URL地址,注意該地址是攜帶參數的格式
  3. 點擊Check
  4. 如果在注入數據庫中已經存在了該網站的某個注入點的話,那麼您將會看到如下的對話框:
  5. 如果你想使用已經存在的注入點,那麼選中一個並點擊Use this按鍵;
  6. 如果您不需要的話,直接點擊Cancel按鍵繼續。
  7. 好了,如果您足夠幸運的話,您應該看到注入類型和數據庫類型都已經獲取到了,
  8. 那麼恭喜,我們可以進入下面的一些操作步驟,如下圖所示,目標系統採用的是Mysql數據庫,那麼除了最基本的Information和Datas標籤頁以外還會有FileReader和MySqlFileWriter分別可以用於讀寫文件,本章將只關注基本的操作,其他內容將放入到下一章進行說明:

3.2 獲取基本的信息

  1. 切換到Information標籤頁
  2. 我們可以看到裏面有一些選項可以選擇,選中您想獲取的信息,如果您不想挨個點擊的話,可以直接點擊Select All按鈕
  3. 點擊Go按鈕
  4. 相信你應該可以看到Pangolin返回了這些信息;)

3.3 獲取表

  1. 切換到Datas標籤頁
  2. 點擊Tables按鍵,開始您的獲取表清單之旅
  3. 下圖是獲取數據表後的截圖:

3.4 獲取列

  1. 在您想獲取列結構的表上點擊,選中表(很多朋友以爲要獲取列需要勾上前面的選擇框,其實在這一步是不需要的)
  2. 這時Columns按鍵將會變爲可用
  3. 點擊Columns按鍵,如下是可能的結果圖:

3.5 獲取數據

  1. 在左邊的表和列樹形選擇視圖中選擇要獲取數據的表及其對應的列,注意一次只能針對一個表進行,在您點擊一個列後,右邊的數據視圖會相應的增加該列
  2. 這時Datas按鍵變爲可以
  3. 在1=1那個輸入框中輸入您自定義的獲取數據的條件表達式,如果你不清楚是什麼或者想獲取所有數據的話,你直接保留不動即可
  4. 點擊Datas按鍵,Pangolin將會進行數據的猜,如下圖爲可能的結果圖:

3.6 保存數據

您可以直接點擊Save按鍵保存當前獲取的數據。

 

四、貢獻者列表(Contributors)

在Pangolin的開發過程中,得到了許多朋友的支持和幫助,這裏特別要感謝如下人員:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章