*本文作者:molibird,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。
关键字:APIfen、工具使用、sql注入
涉及工具/包:Fiddler、Burpsuite、Js2Py、Closure Compiler、selenium、phantomjs、sqlmap
记录分析某音乐类App评论相关API的过程,以及一些工具/包的基本使用(部分工具对最后尝试没有影响,但在其它场景或许有用),最后结合sqlmap进行注入尝试。本文对于sql注入没有深入展开(水平不够…)。
想法来源:本想写个程序获取零评论的歌曲,去占沙发…分析发现获取评论的POST请求参数有点复杂…既然花时间研究了,顺便进行一下sql注入的尝试。
一、获取相关代码
1、获取评论的HTTP请求
2、寻找主要JS文件
3、Fiddler:将JS文件替换成本地JS文件 便于调试
4、Fiddler + Burpsuite
5、具体发送请求的JS代码 / 构造参数的代码
二、分析代码:
1、windows.asrsea()函数
2、JSON.stringify(j7c)
3、最关键的加密函数b()
三、用Python完成JS加密函数的功能
1、Js2Py包:直接将JS转换成Python(失败尝试)
2、Closure Compiler:JS简化压缩(失败尝试)
3、selenium + phantomjs
四、sqlmap使用自定义tamper
1、编写tamper
2、sqlmap尝试
五、总结
评论的分页功能一般会用到的参数:第几页、获取几条 等等。
但此处POST请求参数并不简单,直接加密成了一长串字符串。
这里的JS文件都是被混淆过的,但如果最后要构造/发送参数,参数名是不能被混淆的。因此,利用参数名encSecKey在JS内容中进行搜索,发现core.js中出现了3次,初步猜测相关的代码都在这里。
Fiddler 好像没有Burp的截断暂停/方形功能?
Burpsuite好像没有Fiddler 那么方便的替换文件功能?
只需要将Fiddler设置代理 将流量导向Burp的8080即可。
选择 Tools-Options 打开设置
搜索参数名encSecKey
进行调试 发现:
bLN7G对象、相关的 window.asrsea()成为关键
bLN7G.encText
对应params
bLN7G.encSecKey
对应encSecKey
浏览器工具输出内容与Burp内容不完全一样,因为burp内容经过了URL编码
a()
:返回一个固定长度的随机字符串,后续的a(16)可以直接取16个a,”aaaaaaaaaaaaaaaa”。
window.asrsea()
即 函数d()
其中的c()
函数传入的3个参数都是常数,猜测h.encSecKey
就是一个常数,用抓到的请求包中的参数值直接代替,发现页面成功响应说明猜测正确。
到目前为止,window.asrsea()
的有效参数只剩下第一个JSON.stringify(j7c)
和评论API相关的 就是
在代码中直接修改 offset
:
发现页面获取的评论 出现偏移(首页热门评论消失,时间排序从第2条开始获取)。
到这里就和平时进行sql注入的情形很像了。
发现CryptoJS
对象的内容绕来绕去…代码量太多(这里就不贴出来了,太占篇幅)
想要寻找简单点的办法
注意:Js2Py无法识别JS用法:
使用发生错误,还有很多JS的用法Js2Py不能识别。
想先将JS进行简化,再进行转换尝试。
--compilation_level ADVANCED_OPTIMIZATIONS
智能模式如下 JS代码:
压缩后:自动删除所有无用的代码
注意:Compiler无法识别JS非严格模式的用法
解决办法:
1、arguments.callee
被弃用:给函数增加一个函数名
2、delete parm
修改为parm = null
简化压缩后,再次尝试Js2Py的转换,依然失败…
被混淆的JS代码,暂时没能力去修改到复核Js2Py的格式。
只能换个思路:Python调用浏览器,让浏览器去执行JS
PyV8,没安装成功…
selenium 结合 浏览器(比如Firefox需要下载 geckodriver)
selenium 结合 phantomjs(类似:不显示内容的浏览器) 速度更快
第一步、下载phantomjs、geckodriver并将路径添加到系统的PATH环境变量
第二步、本地服务器创建php文件,利用原有的JS进行加密然后输出:
</script>
第三步、selenium结合phantomjs:
使用selenium效率肯定没有直接Python直接加密好,但对于混淆过的JS代码,可以省去很大的分析精力…对于类似存在加密的场景,也可以快速进行尝试。
对于应用开发来说,即使在前端对参数值进行加密,后端在使用中依然需要进行过滤。
*本文作者:molibird,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。
Copyright © 2023 All Rights Reserved 版权所有 网络音乐文化组