文章出處

場景介紹:         今天的場景是前一周在內網滲透的時候遇到過的,找到一個mysql數據庫弱口令。     賬號和密碼分別是root,也就是mysql中的dba。     這里其實權限很大了,首先mysql的root用戶具有文件寫權限,同時mysql5.0以上,提供一個system函數,而這個函數通常被攻擊者用作shell的接口。     那時在遇到這個弱口令時,我就在想怎樣快速的拿下這臺主機,通過mysql的root賬號。是否有比較快速的方法,這時候,我當然想到了sqlmap。經過查詢github上的文檔,我發現了這樣的參數。     下面,讓我們一起來學習一下這個場景吧!環境:     兩臺機器,一臺是kali linux,作為mysql服務器,開放ssh服務以及mysql服務,ip地址為192.168.80.128。                     另外一臺是ubuntu,作為攻擊主機,安裝有nmap、sqlmap,ip地址為192.168.80.129。1、首先我們對nmap掃描一下常見端口,命令如下:nmap -A -n -T3 192.168.80.128掃描結果如下圖:

2、第二步主要是通過爆破工具發現了mysql的弱口令,這一步忽略了。3、現在來講主要內容,我們獲得mysql的root賬號和密碼之后怎樣利用1)我們先來看一下github上的sqlmap文檔(ClickMe)

     我們可以看到這是一個"-d"選項,用法在For example有     整一個的語法為:" DBMS://USER:PASSWORD@DBMS_IP:DBMS_PORT/DATABASE_NAME"或者是" DBMS://DATABASE_FILEPATH"。     [1]DBMS:代表所使用的數據庫,如我們這里是mysql     [2]USER:對應我們數據庫的用戶,如我們這里是root     [3]PASSWORD:對應我們數據的密碼,如我的服務器為3erver     [4]DBMA_IP:數據庫服務器對應的ip地址,如我這里為192.168.80.128     [5]DBMS_PORT:數據服務器所使用的端口,不能省略。默認我們寫3306     [6]DATABASE_NAME:你要使用的數據庫名,因為mysql一般會有test數據庫,如我這里使用test。假如沒有test,我們可以自己使用create database test;創建一個2)下面我們開始利用,服務器上我首先以root身份運行mysql數據庫。看看會發生什么事情。在Mysql中,以什么身份運行數據庫,會在/etc/mysql/my.cnf這個配置文件設置。所以下面我將用戶mysqld節點中的user修改為root。如下圖:

我們通過查看進程,可以看到在服務啟動的時候,mysqld已經帶上--user=root這個選項了。 

3)現在我開始根據sqlmap的選項在kali里面對mysql服務器進行連接。sqlmap -d "mysql://root:3erver@192.168.80.128:3306/test" -f

上面-f參數是打印mysql服務器的版本信息。如下圖

我們之后將-f參數更換成--os-shell參數

之后sqlmap會讓我們選擇服務器的位數,要是你不知道就猜一個,反正兩個選項,不是32位就是64位。

我這里選擇64位,然后系統就會替我們上傳對應位數的動態鏈接庫文件,這個文件提供system函數以便我們可以執行系統命令。如圖,

當我們輸入whoami命令時候,系統會詢問我們是否返回命令的輸出。我們這里選擇"a",代表總是返回命令的輸出。可以看到這里可以獲取到權限與我們運行mysql服務器用戶權限一致。也就是說我們這里獲取root權限所有,比如查看/etc/passwd,nc反彈shell、添加用戶等。ifconfig信息:

查看/etc/passwd文件,

nc反彈shell(1)執行nc,在Mysql服務器上2333端口進行監聽。


(2)我們查看我們攻擊機的ip,可以看到的確是192.168.80.129。我們使用ncat 192.168.80.128 2333 來進行連接反彈shell。

(4)到這里,我們已經將怎樣快速利用一個mysql的root賬號來獲取系統權限的過程演示完畢。4、局限性是什么?(1)我們這里提到過,運行mysql的用戶需要是root賬號。因為這里整個利用流程是這樣的[1]sqlmap通過root的賬號和密碼連接上遠程的數據庫[2]sqlmap將udf文件夾下對應系統平臺的64位或者32位的動態鏈接庫文件上傳到遠程數據庫的/usr/lib/mysql/plugin/目錄下[3]sqlmap用過已經上傳的動態鏈接庫文件來調用system函數來執行用戶輸入的命令。(2)在上面提到,我們要將動態鏈接庫傳到/usr/lib/mysql/plugin/目錄下,但是這個目錄只有root賬號具有寫權限。也就是說,要是運行mysqld的用戶不是root,那么我們便無法通過這種方法來執行系統命令。(3)一般windows上的mysql root賬號能執行系統命令的比較多,因為需要專門建立一個非管理員權限的用戶去運行mysql,所以有一部分系統管理員將mysql運行在管理員權限的賬號上,這個時候我們將獲取到它的權限。5、防御策略(1)linux的最小權限原則,不要給mysql數據的plugin文件夾賦予寫權限,即使賦予了也要限制好擁有權限的用戶。我們可以登入數據庫之后,使用select @@plugin_dir;來查看plugin的目錄,如下圖,是我在windows上獲取到的plugin_dir

(2)最好只讓root在localhost上運行,而能夠遠程訪問的數據庫用戶只分配增刪改查等權限,不要分配FILE權限。6、這一篇文章是根據場景模式來寫的,然后介紹工具以及利用方法。

就愛閱讀www.92to.com網友整理上傳,為您提供最全的知識大全,期待您的分享,轉載請注明出處。
歡迎轉載:http://www.kanwencang.com/bangong/20161116/56059.html

文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()