记一次对裸聊网站的渗透测试
01 信息收集
初始拿到的目标站点仅有一个登录页面,无关联子站、多余开放端口,子目录扫描也未发现有效信息

Wappalyzer也没什么有用的信息,只能得知网站语言是php

02 开始测试
首先尝试弱口令测试,但常见弱口令均失效;且观察到用户名和密码未加密传输,但存在登录次数限制
不过通过测试确认了admin用户存在
随后测试前台SQL注入,使用Burp Suite结合xia sql插件进行检测,经过多轮测试,未发现可利用的注入点

观察请求包与返回包特征,推测网站基于ThinkPHP框架二次开发,尝试相关 EXP 测试,均未成功

但是注册功能没有关闭,这里尝试注册一个账户,测试一下存不存在文件上传或者越权等漏洞

随便传一张图片,发现很丝滑的就上传成功了
接着尝试php马,结果全部都上传失败
fuzz了几种php的文件上传绕过,也都是不行,网站应该是用了白名单
只有指定扩展名的文件才能上传成功

随后又找到一处上传头像和更新用户资料的功能点
但是很可惜,测试后未发现可利用漏洞

正当测试陷入僵局时,一个请求包引起了我的注意

这个请求包的Headers中包含JWT(JSON Web Token)
解码一看,发现info被加密了,结合特征推测为AES加密

此时想起信息收集阶段遗漏了findsomething插件,接着进行查看
点进去一看,惊喜来了:

找到多个GitHub及Gitee的项目链接
访问后发现关键线索,测试出现转机

同时印证了此前的推测:网站基于ThinkPHP6开发

随后将后端代码clone到本地,进行代码审计以寻找漏洞点
03 代码审计
首先从JWT相关代码入手
为提高效率,直接通过Ctrl+F大法定位关键代码


从代码中可见,JWT的密钥key需从环境变量env中获取
进一步定位到生成JWT令牌的关键函数:
该函数通过JWT工具类生成新令牌,添加两个自定义声明:加密后的info与终端信息terminal,最终按照OAuth2.0在令牌前添加"bearer"前缀
接着分析$info的加密过程,定位到str_encipher()函数:

在refreshToken方法中,先通过json_encode($info)将原始数据转换为JSON字符串
再调用加密函数str_encipher,传入JSON字符串,并指定$encode = true(表示加密操作),同时传入密钥config('app.aes_token_key')
接着看str_encipher函数内部加密逻辑:
如果传入的$key为空,则默认使用config('app.aes_chat_key');但此处明确传入了aes_token_key,因此使用该密钥
由于$encode = true,所以调用\utils\Aes::encrypt方法进行AES加密
最终返回经Base64编码的加密字符串
为确认加密细节,进一步查看\utils\Aes类的相关代码

还好,encrypt方法的实现很简单,只是基于AES-128-ECB模式进行的加密
最后一步,获取缺失的JWT_SECRET和aes_token_key
首先查阅README文档,检查是否存在默认值

继续查看example.env

非常好,先试试JWT_SECRET是否正确

验证成功,接着继续解AES

堪比吃了德芙,成功获取原始信息
随后尝试修改userid、role、account等字段值,使用相同密钥进行AES加密
为节省篇幅,此处直接展示最终构造的payload:

将加密后的结果替换原JWT中的info字段,确认令牌有效期后,使用相同密钥重新生成JWT

回到登录页面,使用此前注册的账号登录,通过BurpSuite拦截请求包

将请求包中data[authToken]的值替换为新生成的JWT,放行请求
登录成功!


04 成果展示
果然上传功能采用了白名单机制,与此前推测一致

系统还挺新的,受害者我看着有不少,祝安好

挺炸裂的


被威胁然后不交钱结果被发短信的人有很多


兄弟们,网络交友需谨慎

免责声明:
本文所有信息均已提交至相关公安机关备案,涉及内容已做严格脱敏处理。文章所提及的技术均为网络安全领域的常规渗透测试方法,不包含任何框架 0day 漏洞、新型攻击手段及未公开的技术细节。
请务必遵守国家法律法规及网络安全相关规定,严禁利用本文所述技术从事任何非法测试、攻击等危害网络安全的行为。因传播、使用本文信息而导致的任何直接或间接损失、法律责任,均由使用者自行承担,与文章作者及发布方无涉。本文允许转载,但转载时需在显著位置标明原文出处及作者信息。
温馨提示:本文内容仅用于合法授权的安全学习与研究交流,严禁用于未授权渗透测试、漏洞利用或任何违法行为。
涉及企业或平台的未公开漏洞信息,请遵循负责任披露原则,勿公开传播可直接复现的敏感细节。
如存在侵权、错误信息或不当内容,请联系站方处理,我们将及时核实并删除。邮箱:admin@baimaojianghu.com。
