使用sqlmap對進行php+mysql注入實戰

做者:陳小兵
通常來說一旦網站存在sql注入漏洞,經過sql注入漏洞輕者能夠獲取數據,嚴重的將獲取webshell以及服務器權限,但在實際漏洞利用和測試過程當中,也可能由於服務器配置等狀況致使沒法獲取權限。php

1.1php注入點的發現及掃描html

1.使用漏洞掃描工具進行漏洞掃描mysql

    將目標url地址放在wvs中進行漏洞掃描,如圖1所示,掃描結果顯示存在SQL盲注和SQL注入,其漏洞存在的參數爲同一頁面。web

 

image.png

圖1使用wvs掃描目標網站sql

 

2.使用sqlmap工具對注入點進行漏洞驗證shell

   如圖2所示,使用sqlmap注入檢查命令進行驗證:數據庫

image.png

   驗證結果顯示該url確實存在sql注入漏洞,且數據庫爲mysql。apache

 

image.png

 

圖2使用sqlmap工具對注入點進行漏洞驗證瀏覽器

1.2使用sqlmap進行sql注入測試安全

1.sql注入payload

   如圖3所示,經過sqlmap或者該注入點存在boolean-based blind、 AND/OR time-based blind 、UNION query三種類型漏洞,跟wvs掃描結果一致。sqlmap漏洞測試完畢後會自動給出相應的payload,例如對第一個能夠在瀏覽器中進行測試:

image.png

image.png

 

圖3 sql注入payload

 

2.獲取當前數據庫名稱

 

image.png

獲取當前數據庫爲xbase,如圖4所示。

 

image.png

 

圖4獲取當前數據庫名稱

 

3.獲取當前用戶

image.png

命令直接獲取當前數據庫帳號爲root@localhost,如圖5所示。

image.png

圖5獲取當前數據庫用戶帳號

 

4.查看數據庫用戶及密碼

   因爲本例注入點是mysql root帳號,所以能夠經過sqlmap命令來查看數據庫用戶(–users)及數據庫密碼(–password),如圖6所示,執行命令以下:

image.png

image.png

圖6查看數據庫用戶及密碼

 

5.破解並獲取數據庫明文密碼

 

(1)在線破解並整理數據庫密碼

   將密碼哈希值去掉前面的「*」號,將其複製到www.cmd5.com及somd5.com進行破解,注意該值須要選擇密碼類型mysql5,整理查詢結果以下所示:

image.png

(2)還能夠經過–sql-shell直接查詢數據庫用戶及密碼

image.png

   執行上面命令後,經過查詢命令來獲取密碼,如圖7所示:

image.pngimage.png

圖7查詢mysql數據庫host、user及密碼

 

(3)對服務器端口進行掃描

masscan -p 3306 114.**.***.***

若是開放數據庫端口,則能夠直接進行鏈接,掃描結果顯示僅僅開放80端口。

 

6.一些經常使用的sqlmap命令總結

image.png

1.3php網站webshell獲取

image.png

(4)後臺文件上傳漏洞利用及獲取

   經過注入點獲取管理員密碼及後臺地址,登陸後臺尋找上傳地址及上傳漏洞來獲取webshell。

(5)文件包含漏洞來獲取webshell

2.直接獲取webshell失敗

   對於root帳號而言,通常狀況均可以經過–os-shell命令來獲取webshell,如圖8所示,執行命令後,並未獲取shell。

 

image.png

 

圖8獲取shell失敗

 

3.獲取真實物理路徑

   經過測試,在網站根目錄下發現存在phpinfo頁面,如圖9所示,在該頁面中能夠看到數據庫爲內網IP地址192.168.77.88,真實物理路徑爲/usr/local/apache/htdocs

 

image.png

 

圖9獲取網站正式路徑

 

4.寫入文件測試

   知道物理路徑,能夠經過sqlmap進行文件讀取和寫入命令,執行命令:

sqlmap.py -u http://www.***.com.cn/happystudy/happystudy_info.php?idnow=34 –file-write=」C:\tools\sqlmap\1.php」  –file-dest=」/usr/local/apache/htdocs/happystudy/shell.php」

   如圖10所示,sqlmap執行命令成功,經過url對文件進行訪問測試,頁面不存在。

 

image.png

 

圖10寫入文件測試

 

5.本地搭建環境測試寫入文件

   前面寫入文件執行成功,懷疑是命令有問題,所以在本地搭建環境進行測試,測試命令爲:

sqlmap.py -d mysql://root:123456@172.17.26.16:3306/mysql  –file-write=」C:\tools\sqlmap\1.php」  –file-dest=」C:\ComsenzEXP\wwwroot\shell.php」

   結果在C:\ComsenzEXP\wwwroot\目錄下成功寫入shell.php文件,爲此分析緣由可能爲:

(1)該目錄無寫入權限

(2)magic_quotes_gpc值爲on

6.嘗試general_log文件獲取webshell方法

(1)查看genera文件配置狀況

image.png

(2)關閉general_log

image.png

(3)經過general_log選項來獲取webshell

image.png

   因爲以上命令須要在mysql客戶端命令行或者phpmyadmin中進行執行,本案例中不具有,經過–sql-shell以及–sql-query命令均未能實現。

7.使用pangolin工具進行導出webshell

   如圖11所示,經過pangolin對該sql注入地址進行測試,嘗試將webshell導出到網站根目錄/usr/local/apache/htdocs/xxx.php文件,結果顯示跟前面的分析狀況一致。

 

image.png

 

圖11使用pangolin工具進行導出webshell失敗

 

8.讀取文件測試

(1)讀取文件

   如圖12所示,依次執行命令,分別讀取/etc/passwd、/usr/local/apache/htdocs/index.php等文件

 

sqlmap.py -u http://www.***.com.cn/happystudy/happystudy_info.php?idnow=34 –file-read=」/usr/local/apache/htdocs/index.php」[/align]

[align=left]sqlmap.py -u http://www.***.com.cn/happystudy/happystudy_info.php?idnow=34 –file-read=」/etc/passwd」  [/align]

[align=left]

 

image.png

圖12讀取系統文件及其餘文件

 

(2)獲取數據庫密碼

sqlmap會將獲取的文件自動保存到當前系統用戶下C:\Users\john\.sqlmap\output\www.****.com.cn\files,如圖13所示,讀取conn.php文件的內容,成功獲取數據庫root帳號密碼。

 

image.png

 

圖13讀取源代碼獲取root密碼

1.4艱難的後臺地址獲取

1.使用havij對後臺進行掃描

   如圖14所示,經過havij等工具對目標後臺地址進行獲取,在本例中獲取的是普通用戶的登陸地址,未獲取真正的後臺地址。

 

image.png

圖14使用havij對後臺地址進行掃描

 

2.經過google成功獲取後臺地址

   後面使用百度對該url地址進行查詢「site:somesite.com 後臺管理」未能獲取相關信息,但在google中成功獲取其後臺地址,如圖15所示。有時候google黑客技術仍是挺管用的。從url中能夠看到該管理地址很難掃描獲取。

 

image.png

 

圖15成功獲取後臺管理地址

 

3.獲取真正的管理表

   經過sqlmap對該數據庫中全部的表進行查詢,發現存在多個涉及密碼的表,admin、admin_files、admin_groups、tb_admin,依次進行和密碼破解,將其進行後臺登錄,均爲成功登陸。後面經過讀取登陸地址的源代碼成功獲取,其真正的管理員表爲tygb,如圖16所示,經過sql-shell進行查詢:select * from tygb

 

image.png

圖16獲取真正的管理表

 

4.登陸後臺管理

   如圖17所示,登陸成功後,能夠看到其cms系統存在多個系統,對每一個管理入口進行查看和測試,雖然某些模塊存在上傳,通過測試,無寫入權限。

 

image.png

圖17登陸後臺進行管理

 

5.fckeditor漏洞驗證

   在後臺中發現其使用了fckeditor編輯器,成功找到其fckeditor編輯器文件測試頁面,並對其進行測試,如圖18,有無文件權限問題,該漏洞沒法利用。

image.png

image.png

 

圖18文件上傳漏洞沒法利用

 

6.網站旁註漏洞利用失敗

    後面對該目標網站進行同IP地址域名反查,發現該IP下存在多個域名,經過仔細的核對,發現前面的sql注入點能夠讀取其數據庫,經過獲取後臺密碼,成功進入後臺,但也無用,系統存在錯誤,fckeditor沒法上傳文件,也沒法寫入文件。

 

1.5php網站sql注入防護及總結

1.滲透總結

(1)本次滲透主要在於對mysql+php架構下sql注入點注入漏洞sqlmap的利用

(2)利用sqlmap的文件讀取和寫入功能寫入webshell

(3)有些狀況下即便存在漏洞,也可能沒法獲取webshell

 

2.php網站sql注入防護

(1)過濾一些常見的數據庫操做關鍵字,例如對select ,insert,update,delete,and,*等或經過系統函數addslashes對內容進行過濾。

(2)php配置文件php.ini中register_globals=off;設置爲關閉狀態

(3)對於sql語句加以封裝,避免直接暴漏SQL語句

(4)開啓PHP安全模式safe_mode=on

(5)打開magic_quotes_gpc來防止SQL注入,默認爲關閉,開啓後自動把用戶提交sql查詢語句進行轉換把」‘」轉換成」\’」

(6)控制錯誤信息輸出,關閉錯誤信息提示,將錯誤信息寫到系統日誌。

(7)網站安裝waf防禦軟件

有問題你們能夠留言哦,也歡迎你們到春秋論壇中來耍一耍  >>>點擊跳轉

相關文章
相關標籤/搜索