网络安全从入门到精通(第十章-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注入

    文件上传等  

  

            

posted @ 2020-04-27 10:50  TheHIde  阅读(342)  评论(0)    收藏  举报