本文作者:eth10(贝塔安全实验室-核心成员)
当我们访问的站点只是一个简单的登录页面时,我们应充分利用涉及到的javascript脚本函数或文件。
0x01 node js站点
(1) 如何判断是JS开发的站
查看登录页面的页面源代码是如下图时,那么可以简单判断本站是一个纯JS开发的站。
另外可以通过cookie来简单判断,如cookie中有connect.sid这个键,如图所示:
(2) 查看重要js文件
查看重要文件,一是寻找配置文件,二是查看app.xxx.js文件。
(3) 查看js配置文件
通过页面源码可以看到是否存在有js配置文件,如图所示:
通过逐个访问js配置文件,可以查看到很多敏感信息,如图:
通过获取的敏感信息,有时可以直接绕过登录进入到系统中,如图:
(4) 查看app.xxx.js文件
app.xxx.js文件是系统主文件,里面可以查看到很多接口,如图:
通过获取的接口信息对应构造请求,如请求方法,header,content-type等。
(5) 构造请求
访问发现缺少必要参数,继续补充参数
最终可直接未授权访问到敏感信息,如图:
对于month格式,app.xxx.js中也有对应接口,如下图:
获取管理员敏感信息
继续尝试别的接口
发现功能树
尝试功能树中的接口,可以直接获取到管理员加密hash密码,如图:
(6) 查找接口技巧
这里提供一个简单的方式,直接在浏览器中Ctrl + F进行下列关键字搜索,对于命中的会有颜色标出。也可以使用python进行页面解析一次性提取等。
搜索关键字:
method:"get"
http.get("
method:"post"
http.post("
0x02 Ajax通用接口写法
(1) 查看重要接口
直接查看源码中的script函数,如果发现$.ajax,那么恭喜你找到了部分接口,可能存在未授权访问。
(2) 构造请求
同样通过获取的接口进行对应构造。
没什么用,本来就是公开的接口,换一个。
发现敏感信息,如图:
还有这种接口。
对应构造请求,如图:
获取账户密码等敏感信息,之前留的图,有点不清晰,不用在意细节。
(3) 查看接口技巧
搜索关键字:
$.ajax
service.httppost
service.httpget
0x03 js加密密码字典生成
当你登录是发现密码是这样的:7ADAB2400D8F864E3EA5F882E124FB17270ADEC2FE75F46C300242FBB0B7D487B505364016E6E555298A3EF48ADD05FB2C93757E8C7317B246366050AA071359
128位,有没有吓到你,其实不用怕,看看如何将你的明文加密成这个,页面源代码发现加密的密钥信息。
通过获取的密钥进行构造,通过get传参,然后python批量请求就可以将你手中的明文字典加密成对应的密文了。
0x04:js登录密码硬编码
如果你登录一个网站时,发现bp抓不了数据包,但是页面提示账户密码错误,那么很大可能密码是写在页面中,通过去js文件中搜索即可获取到账户密码。
其他:
更多案例请参考以下文章:
https://www.secpulse.com/archives/35877.html
https://zhuanlan.zhihu.com/p/79335206
文由贝塔安全实验室