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


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

查看所有标签

猜你喜欢:

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

疯狂又脆弱  坚定又柔软

疯狂又脆弱 坚定又柔软

朱墨 / 湖南文艺出版社 / 2018-3 / 39.80元

《疯狂又脆弱 坚定又柔软》是朱墨的一部作品集,介绍了作者考研到北京,工作在华谊,以及留学去英国的经历,在这短短几年中她一路升职加薪,25岁升任华谊宣传总监,27岁赚到人生的第一笔100万,30岁却毅然离职去英国留学,在表面的光鲜亮丽之下,她也曾付出过外人所不知道的心血和努力。她的人生告诉我们,每一个身居高位或者肆意潇洒的人,都曾为梦想疯狂地倾尽全力,而那些心怀梦想的人也总是怀揣一颗坚定又柔软的内心......一起来看看 《疯狂又脆弱 坚定又柔软》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

MD5 加密
MD5 加密

MD5 加密工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具