文章总结: 作者分享了一次渗透测试实战经验:在目标系统仅返回404页面时,通过观察URL采用驼峰命名法的细节,推断出管理接口路径并成功获取数据库配置信息,进而通过密码复用漏洞控制服务器。文章强调代码习惯分析和细节观察在渗透测试中的关键作用,并附法律声明提醒授权测试。 综合评分: 72 文章分类: 渗透测试,实战经验,WEB安全,安全建设

但但但……一个404页面教会了我一个道理:
你扫不出来的,不一定安全。
只是你没看到那个突破口而已。
有次我做一个省级政务平台的项目
客户给了一个IP段,里面大概有二三十台机器。团队分工,我分到了几个看起来就很“边缘”的系统:
- 一个老旧的门户网站
- 一个不知道干什么用的测试环境
- 一个API网关
先搞门户网站。
该扫的都扫了。端口就开了80和443,目录爆破跑了好几轮,全是403。WAF拦得死死的,连个phpinfo都看不到。
折腾了一个多小时,啥也没捞着。
“行吧,这个系统铁板一块,换下一个。”
然后我打开了那个API网关的页面。
一个干干净净的404页面。
没有Logo,没有框架特征,没有版本号,就一行字:
Not Found
说实话,我当时差点关掉浏览器。
然后我再次不停的点点点……
然后我注意到了一件事:
URL里有大小写混写。
什么意思呢?
正常的API路径,一般是这样的:
/api/user/getinfo
全小写,用斜杠和下划线分隔。
但这个URL是这样的:
/api/User/GetInfo
看到区别了吗?大驼峰写法。
User,首字母大写。GetInfo,每个单词首字母大写。
这个细节,可能很多人都不会在意。但当时我心里“咯噔”一下:
-
这套系统的开发,写接口的时候习惯用驼峰命名。
-
那是不是意味着,别的管理接口,也是这种命名方式?
于是我随手试了一下。
把/User/GetInfo改成/Admin/GetUsers:
返回 401
有反应!
普通404是找不到页面。这里是401,说明页面存在,但没有权限。
有门。
再改:/Admin/GetConfig
返回 200
一段JSON出现在我眼前。
里面是数据库连接信息:IP、端口、账号、密码。
你可能会说:“你这是运气好,刚好猜对了路径。”
不完全是。
如果只是随便猜,那确实是碰运气。但当时我的思路是这样的:
第一步:观察命名习惯。
我看到/User/GetInfo这个路径用的是大驼峰命名,说明开发人员习惯这么写API。
第二步:推断管理接口。
大部分系统的管理接口,都会有一个类似/Admin、/Manage、/System的前缀。结合刚才发现的命名习惯,我猜它的管理接口路径应该是/Admin/xxx,还是大驼峰写法。
第三步:推断功能接口。
管理后台一般会有“查看用户列表”、“查看系统配置”、“查看日志”等功能。对应的接口名可能是GetUsers、GetConfig、GetLogs。
第四步:组合尝试。
/Admin/GetUsers→ 401(有权限校验)
/Admin/GetConfig→ 200(无权限校验)
第四个请求就中了。
这不是纯运气,这是基于代码习惯的推断。
拿到数据库密码之后,我习惯性地试了一下能不能登录服务器。
因为很多运维有个“好习惯”:所有系统用同一个密码。
SSH连接、用户名root、密码就是刚才拿到的那个密码——
登录成功。
这台服务器上,不光有数据库,还有:
- 全站的访问日志(存了半年)
- 源代码备份(整个项目的代码打包)
- 同网段其他服务器的IP列表
- 还有一份内网拓扑图
从发现404页面到拿下服务器,用了多久?
一个下午。
但如果我当时没注意到那个大小写混写,关掉了浏览器呢?
三天后我还在跟那个门户网站死磕。
⚠️ 法律声明:以上内容仅供安全学习和授权测试使用。未经授权的漏洞利用属于违法行为,请勿对未经授权的目标进行测试。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:老A搞安全 是老A 是老A《一个404页面,差点让我多加三天班,很有意思的挖洞过程!》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。


![[thm]AI安全全手册[精华合集下]12合一附合集ppt|pdf|html](/images/random/titlepic/4.jpg)






评论