前言
前排提醒,本文涉及的漏洞已经提交相关平台且站长已知,不要未授权渗透噢!
前段时间在网上冲浪的时候看到一款不错的galgame,想下来玩玩(要脸就不说叫啥了)。
点进去下载,一看
捏妈,下个游戏还要开VIP,而且它们的vip还挺贵。还有这种事?!
本着能白嫖就白嫖的原则,我开始了对该站点的测试。
平平无奇的测试之旅
首先看到这个UI,直觉告诉我这玩意是TP框架搭建的。随便打一个路由
显然是tp框架,暴露了绝对路径以及tp版本
用TP历史洞都打了一波,没啥结果,这个报错页面也没有出现什么严重的信息泄露。所以暂时不考虑用现成的POC去打。
先用注册的账户进后台看看,后台个人信息修改这里可以上传头像,那么简单试一波有没有文件上传相关的问题:
然后FUZZ了一下,后缀好像只能是jpg和png,严格的白名单,其它的一律不允许上传。这就很难顶。
好吧,既然我们的目的首先是搞一个VIP,那么先看看这个充VIP的功能有没有什么逻辑漏洞
数据包看起来有洞,毕竟money明目张胆的写出来了,但是其实是没有的,因为有sign校验,不知道其规则,自己试了一些常见的手法,比如直接删掉,或者是改为1这种,但是都绕不过去
那看来这条路是走不通了,不过这里其实有一个新收获,就是发现了它们的支付接口,专门搞了个子域名来处理支付请求,因为这次测试是纯找乐子而不是正经渗透测试或者打点,所以我没有搜集子域信息,这里后面也许会有用。
既然支付逻辑漏洞相关的点行不通,那么得再找找别的突破口。我翻了一下http history,找到了这么一个接口:
folder_id加一个单引号,SQL直接包语法错误,那就是典中典的报错注入了。这下稳稳地了,接下来都是不出意外了。
那接下来找个VIP用户,或者直接把管理员用户日下来就行
好吧,现在我们又面临一个问题了,那就是这些账号密码实际上是解不出来的(加盐的)
那么应该怎么办呢?其实这里我使用的办法是注册几个用户,其密码为常见弱口令,然后用加密后的密文在数据库一一比对,看看有没有VIP用户是使用了弱口令的,如果有直接登录用他的账户下载即可,我用这个方法成功碰出了几个弱口令VIP用户,并且成功下载了资源。
拿下管理后台
我的目的实现了,接下来就是随便玩玩了。我当然不会止步于下载一个galgame,如果可以,我更想拿下管理后台,甚至是getshell。
但是我们现在只有一个报错注入点,并且不是dba权限,我们刚刚看了用户后台也没什么getshell点。要怎么办呢?
这种时候就可以重新审视一下所掌握的资源。目前知道了绝对路径,有一个注入点,那么现在就应该重新看看数据库里的数据,渗透就是要把每一点资源利用到极致。
重新回去看表名的过程中,我发现一个有趣的表:
设置表?众所周知,网站的设置表里基本都存在大量的敏感数据。何况这是一个网盘网站,说不定会保存有AccessKey和SecretKey这种敏感信息,到时候我们就可以直接接管储存桶。
说干就干,来跑一下这个表。最后确实得到了一堆敏感信息
看到这里,可以马上反应过来,这里有那个用于支付的子域名的相关信息,其中提到了支付相关的key。当时我在想这是不是就意味着可以接管支付相关的服务了。但是后续发现其造成的影响不止于此。
对这个支付子域进行目录扫描,发现一个点
访问之,发现其使用了聚合易支付
其实当时我打到这里,心想着代审练习的机会又来了(网上可以找到这个平台的源码,不过好像都是要收费的)
但是我突然又看到,这里有一个“密钥登录”的功能,难道说刚刚我们找到的Key还可以用来登录这个平台?
Nice!
成功进入收费管理后台
此外,经过查看该支付平台的文档,我知道了上文中sign的算法:
所以我们就可以伪造sign签名,从而实现控制支付金额,一块钱买VIP等操作
总结
在渗透测试的过程中,一定要把每个阶段得到的战果利用到极致,SQL注入就是这样一个典型漏洞。如果有SQL注入点,我们不一定要局限于SQL注入找用户名密码、写webshell、命令执行等常规操作,数据库里的其它信息也是非常重要的,条件允许一定要把数据翻个底朝天。本文就是一个很好的案例。实际上我在上次某省hvv也遇到过类似的情况,一个网站配置信息表里保存了好几个服务器的SSH连接账号密码,从而瞬间打开多个突破口。
总之,多翻翻数据库是好习惯。
推荐阅读:
实战 | 记一次1000美金的TikTok盲打XSS的漏洞挖掘
原创投稿作者:[email protected]