前言
又是一年暑假将至,不知道各位师傅的公司有没有在招实习生?本人正在寻找内推机会,有坑位的师傅可以私下联系我。
信息收集:常规资产获取
先聊聊资产收集。最常规的手段,就是把学校的名字、域名等信息组合成查询语法,直接丢到 FOFA 里跑:
(title="xxx" || domain="xxx" || host="xxx")&&status_code=200
拿到资产后,用无影工具做存活探测,然后对活跃资产进行深入渗透测试。
我这回就找到了这样一个登录框:

连图形验证码都没有的登录框,简直就是送分题。至少可以尝试爆一下弱口令。
涉及登录框的常见测试手法,可以参考这张思维导图:

登录爆破碰壁,转战API接口
这个站点不存在用户名枚举。我凭经验猜测 admin 和 test 用户大概率存在。先固定用户名爆破 Top 9000 密码,无果;反过来固定密码 123456 爆破常见用户名,依旧没突破。
登录后台既然不好进,那就重点看看接口吧。

接口数量还不少。我用 Burp 对 GET 和 POST 方式的接口分别跑了一遍。动手之前,先对接口参数做了简单处理——比如带有 id 参数的地方,替换成具体数值。

跑出来不少数据,但只是常规信息,没太大价值。
随后我注意到很多接口是 list 字样的,于是按经验构造分页参数进行 fuzz。这里有个小技巧:凡是看到 list、page 这类字样,一定要重点测试,出货概率很大。


可惜还是没啥敏感数据。
深入分析:二级路由与云凭证泄露
仔细观察这些接口后,我发现有一部分是以 /api 开头的,推测存在二级路由结构。于是我把路径拼接上 /api,重新测试——这次终于有东西了。

用 Yakit 打开其中一个响应,好家伙,直接暴露了 AccessKeyId、AccessKeySecret 以及临时 STS 令牌。

阿里云 STS 临时安全凭证解析
在阿里云的身份与访问管理体系中,STS(Security Token Service) 提供了一套基于临时凭证的认证授权方案。开发者调用 AssumeRole 这类 STS 服务接口后,能拿到一组由三部分构成的临时安全凭证:
AccessKeyId
AccessKeySecret
SecurityToken
凭证的有效期由 Expiration 字段明确定义。过期后,系统会自动拒绝所有携带该凭证的 API 请求。这套机制的核心价值在于,用动态生成的临时凭证替代长期有效的静态密钥,有效规避了密钥泄露带来的风险。同时,临时凭证的权限范围严格局限于其绑定的 RAM 角色(RAM Role)策略,遵循最小权限原则,符合企业级安全合规要求。
在实际业务中,这种机制广泛用于第三方临时授权、跨账号资源访问,以及移动端或 Web 前端的云存储直传等场景。
由信息泄露到云存储桶接管
虽然凭证泄露本身有一定危害,但直接提交这类漏洞往往不被接受。那我就做进一步利用吧。
配置阿里云 CLI
拿出这个工具:

使用如下命令配置临时令牌,并将区域设为 cn-beijing:
.\aliyun configure --mode StsToken
运行后会提示你依次输入 AK、SK,以及区域信息。(注:cn-beijing 区域在漏洞修复前可正常使用,现在图已没法截。当时在 JS 里能看到一个存储桶的地址,对应区域就是北京;如果不行的话,直接把指令丢给 AI,让它帮你 fuzz 可用的区域。)

配置完成后,只要凭证未过期且具备权限,就可以对目标存储桶进行操作了。我的权限刚好能够操作 OSS,更高级的资源(比如 ECS 等)则无法触及。
列出所有存储桶
.\aliyun oss ls

列出桶内全部文件
.\aliyun oss ls oss://xxx-img --region cn-beijing
这条命令能列出指定桶里的所有文件。

文件下载与上传
.\aliyun oss cp oss://xxxx/test.txt ./test.txt --region cn-beijing
用于从桶中下载文件。上传的话同样使用 cp 命令,如果文件已存在,可以选择是否覆盖。

文件删除
.\aliyun oss rm oss://xx/test.txt --region cn-beijing
这条命令可以直接删除桶中的文件,危害已经够大了,不再演示。
以上利用过程并不复杂,阿里云 CLI 还提供了更多命令,感兴趣的师傅可以自行翻阅官方文档。把存储桶拿下之后,还可以根据登录框的前端特征进行资产测绘,看是否存在其他通用站点。

如果确认是通用系统,那就可以横向扩大战果,继续收割其他学校的资产。
有实习生招聘需求的师傅,欢迎私下联系,求个内推机会。