本文所涉及的任何技术、信息或工具,仅供学习和参考之用。请遵守《中华人民共和国网络安全法》。
中华人民共和国网络安全法
第二十七条 规定
任何个人和组织不得从事非法侵入他人网络、干扰他人网络正常功能、窃取网络数据等危害网络安全的活动;不得提供专门用于从事侵入网络、干扰网络正常功能及防护措施、窃取网络数据等危害网络安全活动的程序、工具;明知他人从事危害网络安全的活动的,不得为其提供技术支持、广告推广、支付结算等帮助。
本来早就想写写渗透测试的内容,奈何时间不够,又要测试又要记录啥的,如果是客户的资产还要等人家修复完,文章还要打码,还有就是可能有些步骤忘记记录没有那么全,简单的大家又都会,所以也就一直拖着没写。
记一次简单的渗透测试吧,刚好最近测试了一个小程序,就整理成了本文,不过测试内容比较简单,大佬可以移步了。
0x01、session_key泄露
session_key指的是会话密钥,可以简单理解为微信开放数据AES加密的密钥,它是微信服务器给开发者服务器颁发的身份凭证,这个数据正常来说是不能通过任何方式泄露出去的。小程序若存在session_key泄露漏洞的情况,则代表微信侧传递的用户数据有被泄露、篡改等风险。
例如,在本次渗透测试过程中由于该小程序的session_key、iv等敏感信息泄露,导致该小程序可以使用任意手机号进行登录,造成了极大的安全风险。
1、打开小程序之后,点击授权登录,然后再允许手机号授权申请
2、抓包发现session_key、iv等敏感信息泄露
3、利用AppletPentester插件构造登录数据
4、改包将encryptedData数据信息替换成所构造的登录数据,如下图所示伪造成功
成功登录获取到信息
5、成功进入到小程序
0x02、登录绕过
在用户验证接口处存在逻辑漏洞登录绕过,修改响应包即可登录。
1、修改响应包
2、成功绕过
0x03、SQL注入
经过一番测试,同样在用户验证接口处还存在SQL注入漏洞,详情如下所示
3.1、测试注入点
1、布尔注入
sql执行的条件判断结果为false:
sql执行的条件判断结果为true:
2、时间注入
则可构造恶意SQL语句,通过回显判断是否执行成功,或者使用时延语句通过时延判断,即可布尔盲注或时间注入。
3.2、SQL注入测试
以bool型为例
1、遍历长度
2、遍历名字
3.3、py脚本
通过for循环遍历,通过匹配响应数据判断是否成功:
1、定义长度判断函数:
2、定义名字判断函数:
3、主函数:
4、运行结果
成功跑出USER名字:dbo
0x04、总结
总体来说该小程序设计的比较简单,并没有很多功能点,大部分都是查看数据的,而且太过频繁会被 ban IP ~o.O~,都是些简单的渗透测试,发现的漏洞也比较少,虽然是有一个sql注入,但也只是停留在跑数据,并没有getshell。