远程代码执行漏洞

1.简介

远程代码执行(remote code execution)简称RCE,由于应用程序在调用一些能够将字符串转换为代码的函数(如PHP中的eval)时,没有考虑用户是否控制这个字符串,则会导致代码执行漏洞的发生Webshell能够执行代码,本质上就是利用了代码执行的函数

代码执行相关函数:

PHP: eval、assert、preg_replace()、+/e模式(PHP版本<5.5.0)

Javascript: eval

Vbscript:Execute、Eval

Python: exec

Java: Java中没有php中eval函数这种直接可以将字符串转化为代码执行的函数,但是有反射机制,并且有各种基于反射机制的表达式引擎,如:OGNL、SpEL、MVEL等,这些都能造成代码执行漏洞。

2.Php

(1)Eval

格式:eval (string ¥code)

作用:字符串按照PHP代码来计算。该字符串必须是合法的 PHP代码,且必须以分号结尾

<?php

eval($_POST['a']);

?>

(2)Assert

语法: assert(mixed assertion,stringdescription]

作用:检查一个断言是否为FALSE。如果assertion 是字符串,它将会被assert当做PHP代码来执行。不需要以分号结尾。

<?php

assert($_POST['a']);

?>

(3)preg_replace

语法: preg_replace( mixed pattern, miedreplacement ,mixed subject ,intlimit = -1Lint&Scount]l)

作用:执行一个正则表达式的搜索和替换,搜索 subject 中匹配 pattern 的部分,以replacement 进行替换。

<?php

echo(preg_replace("/test/",$_POST["a"],"just test"));

?>

如果使用了/e修饰符,则会将替换后的字符串作为php代码执行(eval函数方式)

<?php

echo(preg_replace("/test/e",$_POST["a"],"just test"));

?>

(4)call_user_func

语法: call_user_func(callable callbacklmiedparameterl mixed S...)

作用:把第一个参数作为回调函数调用,第一个参数 calback 是被调用的回调函数,其余参数是回调函数的参数。 (我们调用php系统提供的函数叫直接调用,也叫: 直调,而php系统调用用户自定义的函数,必须要通过一个代理函数来调用,叫间接调用,也叫回调。在PHP中有两种常见的回调函数:calluser_func0和calluser func array0,它们可以代替系统来调用我们自己定义的函数)

<?php

call_user_func("assert",$_POST['cmd']);

?>

  • 18
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值