zoukankan      html  css  js  c++  java
  • 网络安全从入门到精通(第十章-1) 0day审计实战案例(上)

    本文内容:

    • 代码审计的思路
    • 渗透测试的步骤
    • 以blueCMS为例

    1,代码审计思路:

      渗透测试的核心--->找漏洞--->找Bug--->开发技术人员不过关,或者衔接问题等。

      安全不能孤立===>漏洞一定存在。

      代码审计的核心在于通过源代码,知道代码如何执行,然后根据代码执行中可能产生的问题来寻找漏洞。

      代码审计一般泛指白盒审计,但是要记住,通用型漏洞,例如CMS通杀漏洞,其实并不是仅仅只有代码审计能够找到。

      本地搭建,然后纯黑盒测试也可以的,只不过代码审计更为全面的容易找到漏洞。

      代码审计思路:两条路线,如:

        1.全文通读:将全文代码一行一行进行查看。

        2.敏感函数定位:掌握住可以存在危险函数的地方,进行反推,如:

       但是无论是哪一个审计方式都需要一定的编程功底,但是如果你的编程工地不够怎么办?

        其实可以尝试使用黑盒+白盒代码审计的方式进行一个学习,通过黑盒的方式进行测试,然后去了解究竟传参进去经过处理发生了什么?

        然后构建合适的语句进行尝试,最后找到问题所在点。

    2,渗透测试的步骤:

      1.黑盒测试:

        信息收集:whois、子域名、端口检测、指纹识别、目录扫描、C端、旁站、敏感信息收集。

        寻找功能点:

        sql注入:

          显错:GET、POST、COOKIE、HEAD。

          盲注:布尔盲注、时间盲注。

          其他:宽字节、偏移、mysqlDnsLog、sql server反弹、oracle报错。

        xss:反射型、存储型、Dom型。

        csrf

        文件上传

        xxe:simplexml_load_string()函数。

        逻辑漏洞:验证码绕过、密码找回、支付漏洞、越权漏洞、

      2.白盒测试:

        变量覆盖:

          extract()函数

          parse_str()函数

        文件包含:

          include()函数

          include_once()函数

          require()函数

          require_once()函数

        反序列化:
          unserialize()函数

    3,以CMS为例:

    1.划分功能模块:

      安装:

       重复安装,可以进入后台GetShell。

       很多网站,提倡站库分离,即网站与数据库不在同一台机器。

       重复安装是,可以将数据库外接到我们的公网数据库。

       注意:双引号解析只会发生在php5.5以上版本。

      前台:

       用户注册:

        可能存在的危害:

        sql注入、存储型xss、逻辑错误可爆破用户名。

        注册处理页面功能一般是:

         接收参数、过滤参数、插入数据库。

        审计思路:

         黑盒:

          正常注册,提交,抓包。

          查看请求包内容[主要是提交的数据]。

          查看提交数据有谁处理[找处理文件]。

          查看有没有标识符[不是我们提交的数据,但是它参与传参]。

           一般php文件可能有几个功能模块,标识符的作用就是调用哪个功能。

           去标识符文件,查看功能代码的作用。

            如果接受参数,直接插入数据库,没有过滤参数,那就会出现问题。

            比如注册地地方发现xss,如果只是在前台,那么影响不大,就可以登录后台查看,如果从前台打到后台,那危害就打了。

            当我们打出XSS的时候,就应该考虑这个地方是不是也具有sql注入。

            在填写注册信息的时候加上'"0#这四个符号试试闭合,如果注册成功,就没有什么危害了。

         白盒:

          去查看源代码怎么过滤的,找到具体的防护手段,看看是不是还有可能绕过。

          比如,

           遇到的魔术引号,可以使用宽字节,使用Burp的时候POST传参一般是不会进行url编码的,所需㤇更改hex。

           可以使用updatexml()并补充对应格式,最后加注释打出报错注入。

           对应格式可以通过seay代码审计工具,抓到。

           如果执行一直失败,就可以先将语句放到数据库执行,若没问题,说明cms有所防护[关闭了错误回显]。

           可以使用盲注、或者找回显点是怎么关闭[需要代码功底]

           但是如果存在验证码且验证码每次都改变,那么盲注就不行了。

           还有一种方法,就是:插入语句,可以实现一次插入多条数据的功能。

           想方法,将第一个value闭合,然后在进行一个数据插入,

           第二条数据插入就可以使用子查询等,查询出我们想要的数据。

           在注册的时候,会遇到提示用户名已注册这种情况,可以使用burp抓包爆破出数据库中都有哪些用户名。

      用户登录:

       可能存在的危害:

         宽字节注入-万能密码

         cookie未加密等

        如用户名输入:admin密码输入:%df' or 1=1#    

      修改资料:

       可能存在的危害:

        存储型XSS

        sql注入

        文件上传等  

      

                

  • 相关阅读:
    C#读取Excel设置(亲测可用)
    vue element-ui的对话框dialog没有height怎么解决?
    sqlserver不同服务器的不同数据库如何复制
    es6-对象与数组的解构赋值
    win10电脑上不了网了
    sqlserver数据库备份之后再还原
    “相对路径”以及“绝对路径”使用之坑
    sqlserver表-添加大量测试数据
    vue文件命名规范
    Git大小写问题
  • 原文地址:https://www.cnblogs.com/xz25/p/12785142.html
Copyright © 2011-2022 走看看