VulnHub靶機-Billu_b0x | 紅隊打靶
一、主機發現
arp-scan -l

那么
靶機ip:192.168.166.141
kali的ip:192.168.166.128
二、信息收集
靶機開放的端口,端口運行的服務以及操作系統類型檢測
nmap -sT -O -sV -p- 192.168.166.141

22,80端口開放,22是ssh服務,80是http服務,操作系統探測是Linux 3.2-4.9。
使用瀏覽器對80端口進行查看

一個簡單的頁面,但是有兩個輸入框并且進行說,請展示你的sql技巧,很明顯,這里有sql注入漏洞,但是兩邊都輸入' or 1=1#(萬能密碼),發現沒有什么用處

先進行一個目錄爆破
對80端口進行目錄爆破
dirsearch -u http://192.168.166.141/

發現了很多的目錄,那么這里對一些目錄進行訪問
/add.php

像是一個文件上傳的點
/c

沒有信息
/in

一個phpinfo(),但是最下面暴露了其路徑/var/www/in.php
/phpmy

phpmyadmin的登錄后臺,使用弱口令,root/admin,發現登錄不進去
既然有phpmy的路徑,那么去對這個路徑及逆行爆破,看是否有文件配置信息
dirsearch -u http://192.168.166.141/phpmy/

其中,發現有/phpmy/config.inc和/phpmy/config.inc.php文件
/test.php

提示file為空,那么猜測這里可能有文件包含
三、web滲透
攻擊路線一:通過文件包含進行滲透,獲取賬號密碼
信息收集中,有幾個值得注意的路徑,/test.php,/phpmy,/add.php
/test.php中可能存在文件包含,那么先對其進行探測,/test.php中提到file為空,那么在url中添加一個file變量,數值為../../../../../etc/passwd

發現沒有回顯信息和剛才一樣
更換http的提交方式,使用burp的攔截功能,將數據包發送到repeater模塊

右鍵change request method,更改提交方式

發現返回了/etc/passwd的內容,

因為路徑爆破的過程中有發現一些目錄或者文件,那么利用這里的文件包含進行讀取
in.php(前面訪問in路徑的時候暴露出來的文件名稱)

發現返回的并不是phpinfo頁面,而是源代碼,那么這里應該不是文件包含漏洞,應該是任意文件下載漏洞
文件包含是將文件的內容解析加載出來,而任意文件下載是將文件源代碼展示出來
當訪問到c.php的時候,發現有數據庫的賬號密碼泄露

使用賬號密碼可以登錄phpmy的后臺

在后臺ica_lab表中的auto中,發現另外一個賬號密碼,猜測應該是index.php的sql技巧那里的,因為這個數據庫是為這個頁面進行數據存儲的

使用文件任意下載進行查看phpmy的配置文件,/phpmy/config.inc.php文件(/phpmy/config.inc查看表示沒有該文件)

在配置文件中,又發現了賬號密碼
嘗試使用該賬號密碼登錄phpmy

發現登錄不進去,從前面的信息收集中,除了22端口之外,沒有可以登錄的地方了(80端口的默認面的賬號密碼在數據庫中看到了,如果80端口的默認頁面有這個賬號密碼,應該數據庫中看得到)
使用ssh登錄
ssh root@192.168.166.141

發現直接得到了root賬號的權限(路線一就是這樣子)
攻擊路線二:sql注入,文件上傳,文件包含
路線二中,先看sql注入
sql注入有三種方法可以直接登錄
1、利用上面的任意文件下載漏洞,查看到phpmy的賬號密碼,登錄phpmy之后auto中看到的賬號密碼可以登錄


2、使用任意文件下載讀取index.php的源碼,構造萬能密碼登錄

sql語句
$uname=str_replace(''','',urldecode($POST['un']));$pass=str_replace(''','',urldecode($POST['ps']));$run='select * from auth where pass=''.$pass.'' and uname=''.$uname.''';
可以構造萬能密碼 :
username填 ' or 1=1#
password 填 \'
SQL語句變成了'select * from auth where pass=‘ ’ and uname=‘ or 1=1#
3、使用sql注入的一些萬能密碼的payload結合burp進行注入
因為這個過程需要用到很多的payload,直接顯示找到了萬能密碼的payload文件
seclists中的sql的payload文件,/usr/share/seclists/Fuzzing/SQLi/Generic-SQLi.txt(對應username)
burp專業版中自帶的針對SQL注入的字典(對應password)
使用以上的三種方法可以直接登錄,登錄成功,跳轉到panel.php,如果沒有登陸,直接訪問panel.php,會跳回index.php

來到panel.php
這里可以展示用戶

還可以添加用戶,添加用戶這里可以上傳圖片,但是看到這個上傳的感覺很熟悉,和前面的add.php一樣

猜測添加用戶這里調用了add.php

先進行添加用戶
上傳一個php的一句話木馬,shell.php,只允許jpg,png,gif的圖片格式上傳

將一句話木馬更改為jpg格式,通過burp,更改Content-Type和文件頭

上傳成功

查看賬戶,確實多了aa這個賬戶

訪問shell.jpg并且通過cmd傳入id這個值,發現沒有信息顯示,那么shell.jpg沒有被解析成PHP代碼并執行

前面看到添加用戶那里,可能調用add.php這個文件,那么抓取添加文件的數據包,發現通過post方式傳入了一個add的數值,嘗試一下這里是否有文件包含

將add換成in.php(in.php這里為phpinfo的頁面)看是否會回顯phpinfo的頁面

發現返回了phpinfo的頁面
嘗試是否有遠程包含,直接包含它存在的圖片,沒有返回圖片信息,那么應該不存在遠程包含

這里是否可以將文件解析成PHP代碼并執行,將上傳的一句話的木馬的地址更換這個地方,并傳入id這個數值

發現沒有返回id這個命令執行后的信息,那么這里是不是不允許傳入參數,但是有執行這個文件呢
上傳一個反彈shell(仍然以圖片格式上傳)


添加成功
利用文件包含,嘗試一下是否有執行(監聽1234端口)

成功獲取初始shell

四、提權
攻擊路線二的提權
python -c 'import pty;pty.spawn("/bin/bash")' 提高shell的交互性

輸入uname -a

發現linux版本很低
searchsploit 3.13.0

發現有內核提權腳本,將腳本下載到傳輸到靶機上(記得尋找一個有權限的目錄,如tmp)

gcc 37292.c -o exp 編譯

運行exp(有警告和報錯是正常的)

獲得root權限