从一道CTF题复盘CVE-2021-3129手把手解密Laravel漏洞流量中的Webshell与CobaltStrike密钥在网络安全竞赛中流量分析类题目往往最能考验选手对真实攻击场景的还原能力。2021年绿城杯的一道Misc题目就通过精心设计的流量数据包完整再现了攻击者利用Laravel框架漏洞CVE-2021-3129植入Webshell并通过CobaltStrike实施后续渗透的全过程。本文将带您深入漏洞原理与流量特征解密攻击链中的关键环节。1. 漏洞入口识别Laravel框架的异常流量当我们在Wireshark中加载题目提供的流量包时几个显著特征会立即引起注意Python Requests的UA头多数HTTP请求使用浏览器常见UA而攻击流量常呈现自动化工具特征异常的POST请求路径针对Laravel特定组件的非正常访问特殊字符串结构包含AAA*前缀和结尾的编码数据通过搜索这些特征很快能关联到CVE-2021-3129漏洞。该漏洞源于Laravel框架的ignition组件对__toString方法的错误处理允许攻击者通过精心构造的请求实现远程代码执行。典型攻击流量示例POST /_ignition/execute-solution HTTP/1.1 User-Agent: python-requests/2.25.1 Content-Type: application/json { solution: Facade\\Ignition\\Solutions\\MakeViewVariableOptionalSolution, parameters: { variableName: AAA*..., viewFile: php://filter/writeconvert.base64-decode/resource../storage/logs/laravel.log } }2. 解密攻击载荷从混淆字符串到Webshell攻击流量中最关键的加密字符串需要特殊处理才能还原去除AAA*前缀和尾部将剩余字符串中的替换为00进行Base64解码解密工具示例Pythonimport base64 def decrypt_payload(encoded): cleaned encoded.replace(AAA*, ).rstrip() cleaned cleaned.replace(, 00) return base64.b64decode(cleaned * (-len(cleaned) % 4)).decode()通过分析多个解密后的请求可以观察到攻击者分阶段执行的操作清空日志文件注入恶意代码写入Webshell文件通常为.config.php3. Webshell深度分析从混淆到可执行代码题目中的Webshell采用多层混淆初始形态POST参数值前两位为干扰字符去除后可直接Base64解码二次解密得到的大马代码包含动态执行函数关键操作查找服务器上的敏感文件如secret.zipWebshell特征对比表特征类型普通一句话木马题目中的Webshell密码验证简单字符串比对动态哈希校验代码结构单一函数调用多层嵌套执行功能范围基础文件操作完整系统控制4. 追踪CobaltStrike痕迹密钥提取与流量解密攻击者在获取Webshell后通常会部署CobaltStrike等C2框架。题目中关键证据是beacon_keys文件解密流程如下4.1 压缩包提取与解密通过WinHex识别PK头50 4B 03 04修复被Webshell字符串包裹的ZIP结构使用Webshell中泄露的密码解压示例密码P4Uk6qkh6Gvqwg3y4.2 Beacon密钥解密流程graph TD A[获取私钥] -- B[解密元数据] B -- C[提取AES KEY] C -- D[解密通信流量]实际操作步骤使用专用工具解析beacon_keys中的RSA私钥解密心跳包通常伪装为/en_US/all.js请求从Cookie中提取加密的元数据通过AES密钥解密实际通信内容关键解密命令示例python cs_parse_keys.py beacon_keys python cs_decrypt_metadata.py -i traffic.pcap -o decrypted.json5. 防御视角从攻击特征构建检测规则基于此案例我们可以提炼出有效的检测规则YARA规则示例rule Laravel_CVE_2021_3129_Exploit { meta: description Detects CVE-2021-3129 exploitation attempts strings: $ignition_path /_ignition/execute-solution $php_filter php://filter/writeconvert.base64-decode $aaa_prefix AAA* condition: all of them }SIEM检测逻辑关联事件Python UA Laravel错误响应 特殊字符串异常行为短时间内多次日志清除操作后续活动Webshell访问与C2通信建立在实际防御中建议采取以下措施及时更新Laravel框架及依赖组件监控storage/logs目录的异常写入限制服务器出站连接防止C2通信对管理后台实施多因素认证这个案例生动展示了现代Web攻击的完整链条从框架漏洞利用到持久化控制再到C2通信建立。理解每个环节的技术细节才能有效构建防御体系。
从一道CTF题复盘CVE-2021-3129:手把手解密Laravel漏洞流量中的Webshell与CobaltStrike密钥
发布时间:2026/6/7 4:27:17
从一道CTF题复盘CVE-2021-3129手把手解密Laravel漏洞流量中的Webshell与CobaltStrike密钥在网络安全竞赛中流量分析类题目往往最能考验选手对真实攻击场景的还原能力。2021年绿城杯的一道Misc题目就通过精心设计的流量数据包完整再现了攻击者利用Laravel框架漏洞CVE-2021-3129植入Webshell并通过CobaltStrike实施后续渗透的全过程。本文将带您深入漏洞原理与流量特征解密攻击链中的关键环节。1. 漏洞入口识别Laravel框架的异常流量当我们在Wireshark中加载题目提供的流量包时几个显著特征会立即引起注意Python Requests的UA头多数HTTP请求使用浏览器常见UA而攻击流量常呈现自动化工具特征异常的POST请求路径针对Laravel特定组件的非正常访问特殊字符串结构包含AAA*前缀和结尾的编码数据通过搜索这些特征很快能关联到CVE-2021-3129漏洞。该漏洞源于Laravel框架的ignition组件对__toString方法的错误处理允许攻击者通过精心构造的请求实现远程代码执行。典型攻击流量示例POST /_ignition/execute-solution HTTP/1.1 User-Agent: python-requests/2.25.1 Content-Type: application/json { solution: Facade\\Ignition\\Solutions\\MakeViewVariableOptionalSolution, parameters: { variableName: AAA*..., viewFile: php://filter/writeconvert.base64-decode/resource../storage/logs/laravel.log } }2. 解密攻击载荷从混淆字符串到Webshell攻击流量中最关键的加密字符串需要特殊处理才能还原去除AAA*前缀和尾部将剩余字符串中的替换为00进行Base64解码解密工具示例Pythonimport base64 def decrypt_payload(encoded): cleaned encoded.replace(AAA*, ).rstrip() cleaned cleaned.replace(, 00) return base64.b64decode(cleaned * (-len(cleaned) % 4)).decode()通过分析多个解密后的请求可以观察到攻击者分阶段执行的操作清空日志文件注入恶意代码写入Webshell文件通常为.config.php3. Webshell深度分析从混淆到可执行代码题目中的Webshell采用多层混淆初始形态POST参数值前两位为干扰字符去除后可直接Base64解码二次解密得到的大马代码包含动态执行函数关键操作查找服务器上的敏感文件如secret.zipWebshell特征对比表特征类型普通一句话木马题目中的Webshell密码验证简单字符串比对动态哈希校验代码结构单一函数调用多层嵌套执行功能范围基础文件操作完整系统控制4. 追踪CobaltStrike痕迹密钥提取与流量解密攻击者在获取Webshell后通常会部署CobaltStrike等C2框架。题目中关键证据是beacon_keys文件解密流程如下4.1 压缩包提取与解密通过WinHex识别PK头50 4B 03 04修复被Webshell字符串包裹的ZIP结构使用Webshell中泄露的密码解压示例密码P4Uk6qkh6Gvqwg3y4.2 Beacon密钥解密流程graph TD A[获取私钥] -- B[解密元数据] B -- C[提取AES KEY] C -- D[解密通信流量]实际操作步骤使用专用工具解析beacon_keys中的RSA私钥解密心跳包通常伪装为/en_US/all.js请求从Cookie中提取加密的元数据通过AES密钥解密实际通信内容关键解密命令示例python cs_parse_keys.py beacon_keys python cs_decrypt_metadata.py -i traffic.pcap -o decrypted.json5. 防御视角从攻击特征构建检测规则基于此案例我们可以提炼出有效的检测规则YARA规则示例rule Laravel_CVE_2021_3129_Exploit { meta: description Detects CVE-2021-3129 exploitation attempts strings: $ignition_path /_ignition/execute-solution $php_filter php://filter/writeconvert.base64-decode $aaa_prefix AAA* condition: all of them }SIEM检测逻辑关联事件Python UA Laravel错误响应 特殊字符串异常行为短时间内多次日志清除操作后续活动Webshell访问与C2通信建立在实际防御中建议采取以下措施及时更新Laravel框架及依赖组件监控storage/logs目录的异常写入限制服务器出站连接防止C2通信对管理后台实施多因素认证这个案例生动展示了现代Web攻击的完整链条从框架漏洞利用到持久化控制再到C2通信建立。理解每个环节的技术细节才能有效构建防御体系。