任意代码执行漏洞
2016-08-04 19:28
525 查看
--背景介绍--
当应用在调用一些字符串转化为代码的函数时,没有考虑用户是否能控制这个字符串,将造成代码注入漏洞。--相关函数--
PHP eval()、assert()python exec()
Java 没有类似于前面两者的函数,但是有反射机制,并且有基于反射机制的表达式引擎,如:0GNL、SpEL、 MVEL等
--PHP中能造成代码注入的主要函数--
①eval()
<span style="font-size:14px;"><?php $data = $_GET['data']; eval($ret = $data); echo $ret ?></span>
使的$data=phpinfo(),则可以显示phpinfo.php文件的内容
②assert()
和前者一样,都是将字符串当成代码来执行。
③preg_replace()+/e模式
<?php $data = $_GET['data']; preg_replace('/<data>(.*)<\/data>/e','$ret = "\\1";',$data); ?>
echo $reat
使的?data=<data>${phpinfo()}</data>
实例:
④unserialize() (反序列化函数)
--修复方案--
对于eval()函数,一定要保证用户不能轻易接触eval的参数,如果接触一定要使用单引号包裹可控代码,并在插入前进行addslashes
<?php $data = addslashes($data); eval("$data = deal('$data')"); ?>
对于preg_replace()函数,要放弃使用/e修饰符,也可以使用preg_replace_callback()函数代替。如果一定要使用该函数,请保证第二个参数中,对于正则匹配出的对象用单引号包裹。
相关文章推荐
- VMware Mac版本漏洞可任意执行恶意代码
- thinkphp任意代码执行漏洞
- Struts2/XWork远程执行任意代码漏洞
- ElasticSearch远程任意代码执行漏洞(CVE-2014-3120)分析
- MongoDB 任意代码执行漏洞(CVE-2013-4142)
- ThinkPHP framework 任意代码执行漏洞预警
- Hive任意命令/代码执行漏洞+渗透实例
- Struts 2最新0day破坏性漏洞(远程任意代码执行)等的重现方法
- WordPress Woopra Analytics插件‘ofc_upload_image.php’任意PHP代码执行漏洞
- PHP168 V6.02 整站系统远程执行任意代码漏洞利用
- IE 5.5 Index.dat 执行任意代码漏洞
- 百度搜霸工具条出现下载任意文件执行漏洞 含攻击代码
- Struts 2最新0day破坏性漏洞(远程任意代码执行)等的重现方法
- Struts2/XWork < 2.2.0远程执行任意代码漏洞分析及修补
- cve-2010-4452 codebase 和code标签属性未检测同源策略导致任意代码执行漏洞
- php cgi远程任意代码执行漏洞
- IE 5.5 Index.dat 执行任意代码漏洞
- WordPress 'is_serialized()'远程任意代码执行漏洞(CVE-2013-4338)
- IE 5.5 Index.dat 执行任意代码漏洞
- Struts S2-016 远程任意命令执行漏洞检测代码