1. 若依框架指纹识别实战技巧
第一次接触若依框架的渗透测试时,我发现它的识别特征特别明显。就像在人群中找穿红色衣服的人一样简单,若依系统也有自己的"红色衣服"——那些独特的标识特征。
最典型的就是登录页面的样式。打开若依系统的登录页面,你会看到非常规整的表单布局,右上角通常会有个明显的系统名称标识。我测试过几十个若依系统,发现它们都有个共同点:页面底部会有"请通过前端地址访问"的提示文字。这个特征在渗透测试中特别有用,就像指纹一样独一无二。
更准确的方法是检查页面图标的哈希值。黑若依版本的图标哈希值是"-1231872293",而绿若依版本的图标哈希值是"706913071"。这个识别方法准确率几乎达到100%,我在实际渗透中屡试不爽。具体操作很简单,用Burp Suite抓包后查看favicon.ico的响应,或者直接用浏览器开发者工具查看元素信息就能获取。
登录页面的URL路径也有规律可循。常见的路径包括:
- /login?redirect=%2Findex
- /xxx/login?redirect=%2Findex
- /admin/login
- /system/login
验证码区域的样式也是重要识别点。若依的验证码通常采用四位数字,背景有干扰线,刷新按钮在右侧。这个特征组合在其他系统中很少见,可以作为辅助判断依据。
2. 未授权访问漏洞挖掘全攻略
找到若依系统后,下一步就是寻找未授权访问漏洞。这是我发现若依系统最危险的一类漏洞,因为攻击者不需要任何凭证就能获取敏感信息。
2.1 前端JS文件分析技巧
现代前端开发都采用webpack打包,若依也不例外。我通常会先查看页面加载的JS文件,特别是那些带有哈希值的app.[hash].js文件。在这些文件中搜索"baseUrl"关键词,往往能找到后端API的基础路径。
实际操作中,我发现大约70%的若依系统会暴露API基础路径。有的直接给出完整URL,有的只给出相对路径如"/prod-api"。后者需要与当前域名拼接才能得到完整API地址。这个技巧帮我发现了无数个未授权接口。
2.2 Druid监控未授权访问
Druid监控是若依系统中最常见的未授权访问点。我整理了一份经典路径清单,在渗透测试时按顺序尝试:
- /prod-api/druid/login.html
- /dev-api/druid/login.html
- /api/druid/login.html
- /admin/druid/login.html
- /admin-api/druid/login.html
成功进入Druid监控后,重点查看两个页面:
- /druid/weburi.html:记录所有访问过的URI,相当于系统的API文档
- /druid/websession.html:展示当前活跃会话,可以直接窃取他人session
我曾在一次测试中,通过websession.html获取到管理员的session,直接替换cookie就进入了后台。这种漏洞的危害性极高,相当于把系统大门敞开。
2.3 Swagger接口未授权
Swagger是另一个高危点。尝试以下路径:
- /swagger-ui/index.html
- /v2/api-docs
- /v3/api-docs
如果运气好,你能看到完整的API文档,包括所有接口参数和返回值。我见过最夸张的情况是连用户修改密码的接口都不需要认证。
3. 数据库与服务漏洞利用
3.1 Redis未授权访问
若依系统常用Redis做缓存,而Redis的默认配置往往存在未授权访问漏洞。检查6379端口是否开放,尝试用redis-cli直接连接:
redis-cli -h 目标IP连接成功后,可以枚举所有key:
keys *我曾在某个系统中发现Redis存储了用户session,通过修改这些数据可以直接提升权限。更危险的情况是Redis以root权限运行,可以直接写SSH公钥实现服务器接管。
3.2 Zookeeper未授权访问
Zookeeper在集群部署的若依系统中可能出现。检查2181端口,使用以下命令测试:
echo stat | nc 目标IP 2181如果返回Zookeeper版本信息,说明存在未授权访问。这种情况下可以获取集群配置信息,甚至修改服务注册数据。
3.3 MySQL弱口令
若依系统默认使用MySQL,常见弱口令组合包括:
- root/root
- root/123456
- ruoyi/123456
- admin/admin
使用nmap扫描MySQL服务:
nmap -p 3306 --script mysql-brute 目标IP一旦获取数据库权限,整个系统的用户数据就暴露无遗。我建议开发人员一定要修改默认密码,并限制数据库的远程访问。
4. 其他高危漏洞分析
4.1 Shiro反序列化漏洞
若依集成了Shiro框架,如果rememberMe的默认密钥未修改,就可能存在反序列化漏洞。检测方法很简单,在登录请求中观察是否有rememberMe字段。
使用工具检测:
java -jar shiro-exploit.jar -u http://目标IP/login这个漏洞可以直接导致远程代码执行,危害性极高。开发团队必须修改默认密钥,并升级到最新版本。
4.2 逻辑缺陷配合弱口令
若依有个有趣的特点:某些版本会在前端直接显示密码明文。我遇到过几个系统,查看页面源码就能找到管理员密码。
配合常见的弱口令组合,攻击成功率很高:
- admin/admin123
- ry/admin123
- admin/123456
建议开发团队实施强密码策略,并定期扫描弱口令账户。作为渗透测试人员,弱口令永远是我的第一尝试目标。
5. 防御建议与修复方案
在发现这么多漏洞后,我也总结了一些防御经验。首先,修改所有默认配置是关键。Druid监控、Swagger文档这些组件都应该设置强密码,最好限制访问IP。
其次,服务端口不要直接暴露在公网。Redis、MySQL这些服务应该配置防火墙规则,只允许应用服务器访问。
最后,定期安全扫描必不可少。我建议至少每季度做一次全面的渗透测试,及时发现和修复漏洞。安全是个持续的过程,不是一次配置就能解决的。