zoukankan      html  css  js  c++  java
  • 安全测试-WEB安全渗透测试基础知识(五)

    1.5. 代码审计

    1.5.1. 简介

    代码审计是找到应用缺陷的过程。其通常有白盒、黑盒、灰盒等方式。白盒指通过对源代码的分析找到应用缺陷,黑盒通常不涉及到源代码,多使用模糊测试的方式,而灰盒则是黑白结合的方式。

    1.5.2. 常用概念

    1.5.2.1. 输入

    应用的输入,可以是请求的参数(GET、POST等)、上传的文件、网络、数据库等用户可控或者间接可控的地方。

    1.5.2.2. 处理函数

    处理数据的函数,可能是过滤,也可能是编解码。

    1.5.2.3. 危险函数

    又常叫做Sink Call、漏洞点,是可能触发危险行为如文件操作、命令执行、数据库操作等行为的函数。

    1.5.3. 自动化审计

    一般认为一个漏洞的触发过程是从输入经过过滤到危险函数的过程,而审计就是寻找这个链条的过程。

    1.5.3.1. 危险函数匹配

    白盒审计最常见的方式是通过搜寻危险函数与危险参数定位漏洞,比较有代表性的工具是Seay开发的审计工具。这种方法误报率相当高,这是因为这种方法没有对程序的流程进行深入分析,另一方面,这种方式通常是孤立地分析每一个文件,忽略了文件之间复杂的调用关系。

    具体的说,这种方式在一些环境下能做到几乎无漏报,只要审计者有耐心,可以发现大部分的漏洞,但是在高度框架化的代码中,能找到的漏洞相对有限。

    1.5.3.2. 控制流分析

    在后来的系统中,考虑到一定程度引入AST作为分析的依据,在一定程度上减少了误报,但是仍存在很多缺陷。

    而后,Dahse J等人设计了RIPS,该工具进行数据流与控制流分析,结合过程内与过程间的分析得到审计结果,相对危险函数匹配的方式来说误报率少了很多,但是同样的也增加了开销。

    1.5.3.3. 灰盒分析

    国内安全研究员fate0提出了基于运行时的分析方式,解决了控制流分析实现复杂、计算路径开销大的问题。

    1.5.4. 手工审计方式

    • 拿到代码,确定版本,确定能否正常运行

      找历史漏洞

      找应用该系统的实例

    • 简单审计,运行审计工具看是否有漏洞

    • 大概看懂整个程序是如何运行的

      文件如何加载

      类库依赖

      有没有加载waf

    • 数据库如何连接

      mysql/mysqli/pdo

      有没有用预编译

    • 视图如何形成

      能不能xss

      能不能模版注入

    • SESSION如何处理

      文件

      数据库

      内存

    • Cache如何处理

      文件cache可能写shell

      数据库cache可能注入

      memcache

    • 看账户体系

    • 管理员账户的密码

      加密方式

      泄漏数据后能不能爆破密码

      重置漏洞

    • 修改密码漏洞

      修改其他人密码

    • 普通用户的帐号

      能否拿到普通用户权限

      普通用户帐号能否盗号

      重点找没有帐号的情况下可以访问的页面

      是不是OAuth

    • 攻击

      SQLi

      看全局过滤能否bypass

      看是否有直接执行sql的地方

    • 看是用的什么驱动,mysql/mysqli/pdo

      如果使用PDO,看是否是直接执行的地方

    • XSS

      全局bypass

      直接echo

      看视图是怎么加载的

    • FILE

      上传下载覆盖删除

    • 包含

      LFI

      RFI

      全局找include, require

    • 正常上传

      看上传是如何确定能否上传文件的

    • RCE

      call_user_func

      eval

      assert

      preg_replace /e

      XXE

      CSRF

      SSRF

      反序列化

    • 变量覆盖

      extract

      parse_str

      array_map

      LDAP

      XPath

      Cookie伪造

    • 过滤

    • 找WAF

      看waf怎么过滤的,相应的如何绕过

  • 相关阅读:
    30行js让你的rem弹性布局适配所有分辨率(含竖屏适配)(转载)
    JavaScript事件流原理解析
    Java中this和super的用法和区别
    Java多态面试题案例几解题思路
    Java多态的向上转型和向下转型
    Java方法的重载和重写
    Java冒泡具体的原理,以及下标的变化
    Java中的冒泡排序和选择排序
    使用Java实现对一个数组的增删改查以及初始化
    Java中构造函数传参数在基本数据类型和引用类型之间的区别
  • 原文地址:https://www.cnblogs.com/gegelaopiaoke/p/12743597.html
Copyright © 2011-2022 走看看