Fracker:PHP函数调用追踪与分析工具

栏目: PHP · 发布时间: 5年前

内容简介:Fracker是一套PHP函数调用追踪与分析的工具,其目标是在PHP应用程序的手动安全评估期间协助安全研究人员。它包括:需要安装在目标Web应用程序环境中的

Fracker是一套 PHP 函数调用追踪与分析的工具,其目标是在PHP应用程序的手动安全评估期间协助安全研究人员。

它包括:

需要安装在目标Web应用程序环境中的 PHP扩展 ,它将跟踪信息发送给侦听器;

一个 侦听器应用 ,负责接收跟踪信息并执行一些分析,以向用户显示一些有价值的数据。

Fracker:PHP函数调用追踪与分析工具

Demo

克隆或下载该存储库,然后进入根目录。

Spin一个新的使用PHP支持正在运行Apache的 Docker 容器:

$ docker run --rm -d -p 80:80 --name hello-fracker php:apache

创建一些虚拟PHP脚本作为索引:

$ docker exec -i hello-fracker tee /var/www/html/index.php <<\EOF
<?php
    function foo($cmd) {
        system('echo ' . preg_replace('/[^a-z]/i', '', $cmd));
    }

    $a = explode(' ', $_GET['x']);
    var_dump($a);
    foreach ($a as $cmd) {
        foo($cmd);
    }
EOF

测试PHP文件是否正确提供:

$ curl 'http://localhost/?x=Hello+Fracker!'

将Fracker部署到容器:

$ scripts/deploy.sh hello-fracker

在本地安装依赖项(这只需要执行一次):

$ npm install -C app

启动Fracker:

$ app/bin/fracker.js

再次运行上面的curl命令(输出应与上面的截图类似)。

使用–help再次运行Fracker并尝试其他选项。

停止并移除容器:

$ docker stop hello-fracker

架构

每个PHP请求或命令行调用都会触发与侦听器的TCP连接。该协议只是从PHP扩展到侦听器的以换行方式终止的JSON对象流,这些对象包含有关当前请求、执行的调用和返回值的信息。

这种分离允许用户实现自己的工具。可以通过将流内容转储到标准输出来检查原始JSON对象,例如:

$ socat tcp-listen:6666,fork,reuseaddr 'exec:jq .,fdout=0'

PHP 扩展

PHP扩展是从Xdebug派生出来的的,因此安装过程完全相同,故障排除也是如此。

使用Fracker最简便的方式可能就是使用提供的脚本,将其部署到Web服务器所在的Docker容器中。使用手动方法获得更通用的解决方案。

部署脚本

这个脚本应该与类Debian发行版开箱即用:

$ scripts/deploy.sh <container> [<port> [<host>]]

它将PHP模块配置为连接到指定端口的指定主机(默认为运行Docker和端口6666的主机)。

手动设置

需要在ext目录中执行以下操作。

使用以下代码构建PHP扩展:

$ phpize
$ ./configure
$ make

(要在重要的代码更改之后重建,只需重新运行make。)

要检查一切是否正常,请启动侦听器应用程序,然后像这样运行PHP:

$ php -d "zend_extension=$PWD/.libs/xdebug.so" -r 'var_dump("Hello Fracker!");'

最后,安装PHP扩展:

make install;

将zend_extension=xdebug.so放在由PHP解析的INI文件中,以及任何其他自定义设置中。

使用以下方法clean源目录:

$ make distclean
$ phpize --clean

设置

以下为Fracker使用的最常用设置的模板:

; trace only those requests with XDEBUG_TRACE=FRACKER in GET, POST or cookie
xdebug.auto_trace = 0
xdebug.trace_enable_trigger = 1
xdebug.trace_enable_trigger_value = FRACKER

; do not collect function arguments
xdebug.collect_params = 0

; do not collect return values
xdebug.collect_return = 0

; custom application address
xdebug.trace_fracker_host = 127.0.0.1
xdebug.trace_fracker_port = 6666

侦听器应用

提供的侦听器应用是Node.js包。使用以下命令安装依赖项:

$ npm install -C app

(可选)通过创建该文件夹的符号链接来全局安装可执行文件:

$ npm install -g app

然后只需运行fracker,或使用app/bin/fracker.js在本地运行它。

配置

长格式的命令行选项可以写入yaml文件(camel case),并作为命令行参数传递。可以指定具有更高优先级的多个文件,但命令行选项的优先级最高。

为方便起见,我们为大家提供列出了一些有趣的PHP函数类的 配置文件 。你可以像下面这样使用它们:

$ fracker app/configs/file-* # ...

*参考来源: github ,FB小编secist编译,转载请注明来自FreeBuf.COM


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

设计模式之禅(第2版)

设计模式之禅(第2版)

秦小波 / 机械工业出版社 / 2014-2-25 / 89.00元

本书是设计模式领域公认的3本经典著作之一,“极具趣味,容易理解,但讲解又极为严谨和透彻”是本书的写作风格和方法的最大特点。第1版2010年出版,畅销至今,广受好评,是该领域的里程碑著作。深刻解读6大设计原则和28种设计模式的准确定义、应用方法和最佳实践,全方位比较各种同类模式之间的异同,详细讲解将不同的模式组合使用的方法。第2版在第1版的基础上有两方面的改进,一方面结合读者的意见和建议对原有内容中......一起来看看 《设计模式之禅(第2版)》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

SHA 加密
SHA 加密

SHA 加密工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具