内容简介:Fracker是一套PHP函数调用追踪与分析的工具,其目标是在PHP应用程序的手动安全评估期间协助安全研究人员。它包括:需要安装在目标Web应用程序环境中的
Fracker是一套 PHP 函数调用追踪与分析的工具,其目标是在PHP应用程序的手动安全评估期间协助安全研究人员。
它包括:
需要安装在目标Web应用程序环境中的 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
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Python 函数调用&定义函数&函数参数
- Linux内核如何替换内核函数并调用原始函数
- gdb 如何调用函数?
- 汇编层面分析函数调用
- 理解 Golang 的函数调用
- Wasm 介绍(六):间接函数调用
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Data Structures and Algorithms in Java
Robert Lafore / Sams / 2002-11-06 / USD 64.99
Data Structures and Algorithms in Java, Second Edition is designed to be easy to read and understand although the topic itself is complicated. Algorithms are the procedures that software programs use......一起来看看 《Data Structures and Algorithms in Java》 这本书的介绍吧!