任意代码命令执行漏洞
其他
2020-03-21 15:15:27
阅读次数: 0
代码执行:
|
- 当应用在调用一些能将字符串转化成代码的函数时,没有考虑用户是否能够控制这个字符串,将造成代码注入漏洞。
|
|
- eval
- assert
- preg_replace(‘/*/e', '$ret = "\\1";',$data);
|
|
- eval
- exevute
- executeglobal
|
|
- jsp中没有php中的eval函数,但是可以使用反射机制,使用基于反射机制的表达式引擎,如0GNL,SpEL,MVEL等。
|
代码执行漏洞:
- 1、由于thinkphp存在代码执行漏洞,我们可以使用谷歌语法来搜索这类网站。
|
|
简单的代码执行:
- <?php
- $data = $_GET[‘data’];
- eval("\$ret = strtolower(\"$data\");");
- echo $ret;
- ?>
|
利用方式:
- http://localhost/?data=${phpinfo();}
代码执行的防御方法:
- 1、使用json保存数组,当读取时就不需要使用eval了。
|
- 2、对于必须使用eval的地方,一定严格处理用户数据(白名单、黑名单)。
|
- 3、字符串使用单引号包括可控代码,插入前使用addslashes转义(addslashes、魔数引号、htmlspecialchars、 htmlentities、mysql_real_escape_string)。
|
- 4、放弃使用preg_replace的e修饰符,使用preg_replace_callback()替换(preg_replace_callback())。
|
- 5、若必须使用preg_replace的e修饰符,则必用单引号包裹正则匹配出的对象(preg_replace+正则)。
|
发布了48 篇原创文章 ·
获赞 145 ·
访问量 5633
转载自blog.csdn.net/cldimd/article/details/105009974