本项目仅仅是一个备份,更多信息,请访问FUGIO源码 https://github.com/WSP-LAB/FUGIO
FUGIO is the first automatic exploit generation (AEG) tool for PHP object injection (POI) vulnerabilities. When exploiting a POI vulnerability, an attacker crafts an injection object by carefully choosing its property values to invoke a chain of existing class methods or functions (gadgets) for finally triggering a sensitive function with attack payloads. The technique used in composing this exploit object is called property-oriented programming (POP). FUGIO identifies feasible POP gadget chains considering the availability of gadgets and their caller-callee relationships via static and dynamic analyses. FUGIO then conducts a feedback-driven fuzzing campaign for each identified POP chain, thus producing exploit objects. For more details, please refer to our paper, "FUGIO: Automatic Exploit Generation for PHP Object Injection Vulnerabilities", which will appear in USENIX Security 2022.
FUGIO is tested on a machine running Ubuntu 18.04. Python 3 and PHP (5.4, 5.6, or 7.2) are required to run FUGIO. We provide three Docker images depending on PHP versions in FUGIO-artifact. If you use the given Docker images, follow the instructions in Prepare Docker containers and then go to the phase 2.
Clone git repo
git clone --recurse-submodules https://github.com/WSP-LAB/FUGIO.git
cd FUGIO
Install Docker
Run RabbitMQ Docker
./run_rabbitmq.sh
.
Install Python 3 pip
sudo apt-get install -y python3-pip
Install PHP Composer
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \
php composer-setup.php && \
php -r "unlink('composer-setup.php');" && \
mv composer.phar /usr/local/bin/composer
Install PHP libraries
sudo apt-get install -y autoconf apache2-dev libxml2-dev libbz2-dev \
libcurl4-gnutls-dev libjpeg-dev libpng-dev libmcrypt-dev
sudo ln -s /usr/include/x86_64-linux-gnu/curl /usr/local/include/
wget -O /tmp/bison-2.6.tar.gz http://ftp.gnu.org/gnu/bison/bison-2.6.tar.gz
tar -xvf /tmp/bison-2.6.tar.gz -C /tmp
cd /tmp/bison-2.6
./configure --prefix=/usr/local/bison --with-libiconv-prefix=/usr/local/libiconv/
make
sudo make install
sudo ln -s /usr/local/bison/bin/bison /usr/bin/bison
git clone https://github.com/openssl/openssl.git /tmp/openssl
cd /tmp/openssl
git checkout OpenSSL_1_0_2-stable
./config shared
make
sudo make install
git clone https://github.com/php/php-src.git /tmp/php-src
cd /tmp/php-src
git checkout PHP-5.4
./buildconf
./configure --with-mysql --with-zlib --with-gd --with-mhash --with-mcrypt \
--with-curl --with-openssl --with-zlib --with-jpeg-dir --with-png-dir --with-gettext \
--with-pcre-regex --with-pdo-mysql --enable-calendar --enable-exif --with-bz2 \
--enable-ftp --enable-mbstring --enable-shmop --enable-soap --enable-bcmath \
--enable-sockets --enable-wddx --enable-zip --with-mysqli --with-apxs2=/usr/bin/apxs2
make
sudo make install
sudo cp php.ini-production /usr/local/lib/php.ini
sudo apt-get install -y php5.6-dev php5.6-bcmath php5.6-mbstring php5.6-xml
sudo apt-get install -y php7.2-dev php7.2-bcmath php7.2-mbstring php7.2-xml
Install dependencies
./install_XX.sh
depending on the version of PHP.
./install_54.sh
./install_56.sh
./install_72.sh
Prepare the target application source code and its running service
Setting for monitoring POI vulnerabilities
.htaccess
file for monitoring POI vulnerabilities by running ./htaccess.py on
.
If you want to stop monitoring, run htaccess.py off
.Execute FUGIO using ./run.py
.
# ./run.py
usage: run.py [-h] [--all] [--rabbitmq_ip RABBITMQ_IP]
[--php_ver {5,7}] [--hook_extension {uopz,runkit}] [--cpus CPUS]
target
rabbitmq_ip
: the IP address of RabbitMQphp_ver
: the version of PHP, choose 5 or 7 (default 5)hook_extension
: the library for using hooks to PHP built-in functions, choose uopz or runkit (default uopz)cpus
: the number of CPU cores for assigning to run FUGIO (default all CPU cores)target
: the path of the target application source codeall
: enable if you want to consider all gadgets regardless of their availability (default false)For more concrete examples, refer to scripts run_FUGIO_XX.sh
.
If you run the command, FUGIO starts to analyze the source code of the target application.
At the first run, FUGIO generates a dump file in Files/dump_files
.
It is for reducing time to analyze the target source code when you run FUGIO again for the same application.
If the source code of the target application changed, you need to delete its dump file and run the script again.
Monitor POI vulnerabilities
After FUGIO finishes analyzing the source code, FUGIO starts to monitor a POI vulnerability.
We can trigger POI vulnerabilities using crawlers, spiders, or manual browsing.
In Trigger
folder, we provide scripts for triggering POI vulnerabilities of our benchmarks; you can find the details
in FUGIO-artifact.
All outputs are generated in the Files/fuzzing/[app_path.time]/PUT/
directory.
put-head.php
and put-body.php
: a PUT fileinst_PUT.php
: an instrumented PUT file for fuzzing the target applicationprocX_X_X_X_X_X.chain
: an identified POP chainPROBABLY_EXPLOITABLE
: a directory for probably exploitable exploit objects (payloads)EXPLOITABLE
: a directory for exploitable exploit objects (payloads)此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。