一个404页面,差点让我多加三天班,很有意思的挖洞过程!

admin 2026-06-22 04:28:12 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 作者分享了一次渗透测试实战经验:在目标系统仅返回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页面,差点让我多加三天班,很有意思的挖洞过程!》

评论:0   参与:  0