找回密码
立即注册
搜索
发回帖 发新帖

6738

积分

0

好友

853

主题
发表于 14 小时前 | 查看: 3| 回复: 0

0x00 文章背景

这是一个周五,正好没啥事干,发现群里有条消息,咦,是个靶场来的,看他的介绍似乎有点意思。为了防止涌入太多人我还是码一下,后面大家看到的没打码地址,是我在本地改了 host 来的,懒得一直打码了:

仿真CTF渗透靶机题目描述

那么那么那么,话不多说直接开干。

0x01 信息收集

既然是个仿真靶机,而且还会重置,那么八成是个 Docker 环境,一般扫端口没什么意义。所以我们直接先扫目录,看是否能获取到一些敏感文件。打开页面如下,有个登录功能:

企业官网首页界面截图

不管他,直接先扫描目录。扫描后得到这些内容,我们逐个访问下:

目录扫描结果

settings.php 与 upload.php 在访问后,均跳转至登录页。没有直接报 404,那么推测需要登录后台才能访问:

企业CMS系统登录界面

database.sql 可以直接下载,里面有两个用户的密文,密码是用的 PHP 的 password_hash() 函数进行的加密,这个加密是不可逆的,只能进行碰撞:

SQL文件中的用户密码哈希

0x02 爆破密文

用 cmd5 查了一下这串密文,我焯,是有记录的:

cmd5查询结果提示付费记录

但是……嘻嘻,我没有会员,只能用hashcat爆破了。这里咱们最好是可以获取到密文类型,这样用 hashcat 指定密文类型爆破,速度会更快:

https://www.tunnelsup.com/hash-analyzer/

tunnelsup哈希分析工具截图

啊?居然没识别到,不应该啊,毕竟下面都有:

哈希类型对照表

无所谓哈,其实我知道这是什么类型,在 hashcat wiki 搜一下:

https://hashcat.net/wiki/doku.php?id=example%20hashes

Hashcat示例哈希表

那么编号是 3200,将密文保存到 txt,这是我用的字典:

https://github.com/brannondorsey/naive-hashcat/releases/download/data/rockyou.txt

hashcat 指定密文类型、密文文件以及字典文件,开爆:

Hashcat爆破命令执行

大概爆了几分钟的样子,已经出来了:

Hashcat爆破成功结果

0x03 垂直越权

通过爆破出来的密文,成功登录后台,但是没什么功能:

审计员后台控制面板

这个发布文章也是,没有利用点,目前通篇无 SQL 注入:

文章管理界面

还记得我们之前扫描到的 upload 与 settings 吗?尝试访问一下:

上传页面跳转至登录

还是一样的,重定向到登录页。那说明需要越权,看下 Cookie 里面有没有东西,没有的话,我们就只能抓包再看看参数有没有点可以尝试了:

浏览器中查看Auth Cookie

Auth 里面有一串 Base64 编码后的内容,解码一下看看:

Base64解码审计员角色

我好像已经知道了,我们把它改成 admin 重新 Base64 编码然后替换 Auth 的值:

Base64编码管理员角色

修改Cookie后访问

重新访问 upload.php,直接舒服了捏:

模板上传与图片上传页面

0x04 上传绕过

我们尝试上传一个包含 PHP 代码的 PNG 文件,然后 BP 拦截数据包,重新改回 PHP 后缀,看看能不能直接上去:

BurpSuite拦截上传请求

啊?图片文件不能包含 PHP 代码:

服务器拦截PHP代码提示

这个应该不难,一般情况下,PHP 的常见写法是这样的:

常规PHP代码写法

其实 PHP 有好几种写法,这里应该是检测了 PHP 常规写法的格式:

PHP多种写法示例

我这里用的长标签来尝试,直接传:

<script language="php">
echo date('Y-m-d h:m:s');
</script>

长标签PHP代码写在文件中

BurpSuite拦截到长标签上传

OK 上去了,舒服呀:

文件上传成功提示

没有直接返回路径,查看源代码,发现了提示:

响应源码中的上传路径提示

0x05 获取路径

根据他这个提示,我原本以为格式应该是这样的:

上传路径格式说明

这里我弄了大半个小时没出来,我终于忍不住了:

聊天记录讨论文件名格式

你自己看看这是一个意思吗?那么应该是这样的:

MD5加密规则详解

我现在要传的文件,是 61 字节:

文件属性大小展示

不说了,直接上传,然后基于路径提示进行 MD5 加密:

BurpSuite再次拦截上传请求

在线MD5加密工具计算

取密文前 10 位,然后拼接到日期后面进行访问:

成功访问上传后的PHP文件

接下来,把代码内容换成一句话木马再次上传:

BurpSuite拦截一句话木马上传

连接马子,成功成功,没毛病:

0x06 权限提升

马子已经连上了,不过是 www 权限:

PMeterpreter连接Webshell执行命令

通过搜索发现了 flag,但是没权限读取:

尝试读取flag权限被拒

那就是要提权了,可以看看内核版本,搜一下有没有漏洞。我搜了,内核是没有洞的,那么我们可以搜索一下,看看有没有特权模式的文件,用特权文件来提权:

find / -perm -4000 -type f -exec ls -l {} \;

查找SUID特权文件

上面这些带 S 的文件,都具有 SUID 特权,且文件所有者为 root 用户,那么大概率可以用来提权到 root 权限:

SUID文件列表

这里有一个注意点哈,要执行 /bin/bash 并返回结果,需要用交互式 Shell 才能执行。而目前我们使用的哥斯拉提供的命令执行,只是一个单命令执行的模式,就是你执行一次命令,他返回一次结果,所以目前在哥斯拉中是执行不了 /bin/bash 的:

非交互式Shell执行bash失败

Shell类型对比表

但是,可以利用哥斯拉的RealCmd开启伪交互式Shell:

RealCmd功能配置界面

然后,在本机使用 netcat 连接,即可获取伪交互式 Shell:

连接后获取root权限并读取flag

至此,下机!感谢师傅的这个环境,还算是比较贴近真实系统的,因为这些漏洞,我基本都遇见过。




上一篇:C++ 未定义行为(UB)为何运行几年才暴露?5类典型案例与排查
下一篇:为什么越来越多人用Agentic?生产级AI Agent开发避坑指南
您需要登录后才可以回帖 登录 | 立即注册

关闭

站长推荐上一条 /1 下一条

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-11-4 15:50 , Processed in 0.069609 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表