小程序漏洞挖掘与后台Shell获取全过程
今天给大家分享一个我之前挖小程序漏洞的经历,经过多次尝试,最终成功拿到了后台的Shell。当然,厂商已经修复了,这里只是简单聊聊整体的思路和挖掘过程。
工具与环境准备
首先,我的工具和环境是:Windows10系统、VX客户端V3.7.5.23、Proxifier和Bp。这些工具在测试过程中起到了关键作用。
测试方向与逻辑
我一般测试小程序时,会从找回、支付逻辑、炸弹、登录绕过、越权等方面入手。接着,我会寻找注入、上传等漏洞,看看能否拿到Shell或者发现其他高危漏洞。
小程序登录与权限测试
首先,通过微信客户端打开小程序,输入手机和验证码登录。这个小程序的逻辑基本测试完了,它基于token做权限认证,看起来不存在越权问题。
文件上传测试
接下来,我测试了个人中心(小程序中一般叫“我的”)的头像上传功能。这里应该是做了白名单验证,上传不成功。有时候上传成功了,但找不到上传位置。如果反编译小程序源代码,或许能找到一些思路,不过这次我没有进行这一步。
查看返回包内容,发现上传失败了,图片参数显示未定义。
注入漏洞挖掘
随后,我开始寻找注入漏洞,测试了商品、栏目、购物车、个人信息、搜索框等模块。发现了多个未加密的ID参数,尝试了报错注入和时间盲注,但都没有结果。
最后,我测试了搜索框。之前测过不少小程序,搜索框只是摆设,没有实际搜索功能,所以这次我最后才测试它是否有注入漏洞。
没想到,这次一发入魂,发现了报错注入。
熟悉TP框架的们一眼就能看出来,这不是TP就是基于TP二开的。我试了试老洞,但没有结果。
SQLMap测试与后台发现
用SQLMap测试了一下,发现并不是DBA权限。不过,此时我们已经收集到了小程序的后台地址:https://www.xxx.cn/admin/auth/login.html。
尝试弱口令无果后,用SQLMap跑出了账和。
后台登录与上传测试
直接跑出账后,登录后台看看能否拿到Shell。用户有好几个,的加密方式我没见过,猜测可能是弱。试了试123456,成功登录。
进入后台后,首要任务是找上传点。测试了个人信息处的头像上传、课程编辑的图片上传,但都上传不了马儿。各种提示文件不支持,要么就是不解析。
权限测试与上传成功
随后,我随便点开了各个功能模块,测试是否有其他漏洞。点击其中一个模块时,提示无权限。这意味着这只是其中一个账,还有其他不同权限的账。
于是,我换了个账,用弱123456继续登录。这次是一个业务专员的账,页面功能模块不一样了,感觉有戏。
继续寻找上传点,终于发现了ueditor编辑器。看到页面URL,发现是TP的伪静态,估计也有注入漏洞,但还是先找上传吧。
测试之后,前端绕过即可,PHP上传成功。用蚁剑连接,成功getshell。
总结
总结一下,前台小程序个人头像上传处上传图片失败(大概率)还是成功,可能需要进一步。不过,最终通过后台的ueditor编辑器,成功拿到了Shell。
你裤子都没脱,你凭什么?(手动狗头)