2.3 sqlmap目錄及結構

白帽安全技術復現發表於2020-06-07

2.3 sqlmap目錄及結構
Tips:此篇文章主要參考了《sqlmap從入門到精通》這本書中的相關具體細節,由於這本書作者完成的時間大概在2017年作用,所以我根據書中提到的資訊再根據目前最新版的sqlmap目錄結構進行了優化。

 

 

2.3.1 sqlmap檔案目錄及主檔案

1.sqlmap目錄結構

2.sqlmap主檔案解讀
(1) .gitattributes git的屬性檔案,例如:是什麼程式語言,具體的檔案型別等等
(2) .gitignore git需要忽略的檔案,一般按照理解,把一些沒有必要傳上去的檔案排除在外,不用上傳至git倉庫中
(3) .travis.yml 標記Python版本和設定sqlmap的指令碼
(4) .pylintrc Python程式碼分析工具,用於分析Python程式碼中的錯誤和不符合程式碼風格標準的問題程式碼
(5) LICENSE 授權許可檔案
(6) COMMITMENT 相關承諾 GPL Cooperation Commitment
(7) README.md 相關的說明檔案,簡單的指導怎麼使用安裝sqlmap,還針對各種語言版本進行介紹
(8) sqlmap.conf sqlmap呼叫的配置檔案,比如一些預設的引數,或者是想要提前配置一些預設的引數進行批量自動化掃描探測
(9) sqlmap.py sqlmap的主程式,是執行啟動sqlmap的程式,執行期間可以呼叫各種引數進行測試,可以理解為一個可執行檔案,到目前位置sqlmap是可以直接支援python2和python3 所以一般的執行操作是python sqlmap.py -u url 就可以開啟對目標進行SQL隱碼攻擊測試
(10) sqlmapapi.py sqlmap的API檔案,可以將sqlmap整合到其他各種平臺,比如常用的是在Burpsuite的外掛呼叫sqlmapapi.py介面,進行自動化掃描測試
(11) sqlmap.pyc sqlmap在python下生成的pyc位元組碼檔案,這個可以簡單的理解為是編譯好的程式檔案,可以使用uncompyle2進行反編譯,命令如下:
uncompyle2 -o sqlmap.py sqlmap.pyc 也可以使用uncompyle6 https://github.com/rocky/python-uncompyle6 https://github.com/zrax/pycdc

2.3.2 sqlmap檔案目錄解讀

(1) .github git的程式碼管理倉庫,基本上每個github倉庫都會有這個資料夾,記錄了檔案上傳更改等版本資訊
(2) doc 從字面上的意思就知道這是個文件說明,裡面放的是sqlmap文件資訊,資料夾裡面包含sqlmap的簡單使用手冊,含有每個國家語言的簡要說明文件,有作者資訊,更改歷史記錄資訊,致謝資訊,第三方外掛致謝資訊
(3) extra 包含了sqlmap的各種額外功能,包括但不限於發出聲響的(beep.py), 程式碼加密(cloak.py -i bmfx.php -o bmfxtech.php) ,二進位制轉換(./dbgtool.py -i ./nc.exe -o nc.scr) ,執行cmd,安全執行,shellcode等等
(4) lib 這裡包含了sqlmap的多種連線庫,例如:sqlmap的5中SQL隱碼攻擊型別請求的引數,提權操作等
(5) plugins 外掛庫,例如:在使用sqlmap連線資料庫的時候需要用到其中的一些不同資料庫的python連線類,以及各種資料庫的資訊和資料庫通用事項等
(6) tamper 這裡包含了57個繞過指令碼,例如:編碼繞過,註釋繞過等等,還有很多
(7) thirdparty 這裡包含了一些第三方的外掛,例如:優化,保持連線,顏色等等
(8) data 這個目前在老版本的sqlmap中是沒有的,在目前最新版本的1.4.5.28中存在 ,其實也沒有變什麼就是把原來的部分資料夾移動到了這個data資料夾裡面,目前data資料夾裡面有如下資料夾:
html, procs, shell, txt, udf, xml
html 裡面有個index.html檔案,開啟是關於sqlmap的各種選項
procs 包含了mssqlserver、 mysql、oracle和postgresql的觸發程式,存放了一些SQL語句,主要涉及DNS帶外傳輸資料的一些資料庫命令
shell 注入成功時使用的4中shell,這些shell是經過加密的
txt 包含一些字典,例如:使用者瀏覽器代理,表,列,和關鍵字等
udf UDF提權用的dll或者so檔案,包含了使用者自己自定義的攻擊Payload
xml 包含了多種資料庫的注入檢測載荷、旗標資訊以及其他資訊


2.3.3 子目錄解讀

1.sqlmap/doc目錄
(1) translations 翻譯資料夾,包含下載,安裝和使用sqlmap的簡要說明文件,該檔案包含17種語言版本,中文版本也在裡面
(2) AUTHORS 作者資訊,介紹了sqlmap的程式編寫者及其郵箱,發現sqlmap的相關問題可以直接傳送郵件給作者
(3) CHANGELOG.md 更新日誌,介紹了sqlmap更新了哪些功能,Bug修復及相關特性
(4) THANKS.md 感謝文件,介紹對sqlmap有貢獻的作者
(5) THIRD-PARTY.md 第三方外掛,介紹整合在sqlmap的第三方外掛的概要說明

2.sqlmap/extra目錄
(1) beep 警報聲音資料夾
beep.py 執行後會發出警報聲音,引數為--beep,當發現SQL隱碼攻擊的時候,發出警報聲
beep.wav 警報聲音的檔案
(2) cloak 利用cloak.py可以生成和解密後門等操作
(3) dbgtool 執行轉換的資料夾
dbgtool.py 可以將ASCII文字轉化為行動式的exe檔案,生成的nc.exe 可以安裝到Windows上,進行後門監聽,python ./dbgtool.py -i ./nc.exe -o nc.scr
(4) icmpsh 一個win32的反向icmpshell,在注入成功之後反彈回來的一種shell
(5) runcmd 注入成功後,反彈回來cmd命令的輔助工具
(6) shellcodeexec 被安裝在受害者機器上的shellcode,這些不是在自己的機器上執行,是要在目標機器上執行,含有Windows和Linux的32和64位的檔案
(7) shutils 檔案操作工具,python檔案操作,實現查詢第三方外掛等相關功能
(8) vulnserver 簡易的漏洞服務,用於fuzz測試
推薦:https://peonycsa.com/sqlmap-codeanlysis/

3.sqlmap/lib目錄

(1) controller
action.py 利用URL受到影響的引數進行SQL隱碼攻擊,並且在條件許可下抽取系統或者資料庫中的資料。
checks.py 利用載荷對發現的sql注入點進行注入檢測。
controller.py 對使用者傳遞的引數進行控制。
handler.py 對使用者傳遞的資料庫名稱進行處理
(2) core 這是核心資料夾有各種引數的呼叫檔案,例如設定目標 會呼叫 target.py。還有agent.py,dump.py,threads.py等等
(3) parse 該引數資料夾有banner.py cmdline.py sitemap.py configfile.py payloads.py handler.py html.py headers.py 等一系列配置處理引數呼叫檔案
(4) request 該請求資料夾有basic.py templates.py basicauthhandler.py redirecthandler.py comparison.py rangehandler.py connect.py pkihandler.py direct.py methodrequest.py dns.py inject.py httpshandler.py 等一系列網路請求連線檔案
(5) takeover 這個是接管資料夾,資料夾裡面有abstraction.py xp_cmdshell.py icmpsh.py web.py metasploit.py udf.py registry.py 注入成功後接管受害者機器的shell.
(6) techniques 這個是注入分類資料夾有blind,dns,error,union,brute 等物類注入型別,其中每個資料夾有相應的注入型別執行檔案。
(7) utils 這是小功能資料夾。該檔案中含有 api.py xrange.pycrawler.py versioncheck.py deps.py timeout.py getch.py hash.py sqlalchemy.py hashdb.py search.py htmlentities.py purge.py pivotdumptable.py progress.py 等多種功能的呼叫檔案。

4.sqlmap/plugins目錄
(1) dbms 包含各種資料庫列舉,連線和接管等相關說明,sqlmap支援Access,DB2,FireBird,HSQLDB,MaxDB,MSSQLServer,MySQL,Oracle,PostgreSQL,SQLite和Sybase資料庫等等,每個資料庫檔案都有固定的檔案,例如,MySQL資料夾中含有connector.py, enumeration.py, filesystem.py, fingerprint.py, syntax.py, takeover.py
(2) generic 這是個通用資料夾,裡面包含 connector.py, custom.py, databases.py, entries.py, enumeratioin.py, filesystem.py, fingerprint.py, misc.py, search.py, syntax.py, takeover.py, users.py

5.sqlmap/tamper目錄
這個木是用來注入繞過各種防火牆的指令碼檔案目錄,裡面含有57個用來繞過防火牆的指令碼檔案,具體如下:
apostrophemask.py apostrophenullencode.py appendnullbyte.py base64encode.py between.py bluecoat.py chardoubleencode.py charencode.py charunicodeencode.py commalesslimit.py commalessmid.py concat2concatws.py equaltolike.py escapequotes.py greatest.py halfversionedmorekeywordsifnull2ifisnull.py informationschemacomment.lowercase.py modsecurityversioned.py modsecurityzeroversioned.multiplespaces.py nonrecursivereplacement.poverlongutf8.py percentage.py randomcase.py randomcomments.py securesphere.py sp_password.py space2comment.py space2dash.py space2hash.py space2morehash.py space2mssqlblank.py space2mssqlhash.py space2mysqlblank.py space2mysqldash.py space2plus.py space2randomblank.py symboliclogical.py unionalltounion.py unmagicquotes.py uppercase.py varnish.py versionedkeywords.py versionedmorekeywords.py xforwardedfor.py

開啟每個指令碼,可以看到這些指令碼的適用條件和環境,可以參考以下文章:
參考:http://blog.csdn.net/qq_29277155/article/details/51193071

6.sqlmap/thirdparty目錄
這個是sqlmap的第三方外掛,實現各種優化格式的小功能。

(1) ansistrm 該資料夾中主要檔案是ansistrm.py,它定義了結果輸出終端的顏色顯示。
(2) beautifulsoup #該資料夾中主要檔案是beautifulsoup.py,它把XML等轉化為樹狀表示法,用於爬取目標站點,引數為--crawl。
(3) bottle 是Python的一個快速,簡單和輕巧的WSGI微Web框架。它作為單個檔案模組,不依賴其他Python標準庫。主要檔案是bottle.py,它是構建靜態和動態HTTP請求的關鍵所在,雖然支援Python3,但是由於sqlmap整體是採用python2開發的,所以這裡會進行一個相容性檢查。
(4) chardet 該資料夾中有眾多字元探針和字元定義檔案,主要作用是探測web頁面的頁面編碼。
(5) clientform 該資料夾主要檔案是clientform.py,它對Web客戶端進行HTML表格處理。
(6) colorama 該資料夾裡面的檔案其主要功能是為了將ansi轉化為win32編碼。
(7) fcrypt 該資料夾主要為標準的Linux加密提供埠,或者說是修復缺失加密功能的Python版本,用於破解通用密碼雜湊值,引數為--passwords
(8) gprof2dot #該資料夾裡面的檔案主要提供了從幾個解析器的輸出中產生一個dot 圖形,
(9) keepalive #該資料夾裡面的檔案是keepalive.py,它的urllib2對HTTP處理程式支援HTTP1.1和存活,keepalive用於持久的HTTP(s)請求,引數為--keep-alive和-o
(10) magic #該資料夾主要裡面的檔案是magic.py,magic 是一個libmagic檔案識別庫的包裝器,用於識別和顯示日誌訊息中的檔案型別,引數為--file-write
(11) multipart 該資料夾裡面的檔案是multipartpost.py,進行多執行緒傳送資料包。
(12) odict 該資料夾裡面的檔案是odict.py,為有序字典物件,儲存插入順序的金鑰。
(13) oset Python ABC類的部分補丁,pyoset.py為主要程式,_abc.py為輔助類的ABC類說明,oset用於對所提供的排序目標進行排序,引數-l,-m和-g
(14) prettyprint 該資料夾裡面主要的檔案是prettyprint.py,該指令碼優化終端結果輸出顯示,用於生成xml輸出,引數為 --xml
(15) pydes Python中3DES加密解密演算法,其中裡面有加密解密演算法說明,用於破解Oracle舊密碼格式,引數為 --passwords
(16) socks Python中的sock模組
(17) termcolor 該資料夾裡面檔案是termcolor.py,它實現了終端輸出的顏色格式化。
(18) wininetpton 網路地址
(19) xdot dot格式的視覺化圖形,用於內部測試
(20) six 這裡是空資料夾(__init__.py 都不算在內)

7.sqlmap/data目錄
新版的sqlmap新建了一個目錄為data,將部分資料夾元件移動到此目錄下面
(1) html 該資料夾裡面含有一個index.html檔案,開啟發現是關於sqlmap的Option配置的頁面,但是功能不多,也發點選其他功能選項,待實際使用中挖掘
(2) procs 該資料夾下面存放的是關於儲存程式訪問的檔案,具體有4中資料庫型別,如下:
mssqlserver 訪問MSSQLServer處理的程式,方便對資料進行訪問
mysql 訪問MySQL處理的程式,方便對資料進行訪問
oracle 訪問Oracle處理的程式,方便對資料進行訪問
postgresql 訪問Postgresql處理的程式,方便對資料進行訪問
(3) shell 該資料夾下有兩個資料夾分別是backdoors和stagers,具體如下:
backdoors 後門檔案backdoor.asp_ , backdoor_aspx , backdoor.jsp_ , backdoor.php_ , 程式碼經過加密cloak.py可以對輸入檔案進行加密,例如:cloak.py -i backdoor.php -o backdoor2.php ,backdoor.php為明文PHP程式碼檔案,經過cloak.py 轉換後,backdoor2.php 為亂碼檔案
stagers 包含stager.asp_ , stager.aspx_ , stager.jsp_ 和stager.php_檔案
(4) txt 該資料夾裡面存放的都是字典檔案,其中會包含關鍵詞,公共列表和其他字典 ,具體含有如下字典檔案:
common-columns.txt 資料庫中的共同列
common-files.txt 資料庫中的共同檔案路徑
common-outputs.txt 資料庫中的共同輸出。
common-tables.txt #資料庫中的共同表。
keywords.txt 資料庫中的共同關鍵詞。
smalldict.txt 資料庫中的字典。
user-agents.txt 進行請求時的瀏覽器代理頭。
wordlist.tx_ 字典壓縮檔案,這裡從官方下載下來就是這樣的,如果自己要看,需要自己將字尾改成zip格式檢視
(5) udf 該資料夾裡面主要存放的是提權工具,具體如下:
mysql 包括Linux和Windows的lib_mysqludf_sys.dll_ 32和64位都有
postgresql 包括Linux和Windows的lib_mysqludf_sys.dll_ 32和64位都有
(6) xml 該資料夾裡面主要是做資訊記錄的,裡面含有如下檔案:
banner 各種資料及其相關資料的標誌XML記錄,例如:cookie.xml , generic.xml , mssql.xml , mysql.xml , oracle.xml , postgresql.xml , servlet.xml , sharepoint.xml , x-aspnet-version.xml , x-powered-by.xml
payloads 布林,錯誤,內聯查詢,堆疊查詢,延時盲注和聯合查詢6種注入型別的攻擊注入檢測載荷
boundaries.xml 邊界記錄檔案
errors.xml 錯誤顯示的XML檔案
queries.xml 查詢記錄的XML檔案

 

相關文章