cereal
一、靶机介绍
靶机地址:https://download.vulnhub.com/cereal/Cereal.ova
攻击方法:
- 主机发现
- 端口扫描
- 信息搜集
- 路径枚举
- 密码爆破
- 域名解析
- 匿名FTP
- 子域名爆破
- 源代码审计
- 反序列化漏洞
- 进程监视
- 本地提权
二、主机发现
arp-scan -l |
发现靶机地址为192.168.43.154
三、端口扫描
nmap -p- 192.168.43.154 |
发现这个靶机开放的端口较多
nmap -p21,22,80,139,445,3306,11111,22222,22223,33333,44441,44444,55551,55555 -sC -sV 192.168.43.154 |
进一步进行扫描,在这里发现21端口可以匿名登录
44441和80端口一样,都是http服务,
3306不允许攻击机连接,其他11111什么的nmap扫描信息都是tcpwrapped,就是有防火墙拦截,利用不上
四、ftp匿名登录
nmap扫描得知ftp可以匿名登录
ftp 192.168.43.154 |
发现登录上后没有用什么有用的信息
五、WEB页面信息搜集
5.1、disearch扫描
dirsearch -u "http://192.168.43.154" |
先默认扫描一下,发现存在几个目录
发现bolg下有提示信息,大概内容是域名 cereal.ctf这个域名,存在备份文件
也告诉了我们这个网站使用Wordpress搭建的
5.2、域名解析
将域名和靶机绑定一下
使用域名访问网站,发现是一个新的页面,但是并没有什么有用的信息
5.3、wpscan扫描
wpscan就是扫描Wordprss漏洞的黑盒子扫描器
wpscan --url http://192.168.43.154/blog/ --ignore-main-redirect --force -e --plugins-detection aggressive |
这里扫描到的唯一信息就是告诉了用户名就是cereal,没有什么其他有用信息了
5.4、dirbuster扫描
dirbuster也是一个目录扫描工具,就单纯记录一下,
可以指定字典,线程数等
5.5、44441端口扫描
gobuster dir -u "http://cereal.ctf:44441/" -w /usr/share/wordlists/dirb/big.txt -x |
并没有什么有用的信息
5.6、gobuster扫描扩展
常规文件扫描 |
5.7、gobuster子域名爆破
使用DNS那个参数扫描太慢了,而且我跑到最后也没跑出来,于是使用了vhost这个参数
gobuster vhost -u http://cereal.ctf:44441 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt --append-domain --timeout 60s --random-agent -q | grep "Status: 200" |
爆破出来的子域名是secure.cereal.ctf
将子域名绑定一下
六、反序列化漏洞
将子域名绑定后,访问,看到一个ping的页面,我刚看到这个页面的时候,以为直接是个rce漏洞可以利用呢
查看源代码,发现是个反序列化漏洞
抓包查看一下
将请求内容url解码一下,发现格式就是反序列化格式
七、ffuf目录扫描
本来使用的gobuster扫描的,但是字典太大了半天不动一下,速度太慢了,于是换成ffuf
ffuf -c -w /usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-big.txt -u http://secure.cereal.ctf:44441/FUZZ |
扫了差不多10分钟,才扫到备份目录back_en
对目录继续进行扫描,发现文件
dirsearch -u "http://secure.cereal.ctf:44441/back_en" |
点进去一看,页面有点混乱
查看一下源代码,找的了序列化的源代码
这个类具有三个属性 ipAddress 来自请求正文, isValid 确定输入是否有效以及随后发送的输出。默认情况下,isValid 的值为 False,因此从浏览器发送请求时,它都会进入 if 块。该块检查该值是否为 IP 地址。因此,当我们尝试注入命令时,它拒绝了输入,所以,如果我们在请求中发送值 True,则根本不会执行 if 块。然后,它会直接调用 ping 方法。PHP 的 shell_exec 函数,这个函数允许在服务器中执行命令。所以在这里写入反弹 shell:
对应payload php代码
|
php a.php |
将生成的payload请求,发送到,反弹shell
八、提权
靶机没有python环境
SHELL=bash script -q /dev/null # 升级一下终端 |
发现只有一个用户rocky
8.1、pspy进程监视
GitHub - DominicBreuker/pspy:在没有 root 权限的情况下监控 Linux 进程
将软件传到靶机中
nc -lvnp 4444 > pspy64 |
这个有定时任务的话,会一直刷新出来新的东西
等了一会才能看到,发现存在一个shell脚本
发现有读取权限,
cat /usr/share/scripts/chown.sh |
脚本内容大概是:
是将 /home/rocky/public_html/*
目录下的所有文件所有者更改为当前用户,猜测若在该目录下创建一个 passwd 文件的链接文件,会导致脚本执行时将 passwd 文件的所有者一并更改为当前用户,从而获取对 passwd 文件的写入权限。
ln -s /etc/passwd /home/rocky/public_html/passwd # 软链接建立 |
vim直接编辑的话,由于交换界面是反弹shell得到的,所以会乱码,直接使用echo写入比较省事
写入后,直接su一下就可以了,这里新用户我没写密码
参考:
Vulnhub 靶场 CEREAL: 1 - sainet - 博客园 (cnblogs.com)
[【Vulnhub 靶场】【CEREAL: 1】【困难】【20210529】 - “!+/((“^”~{`{|” - 博客园 (cnblogs.com)](https://www.cnblogs.com/NGC-2237/p/17863557.html)