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

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

内容简介: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


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

查看所有标签

猜你喜欢:

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

计算几何

计算几何

周培德 / 清华大学出版社 / 2011-9 / 82.00元

《计算几何--算法设计与分析(第4版)》(作者周培德)系统地介绍了计算几何中的基本概念、求解诸多问题的算法及复杂性分析,概括了求解几何问题所特有的许多思想方法、几何结构与数据结构。全书共分10章,包括:预备知识,几何查找(检索),多边形,凸壳及其应用,Voronoi图、三角剖分及其应用,交与并及其应用,多边形的获取及相关问题,几何体的划分与等分,路径与回路,几何拓扑网络设计等。 《计......一起来看看 《计算几何》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具