自动化代码审计的四大思路及简单实现参考

思路一

简单正则匹配危险函数,跟入函数看输入变量是否可控。

优点

简单,可用程序完成不少工作。

缺点

  • 误报多,需要一个个确认输入变量。
  • 不容易发现二次注入之类二次漏洞。

    参考

  1. seay代码审计工具
  2. 自己写的小Demo

思路二

解析程序语法树,分析危险函数调用关系

优点

  • 纯静态分析,可全由程序处理
  • 可发现漏洞类型全,误报少

    缺点

  • 实现难
  • 无法直接处理面向对象类型的代码

    参考

    RIPS
    449700-20160801095757450-1767763746.jpg
    这个rips已经做的很好了,所以还没有自己去实现

思路三

将程序当作黑盒,外部通过工具查找输入,做出各种fuzz。观察并记录黑盒所有操作,如web请求,sql执行记录/错误记录,文件系统变更情况,php代码执行记录。而后和fuzz变量做比对,找出对应结果(或者可以通过时间来找出对应),记下fuzz请求即为漏洞点。

优点

  • 误报较少
  • 无人工

    缺点

  • 需要匹配fuzz请求和结果正则(可能需要正则)
  • 需要实现各种记录工具,较难
  • 如何记录fuzz请求和相应结果对应关系??目前可以想到时间或正则,但各有缺点
  • 效率极低

参考

http://cnki.scstl.org/KCMS/detail/detail.aspx?filename=1015528099.nh&dbcode=CMFD&dbname=CMFD2015
这个思路是之前忽然想到的,但是还没有实现,因为觉得效率会极低,没想到知网搜到一个文章……

思路四

通过Hook PHP底层函数,获得PHP执行时的如下信息:

  • 当前函数名称
  • 当前文件名称
  • 当前参数

当执行到危险函数时,跟踪执行流,找到危险函数的参数来源,如果来源可控,且没有过滤函数,那么认为是有漏洞

优点

  • 可以直接分析任何架构的PHP代码
  • 误报低

    缺点

  • 需要人工执行程序的各个功能
  • 开发难度高,需开发PHP扩展,目前的几个有关扩展几乎都存在问题

    参考

    最近写了这个的Demo,不过还没有完全完成,有兴趣的可以跟我一起看看。
    449700-20160801100057653-416303440.jpg
    目前完成了函数栈追述,函数参数可控定位,但是还有一些小问题没有解决。

转载于:https://www.cnblogs.com/yuris115/p/5724753.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值