• pikachs 渗透测试1-环境及暴力破解


    一、安装 PhpStudy20180211,默认安装

    1、mysql默认密码是root,因为在虚拟机,保留不动

    2、解压pikachs 到 C:phpStudyPHPTutorialWWWpika ,修改C:phpStudyPHPTutorialWWWpikainc下的 config.inc 配置文件(关注root密码是否改动)

    3、浏览器打开,点击红字部分开始安装

    4、安装成功后提示如下,测试环境正常运行

    二、暴力破解之基于表单(无验证码)

          “暴力破解”是一攻击具手段,在web攻击中,一般会使用这种手段对应用系统的认证信息进行获取。 其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果。 为了提高效率,暴力破解一般会使用带有字典的工具来进行自动化操作。
    理论上来说,大多数系统都是可以被暴力破解的,只要攻击者有足够强大的计算能力和时间,所以断定一个系统是否存在暴力破解漏洞,其条件也不是绝对的。         我们说一个web应用系统存在暴力破解漏洞,一般是指该web应用系统没有采用或者采用了比较弱的认证安全策略,导致其被暴力破解的“可能性”变的比较高。 这里的认证安全策略, 包括:
         1.是否要求用户设置复杂的密码;
         2.是否每次认证都使用安全的验证码(想想你买火车票时输的验证码~)或者手机otp;
         3.是否对尝试登录的行为进行判断和限制(如:连续5次错误登录,进行账号锁定或IP地址锁定等);
         4.是否采用了双因素认证;
          ..等等。
         千万不要小看暴力破解漏洞,往往这种简单粗暴的攻击方式带来的效果是超出预期的!

         从来没有哪个时代的黑客像今天一样热衷于猜解密码 ---奥斯特洛夫斯基

    1、burpsuite配置

         注意破解过程一定要看文档,否则破解不成功,破解时是交叉copy才能完成最后破解,这个坑很大,和平常的破解不大一样

         只需要打开burp-load-keygen.jar,然后点击run就行

         截取包后,右键  snd to Intruder

    2、pasitions 选项卡

    (1)sniper : 匹配一个变量,一般是知道用户,用弱口令去攻击

    (2)Battering ram,用字典同时匹配

    (3)prichfork 两个字典同时替换

    ( 4)cluster bomb  交叉匹配

      实际情况下,(1)和(4) 用得比较多

     可以设置 flag ,设置标识符来区别是否匹配成功

     也可以根据返回包大小判断,如下是攻击结果截图,可以看到包大小、flag 都有区别

     

    三、暴力破解之- 验证码 on client

          在前端的验证码都是纸老虎

    1、前端页面查看源文件,可以看到是用 javascript 做的生成验证码、验证两个操作 

    <script language="javascript" type="text/javascript">
        var code; //在全局 定义验证码
        function createCode() {
            code = "";
            var codeLength = 5;//验证码的长度
            var checkCode = document.getElementById("checkCode");
            var selectChar = new Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9,'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');//所有候选组成验证码的字符,当然也可以用中文的
    
            for (var i = 0; i < codeLength; i++) {
                var charIndex = Math.floor(Math.random() * 36);
                code += selectChar[charIndex];
            }
            //alert(code);
            if (checkCode) {
                checkCode.className = "code";
                checkCode.value = code;
            }
        }
        function validate() {
            var inputCode = document.querySelector('#bf_client .vcode').value;
            if (inputCode.length <= 0) {
                alert("请输入验证码!");
                return false;
            } else if (inputCode != code) {
                alert("验证码输入错误!");
                createCode();//刷新验证码
                return false;
            }
            else {
                return true;
            }
    2、使用repeater 模块可以发现,验证码并没有送到后端验证

    3、使用上面的操作,可以发现基于客户端的验证码仍然可以暴力破解出来

    四、暴力破解之- 验证码 on server

           虽然验证码在服务器端验证,但是通过 repeater -  go发包验证,发现验证码没有过期机制,因此验证码不变,重复上面的操作,仍然可以暴力破解密码

    总结:

           1、默认情况下,session 1440 秒过期,就是24分钟,需要在php.ini文件中设置session过期时间

           2、每验证一次session,都应该销毁session,这是开发人员应该考虑的事情

           3、验证失败几次,应该锁定用户或禁止登陆2小时之类

    五、token 也不能防暴力破解

           token原理:后端生成token ,推送到前端,以隐藏方式提交,即使后端比对后每次生成新的token,但因为token会出现在前端,只好黑客具备一些开发能力,能够写一个工具每次读取正确的token然后再暴力破解,仍然可以破

           token 实际在CSRF中应用较广

    如图,可以看到token明文

  • 相关阅读:
    SQLAlchemy(2) -- SQLAlchemy的安装
    SQLAlchemy(1) -- Python的SQLAlchemy和ORM
    http-proxy-middleware及express实现反向代理
    Vue项目中的http请求统一管理
    vue.js中如何使用scss
    Vue 相关开源项目库汇总
    Vue UI组件库
    route按需加载的3种方式:vue异步组件、es提案的import()、webpack的require.ensure()
    Npoi Web 项目中(XSSFWorkbook) 导出出现无法访问已关闭的流
    vuejs 和 element 搭建的一个后台管理界面
  • 原文地址:https://www.cnblogs.com/micfox/p/11047809.html
Copyright © 2020-2023  润新知