前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >工具| Nodejs暴力破解实践

工具| Nodejs暴力破解实践

作者头像
漏斗社区
发布2018-04-16 10:29:44
2.8K0
发布2018-04-16 10:29:44
举报
文章被收录于专栏:漏斗社区漏斗社区
135编辑器

问题描述:

当我们在进行网站安全性测试的时候,通常会遇到网站不存在登陆账号错误锁定机制、无验证码防爆破机制等。

如果用户名和密码采用的是明文传输方式,使得我们可以很轻易的无限重放登陆请求数据包,在已知用户名或者密码其中之一的情况下进行暴力破解。

而如果网站在用户登陆的时候对用户名和密码进行了加密处理,要如何快速的进行爆破呢?

代码如下:

代码语言:javascript
复制
POST /login/ HTTP/1.1
Host: 192.168.80.131
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://192.168.80.131/login/?next=/
X-Requested-With: XMLHttpRequest
Content-Length: 443
Content-Type: multipart/form-data; boundary=---------------------------146043902153
Cookie: csrftoken=XJeOhq0dkSPVb3zBWhArYLNQxpqkmjEfmxT1x8IECMzFoyK4oVamioS3cgVaBQYB
Connection: close

-----------------------------146043902153
Content-Disposition: form-data; name="logname"

admin
-----------------------------146043902153
Content-Disposition: form-data; name="logpass"

14e1b600b1fd579f47433b88e8d85291
-----------------------------146043902153
Content-Disposition: form-data; name="csrfmiddlewaretoken"

y7BblF2tcCBSQ6SZHLltrI1ocnWVQ0KcXVgoBnKUuwlC3B3s9pVoLl6BRerL5x4y
-----------------------------146043902153--

135编辑器

解决思路:

常规思路:准备好爆破字典 -> 查找网站用户名密码加密方式 -> 使用其他脚本语言(如python)模拟前台JavaScript的加密方式加密字典 -> 利用重放工具加载加密过的爆破字典进行爆破。

大神思路:准备好爆破字典 -> 查找网站用户名密码加密方式 -> 请求明文用户名密码到NodeJs -> NodeJs直接调用JavaScript加密方法加密 -> NodeJs将加密后的用户名密码发送到需要爆破的网站 -> NodeJs根据网站响应判断用户名密码是否正确 -> 使用重放工具循环爆破。

135编辑器

实战演练

实战环境:

某网站登陆页面不存在防爆破机制,密码在用户登陆过程中被加密传输。

登陆成功,返回errorcode等于0。

登陆失败,返回errorcode等于-1。

工具说明:

Burpsuit、NodeJs

安装使用说明: www.runoob.com/nodejs/nodejs-install-setup.html)

135编辑器

实战过程:

Step 1:找网站密码加密方式

a)查看登陆页面源码

其中,form.append("logpass",hex_md5(hex_md5($("#logpass").val())));对用户输入的密码调用了两次hex_md5()进行加密。

b)查找定义hex_md5()加密方法的位置。

Step 2:NodeJs调用JavaScript加密方法加密

a)将md5.js文件保存到本地,并使用export将加密方法暴露出来。

b) 创建NodeJs服务器,接收http GET请求

创建server.js文件,将以下代码写入文件:

c) 引用md5.js,加密nodejs接收到的用户密码

添加加密代码到server.js中。Server.js代码如下:

Step3:使用重放工具循环爆破

a) 开启nodejs服务器

代码如下:

#nodejs server.js

b) 测试可爆破性

访问http://127.0.0.1:8888/?name=admin&pass=123

在nodejs中查看网站返回信息 。

c) 使用burpsuit对node.js服务器进行重放。

爆破成功。

135编辑器

实战总结:

以上内容为 Nodejs暴力破解实践分享,如有更好的思路或者任何疑问,欢迎艾特漏斗社区那位最帅的萌新小哥哥。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-04-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 漏斗社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档