一、PHP扩展进行代码分析(动态分析)

基础环境

apt-get install php5

apt-get install php5-dev

apt-get install apache

apt-get install mysql

使用PHPTRACERT

mkdir godhead

编辑php.ini,增加

extension=trace.so

测试

}

CLI

php test.php &

ps -axu|grep php

./phptrace -p pid

APACHE

curl 127.0.0.1/test.php

ps -aux|grep apache

./phptrace -p pid

PHPTRACE分析

执行的代码如下

}

执行顺序是

a>b>c>echo

参数含义

日志输出

{"seq":0, "type":1, "level":1, "func":"{main}", "st":1448387651119445, "params":"", "file":"/var/www/html/2.php", "lineno":11 }

{"seq":1, "type":1, "level":2, "func":"a", "st":1448387651119451, "params":"", "file":"/var/www/html/2.php", "lineno":11 }

{"seq":2, "type":1, "level":3, "func":"b", "st":1448387651119452, "params":"", "file":"/var/www/html/2.php", "lineno":9 }

{"seq":3, "type":1, "level":4, "func":"c", "st":1448387651119453, "params":"", "file":"/var/www/html/2.php", "lineno":6 }

{"seq":4, "type":2, "level":4, "func":"c, "st":1448387651119457, "return":"NULL", "wt":4, "ct":4, "mem":48, "pmem":144 }

{"seq":5, "type":2, "level":3, "func":"b, "st":1448387651119459, "return":"NULL", "wt":7, "ct":6, "mem":48, "pmem":144 }

{"seq":6, "type":2, "level":2, "func":"a, "st":1448387651119459, "return":"NULL", "wt":8, "ct":8, "mem":80, "pmem":176 }

{"seq":7, "type":2, "level":1, "func":"{main}, "st":1448387651119460, "return":"1", "wt":15, "ct":14, "mem":112, "pmem":208 }

逻辑分析

1.解析监控进程

开一个后台进程一直刷新进程列表,如果出现没有tracer的进程就立即进行托管

2.JSON提取

通过对每一个文件的json进行提取,提取过程如下

1.便利所有文件

2.读读取文件

3.提取json,按照seq排序

4.提取type=2的与type=1的进行合并

5.按照level梳理上下级关系存储同一个字典

6.按照seq排序,取出头函数进行输出

7.提取恶意函数往上提取level直到level=0

函数对应如下

}

3.

通过追踪危险函数,然后将其函数执行之前的关系梳理出来进行输出,然后再进行人工审查。

放上demo

使用XDEBUG

安装

apt-get install php5-xdebug

修改php.ini

[xdebug]

zend_extension = "/usr/lib/php5/20131226/xdebug.so"

xdebug.auto_trace = on

xdebug.auto_profile = on

xdebug.collect_params = on

xdebug.collect_return = on

xdebug.profiler_enable = on

xdebug.trace_output_dir = "/tmp/ad/xdebug_log"

xdebug.profiler_output_dir = "/tmp/ad/xdebug_log"

放上几个demo图片

优缺点

缺点

人为参与力度较大,无法进行脱离人工的操作进行独立执行。

优点

精准度高,对于面向对象和面向过程的代码都可以进行分析。

二、语法分析(静态分析)

案例:

http://php-grinder.com/

http://rips-scanner.sourceforge.net/

使用PHP-PARSER

介绍:

http://www.oschina.net/p/php-parser

https://github.com/nikic/PHP-Parser/

安装

git clone https://github.com/nikic/PHP-Parser.git & cd PHP-Parser

curl -sS https://getcomposer.org/installer | php

PHP >= 5.3; for parsing PHP 5.2 to PHP 5.6

php composer.phar require nikic/php-parser

PHP >= 5.4; for parsing PHP 5.2 to PHP 7.0

php composer.phar require nikic/php-parser 2.0.x-dev

测试

$parser = (new ParserFactory)->create(ParserFactory::PREFER_PHP7);

输出如下

Array

由此可见,我们需要提取出

[0] => PhpParserNodeExprEval_ Object

[name] => _POST

[parts] => Array

(

[0] => c

)

然后进行拼接之后即可发现原始语句是:

eval($_POST[c])

逻辑分析

代码解析

1.通过该库进行语法分析

2.提取结果

3.提取危险函数

4.提取危险函数中存在的变量

5.从上文中提取此变量的赋值方式

6.分析出可控结果

7.输出结果

优缺点

缺点

对于面向对象的程序进行分析比较弱。

优点

适合大批量的自动化分析,可以脱离人工操作进行独立执行

文章出处:

php工具能自动出代码的,打造自己的PHP半自动化代码审计工具相关推荐

  1. php模板读取工具,打造自己的php半自动化代码审计工具

    0x00 PHP扩展进行代码分析(动态分析) 一.基础环境 #!bash apt-get install php5 apt-get install php5-dev apt-get install a ...

  2. git自动部署代码到服务器windows,Jenkins-在windows上配置自动化部署(Jenkins+Gitlab+IIS)...

    Jenkins-在windows上配置自动化部署(Jenkins+Gitlab+IIS) web部署样例 windows服务部署样例 系统备份 在服务器上创建后缀名为.ps1的文件,例:BackUpD ...

  3. 静态代码分析工具列表--常用静态代码分析工具介绍

    代码检测简介 本文是一个静态代码分析工具的清单,但是为公司产品需要付费使用.共有37个公司,有些公司包含多个工具.其中27个公司有多语言 工具,1个公司为PHP工具.2个公司为.NET工具.1个公司为 ...

  4. mysql中怎样自动生成代码_MySql之自动生成CRUD代码

    MySql之自动生成CRUD代码 MyBatis能够通过获取MySql中的information_schema从而获取表的字段等信息,最后通过这些信息生成代码. 笔者受此启发,将MyBatis-Gen ...

  5. 第37篇:fortify代码审计工具的使用技巧(1)-审计java代码过程

     Part1 前言  在正式文章之前,插播一下:恭喜梅西圆梦,获得世界杯冠军,加冕球王,一场精彩绝伦的球赛.开心之后,还是要静下心学习的,我们也要继续努力. Fortify全名叫Fortify SCA ...

  6. 五个有用的工具帮助您提高代码质量

    前言 对于开发人员而言,代码质量一直是一个非常重要的话题.高质量的代码不仅可以提高应用程序的性能,还可以减少代码错误和维护成本.然而,如何确保代码质量呢?下面介绍五个有用的工具,可以帮助您提高代码质量 ...

  7. PHP代码审计工具——rips

    一.代码审计工具介绍 代码审计工具可以辅助我们进行白盒测试,大大提高漏洞分析和代码挖掘的效率. 在源代码的静态安全审计中,使用自动化工具辅助人工漏洞挖掘,一款好的代码审计软件,可以显著提高审计工作的效 ...

  8. 静态代码审计工具Cobra/Cobra-W/find-sec-bugs

    8.4更新 cobra关键解析流程: ## cli.py ->start scan_engine(target_directory=target_directory, a_sid=a_sid, ...

  9. 工欲善其事,必先利其器:5大Java自动化部署工具

    工欲善其事必先利其器:5大Java自动化部署工具,下面和小编一起来看看吧! 在Java开发工具中,有一种是自动化部署工具,下面小编就给大家介绍五大Java自动化部署工具: Jenkins Jenkin ...

最新文章

  1. 在计算机术语中常用byte表示,2016年计算机一级MS Office上机考试题
  2. HDLBits 系列(2)如何避免生成锁存器?
  3. 你多久没换过壁纸了?新年了,换一换吧!
  4. 数据结构-常用的排序算法
  5. Java 7:使用NIO.2进行文件过滤-第1部分
  6. smarty二维foreach示例[顺代一维数组],再次加强版
  7. ThreadLocal 从源码角度简单分析
  8. Service绑定模式
  9. linux mint关于web开发的相关环境配置
  10. 线上只执行一次的脚本编写注意事项
  11. 【计算机网络】Linux系统连接吉林大学校园网
  12. IDS与IPS的区别是什么?
  13. 二项分布的极大似然估计
  14. atomic头文件编译_c++11 多线程(3)atomic 总结
  15. Reflector 引起VS2013无法调试(Debug)并异常关闭
  16. 给计科专业的学弟学妹们的一封信
  17. API管理平台,管理企业所有API资产
  18. Solver 配置详解
  19. 学在信息——一方豪杰
  20. 【初学疑惑】开发者工具可信度高吗?Python爬虫实战场景

热门文章

  1. 手把手教你用Unet实现语义分割(Pytorch版)
  2. 巨头秀区块链肌肉 原生军机会何在?
  3. python文件操作和绘制曲线
  4. db2去除字段值的空格_DB2表数据中存在空格问题解决办法
  5. 日语文章,每天一篇 第1章 青春 第1篇 まだまだ先(さき)があります
  6. Python分布式爬虫打造搜索引擎
  7. 【论文精读】Parallax-Tolerant Image Stitching Based on Robust Elastic Warping
  8. 《Redis设计与实现》第十一章 AOF持久化
  9. 2022年国家高新企业认定申报最全问答-财务数据篇
  10. Java日常实习 京东/爱奇艺面经