據(jù)庫接管工具的安裝與實戰(zhàn)入門)
sqlmap 使用指南自動化 SQL 注入檢測與數(shù)據(jù)庫接管工具的安裝與實戰(zhàn)入門【免費下載鏈接】sqlmapAutomatic SQL injection and database takeover tool項目地址: https://gitcode.com/gh_mirrors/sq/sqlmapsqlmap 是一款開源的滲透測試工具用于自動化檢測與利用 SQL 注入漏洞并進(jìn)一步接管數(shù)據(jù)庫服務(wù)器。本文以倉庫內(nèi) 荷蘭語版官方 README 為骨架完整覆蓋其安裝與基礎(chǔ)用法并結(jié)合倉庫源碼入口、參數(shù)解析、檢測引擎、DBMS 插件層深入講解其工作原理幫助讀者快速上手并理解其內(nèi)部機(jī)制。sqlmap 是什么不止于檢測更在于接管根據(jù)項目官方 README見 英文原版 與 荷蘭語翻譯的定義sqlmap 是一個開源滲透測試工具其核心使命有二自動化檢測與利用 SQL 注入漏洞SQL injection flaws接管數(shù)據(jù)庫服務(wù)器taking over of database servers。為此它配備了一個強(qiáng)大的檢測引擎以及面向?qū)I(yè)滲透測試者的諸多細(xì)分功能原文用 niche-functions 描述并提供覆蓋面極廣的命令行開關(guān)switches包括但不限于數(shù)據(jù)庫指紋識別database fingerprinting識別后端數(shù)據(jù)庫類型與版本從數(shù)據(jù)庫中提取數(shù)據(jù)data fetching枚舉數(shù)據(jù)庫、表、字段并導(dǎo)出記錄訪問底層文件系統(tǒng)file system access讀寫目標(biāo)主機(jī)上的文件通過帶外連接在操作系統(tǒng)上執(zhí)行命令executing commands via out-of-band connections例如--os-shell、--os-cmd。這些能力在倉庫中都有對應(yīng)的實體模塊并非空泛宣傳文件系統(tǒng)與系統(tǒng)命令執(zhí)行由 lib/takeover/ 實現(xiàn)含 shell、UDF、注冊表、Metasploit、xp_cmdshell 等接管手段數(shù)據(jù)提取與枚舉由 lib/controller/action.py 統(tǒng)一調(diào)度。若想從宏觀上理解各模塊如何協(xié)作推薦閱讀倉庫自帶的 架構(gòu)文檔它按入口點 → 全局狀態(tài) → 掃描生命周期 → 數(shù)據(jù)驅(qū)動檢測引擎 → 利用技術(shù) → DBMS 抽象 → 會話與輸出的順序完整刻畫了本項目。獲取與安裝三種方式與運行環(huán)境要求方式一下載打包歸檔README 提供兩種官方打包格式均可直接從當(dāng)前倉庫根目錄獲得對應(yīng)文件的最新版本tarball.tar.gz包含全部源碼與資源zipball.zipWindows 環(huán)境下解壓更方便。下載解壓后即可直接運行無需編譯。方式二通過 Git 克隆倉庫推薦README 明確推薦使用 Git 克隆的方式獲取且可使用--depth 1淺克隆以加快下載git clone --depth 1 https://gitcode.com/gh_mirrors/sq/sqlmap.git sqlmap-dev克隆完成后倉庫根目錄下的 sqlmap.py 就是命令行主入口。運行環(huán)境要求README 明確說明sqlmap開箱即用works out of the box支持Python 2.7 與 3.x兩個版本系列可在任何平臺上運行。當(dāng)前倉庫 lib/core/settings.py 中聲明的版本號為1.10.9.6。值得留意的是sqlmap.py 啟動時的第一個非標(biāo)準(zhǔn)庫導(dǎo)入就是lib.utils.versioncheck若導(dǎo)入失敗會直接報錯 wrong installation detected (missing modules)——這正是開箱即用原則在代碼層面的落實所有第三方依賴six、bottle、chardet、colorama 等都內(nèi)置于 thirdparty/運行時不依賴 pip 安裝任何外部包因此克隆或解壓后即可運行??焖偕鲜?h與-hh兩級幫助體系README 給出的第一個使用步驟是查看幫助信息# 查看基礎(chǔ)選項與開關(guān) python sqlmap.py -h # 查看全部選項與開關(guān)含高級/進(jìn)階用法 python sqlmap.py -hh兩級幫助的差異正是 sqlmap 功能深度的直接體現(xiàn)-h基礎(chǔ)幫助列出最常用的目標(biāo)設(shè)置、請求配置、注入檢測、枚舉等核心選項-hh高級幫助展開全部選項包括優(yōu)化、WAF 繞過、文件系統(tǒng)訪問、系統(tǒng)命令執(zhí)行、Windows 注冊表操作等進(jìn)階開關(guān)。這兩級幫助在代碼中有明確實現(xiàn)在 lib/parse/cmdline.py 中--hh被定義為destadvancedHelp的布爾選項解析后用于決定幫助輸出內(nèi)容的詳盡程度。整個命令行解析基于 Python 標(biāo)準(zhǔn)庫的optparse/argparse代碼做了兼容適配倉庫中可見--crack、--jitter、--debug、--smoke-test、--vuln-test、--api、--taskid、--database等眾多開關(guān)見 cmdline.py 附近。從 sqlmap.py 的main()函數(shù)可以看到完整的啟動流程先打運行時補丁dirtyPatches()、檢查環(huán)境checkEnvironment()、設(shè)置路徑setPaths()、打印橫幅banner()隨后才調(diào)用cmdLineParser()解析命令行參數(shù)并交由initOptions()與init()完成配置合并命令行 配置文件 默認(rèn)值最終進(jìn)入 lib/controller/controller.py 的start()開始掃描。最小可運行的注入檢測示例結(jié)合 sqlmap.conf 中 Target 段的注釋示例一個最基礎(chǔ)的用法是直接指定存在參數(shù)的 URLpython sqlmap.py -u http://192.168.1.121/sqlmap/mysql/get_int.php?id1cat2sqlmap 會自動檢測id、cat兩個參數(shù)是否存在注入點并給出注入類型與可利用性的結(jié)論。README 提到更完整的功能清單、全部開關(guān)說明與帶示例的詳解可參閱官方用戶手冊在本文倉庫內(nèi)則可以從 doc/translations/ 目錄下各語言版本的 README 以及 架構(gòu)文檔 入手繼續(xù)深入。核心能力源碼探秘檢測引擎、注入技術(shù)與 DBMS 支持README 所述強(qiáng)大的檢測引擎與廣泛的開關(guān)在倉庫中有清晰的數(shù)據(jù)驅(qū)動架構(gòu)支撐這里結(jié)合源碼做三點縱深解讀。1. 數(shù)據(jù)驅(qū)動的檢測引擎Detection Engine與常見硬編碼注入邏輯的工具不同sqlmap 的檢測行為定義在數(shù)據(jù)文件而非代碼中。XML 數(shù)據(jù)位于 data/xml/data/xml/boundaries.xml定義注入邊界前綴/后綴組合及其適用的上下文如引號型、數(shù)值型參數(shù)data/xml/payloads/按技術(shù)類型分文件存放檢測測試用例包括boolean_blind.xml布爾盲注、error_based.xml報錯注入、inline_query.xml內(nèi)聯(lián)查詢、stacked_queries.xml堆疊查詢、time_blind.xml時間盲注、union_query.xmlUNION 查詢六大類data/xml/queries.xml按數(shù)據(jù)庫類型維護(hù)的查詢模板banner、當(dāng)前用戶、表枚舉等并攜帶各 DBMS 的gadgets有副作用的標(biāo)量表達(dá)式用于無堆疊查詢時執(zhí)行--sql-query、--file-write、--os-cmd。這些 XML 由 lib/parse/payloads.py 的loadBoundaries()/loadPayloads()加載檢測時的真/假判斷由 lib/request/comparison.py 依據(jù)頁面模板比對difflib 相似度閾值完成。這正是powerful detection engine的代碼級含義。2. 廣泛的技術(shù)與攻擊面覆蓋注入技術(shù)引擎位于 lib/techniques/布爾盲注與時間盲注的核心二分法提取在 blind/inference.pyUNION 注入在 union/DNS 帶外數(shù)據(jù)滲出在 dns/非 SQL 注入家族同樣內(nèi)置--nosql、--ssti、--xpath、--ldap、--graphql、--hql、--sparql、--odata、--xslt、--xxe、--jwt等各有獨立掃描器見 lib/techniques/ 下對應(yīng)子目錄響應(yīng)比對與反射剝離等公共邏輯收斂在 lib/utils/nonsql.pyWAF 繞過tamper 腳本倉庫 tamper/ 下內(nèi)置 60 余個載荷變形腳本如space2comment.py、charencode.py、equaltolike.py掃描時通過--tamper組合使用。3. 數(shù)據(jù)庫指紋識別與 DBMS 抽象層README 提到的 database fingerprinting數(shù)據(jù)庫指紋識別由兩層架構(gòu)支撐plugins/generic/ 提供與數(shù)據(jù)庫無關(guān)的基類fingerprint、enumeration、filesystem、takeover 等plugins/dbms/ 下每個受支持的數(shù)據(jù)庫各占一個子目錄繼承通用基類并補充方言差異。從倉庫目錄看目前支持30 種數(shù)據(jù)庫系統(tǒng)包括 MySQL、Oracle、PostgreSQL、Microsoft SQL Server、SQLite、DB2、Informix、Sybase、Access、Firebird、ClickHouse、H2、HSQLDB、MongoDB 相關(guān)族的 NoSQL 變體以及 Snowflake、Spanner、Virtuoso 等現(xiàn)代數(shù)據(jù)庫。指紋識別后lib/controller/handler.py會為當(dāng)前目標(biāo)選定對應(yīng)的conf.dbmsHandler對象后續(xù)所有枚舉操作都由該對象派發(fā)——這就是識別后端 → 接管的自動化閉環(huán)。配置文件sqlmap.conf 與命令行互補除了命令行開關(guān)sqlmap 還支持配置文件方式倉庫根目錄 sqlmap.conf。其結(jié)構(gòu)與命令行參數(shù)一一對應(yīng)按功能分組例如[Target]url目標(biāo) URL、direct直連數(shù)據(jù)庫如mysql://USER:PASSWORDDBMS_IP:DBMS_PORT/DATABASE_NAME、logFile解析 Burp/WebScarab 日志、bulkFile批量目標(biāo)文件、requestFile導(dǎo)入 HTTP 請求文件、googleDork以 Google Dork 獲取目標(biāo)、sessionFile載入歷史會話[Request]method強(qiáng)制 HTTP 方法如 PUT、dataPOST 數(shù)據(jù)串、paramDel參數(shù)分隔符、cookie、cookieDel、liveCookies實時 Cookie 文件后續(xù)還有Optimization、Injection、Detection、Techniques、Fingerprint、Enumeration、File system access、OS、Windows registry、General、Miscellaneous等分組。配置文件的解析實現(xiàn)在 lib/parse/configfile.py命令行參數(shù)與配置文件最終在 lib/core/option.py 中合并為統(tǒng)一的conf全局配置。兩種方式可混用命令行優(yōu)先覆蓋配置文件適合把穩(wěn)定的掃描基線寫入配置、把臨時變量放在命令行。進(jìn)階指引與安全須知斷點續(xù)傳sqlmap 會為每個目標(biāo)在輸出目錄生成 SQLite 會話文件host/session.sqlite重復(fù)掃描會自動復(fù)用已確認(rèn)的注入點與已提取數(shù)據(jù)可用--flush-session清除、--fresh-queries忽略緩存結(jié)果REST API 與庫調(diào)用除命令行外還提供 sqlmapapi.pyREST 服務(wù)端/客戶端以及l(fā)ib/utils/library.py的程序化調(diào)用入口自檢與測試支持--smoke-test、--vuln-test、--api-test等內(nèi)置自測見 lib/core/testing.py完整的離線測試套件位于 tests/合規(guī)提醒sqlmap 啟動時會打印法律免責(zé)聲明legal disclaimer僅限在授權(quán)環(huán)境下用于滲透測試與安全研究請勿用于未獲授權(quán)的系統(tǒng)。最后若需查看更完整的變更歷史與各語言文檔可查閱 doc/CHANGELOG.md版本演進(jìn)、doc/ARCHITECTURE.md架構(gòu)詳解以及 doc/translations/README-zh-CN.md中文版 README等翻譯文檔?!久赓M下載鏈接】sqlmapAutomatic SQL injection and database takeover tool項目地址: https://gitcode.com/gh_mirrors/sq/sqlmap創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考