深入解读命令执行:基本概念、攻击技术和防范应对( 三 )


利用示例:
在php的www目录下创建一个.php文件,内容如下:

可以使用菜刀连接或浏览器的插件执行
C刀连接
4)远程代码执行- 函数
()函数是 PHP 中的一项功能较强大的函数,用于对数组中的所有元素按照相同的方式进行操作 。尽管其本身并不直接提供远程代码执行(RCE)攻击的风险,但如果未正确使用,则可能会产生安全隐患 。
黑客通常可利用 () 函数类似 eval 一样运行用户可控制的代码的特性来实现 RCE 攻击 。例如,黑客通过应用程序提交构造的PHP代码作为函数,最终将恶意脚本编译到函数体的某个位置以进行攻击 。这就意味着,当该函数被调用时,攻击者的代码将执行,再次使得黑客可以获取服务器的访问权限 。
为避免此类问题发生,需要在处理动态构建函数时采取严格的输入验证和数据过滤 。最好的方法是在不需要任意代码执行的情况下禁止 () 的使用,并利用其他可靠工具和安全库实现类似功能,如等语句等 。在任何情况下也应该避免使用用户可操作或可控制的数据来创建函数或处理HTML模板等事务,防止黑客利用已知漏洞引导代码来获取服务器访问权限 。
5)远程代码执行 - 函数
()函数是 PHP 中的一个内置函数,用于创建一个新的匿名函数并返回该函数的名称 。这使得可以将函数当作一种数据类型进行操作并将其传递给其他函数 。尽管在某些情况下很有用,但如果未正确使用,则可能产生安全隐患,特别是远程代码执行(RCE)攻击 。

深入解读命令执行:基本概念、攻击技术和防范应对

文章插图
黑客经常会利用 () 函数的漏洞实现远程代码执行 。
例子:
$inputCode = 'var_dump(phpinfo());'; $func=create_function('', $inputCode); $func();
变量 $ 采用了用户输入,这就为黑客提供了可控制参数和生成自由形式的PHP代码的机会,而不是直接编写新函数来实现相同的功能 。黑客使用可控制的 eval() 或 () 等正则表达式函数等建立新的代码字符串,并通过 () 来溢出shell执行上下文范畴,从而能够运行恶意代码 。
为了避免此类问题,最好在编写您的代码时完全避免使用()函数 。因为现有的PHP版本中已删除此功能,这可大大减少了黑客攻击的空间 。如果确实需要动态地构造新的PHP代码,应该改用受信任的框架和库提供的支持工具,如或闭包,以及过滤和验证所有用户输入,并堆栈溢出等漏洞进行正确管理 。最大限度地降低压力,保证代码执行过程的安全性和可靠性,提高应用程序面对攻击的韧性 。
6)远程代码执行- 函数
()函数是 PHP 中的一个内置函数,用于将函数作为参数传递并调用它 。尽管其本身没有直接提供远程代码执行(RCE)攻击的风险,但如果未正确使用,则可能会产生安全隐患 。
黑客可以利用 () 函数可接受用户控制参数的特性来实现 RCE 攻击 。例如,黑客利用漏洞动态构建并在该函数中执行恶意代码
例子:
$inputCode = 'phpinfo();'; // 攻击者可能控制的输入参数call_user_func($inputCode); // 调用 call_user_func() 执行 $inputCode 中的 PHP 代码
变量 $ 采用了用户输入,这就使得攻击者可以完全控制该参数,并向其中注入任意 PHP 代码,并最终使其被执行,从而令黑客可能获取服务器访问权限 。
为避免此类问题发生,建议在处理函数参数时采取严格的输入验证和过滤,并且不要允许调用任何用户定义或不受信任的数据集合,对于某些特殊情况,可以通过使用强类型声明、检查参数数量等技巧来限制启用基础类型第三方库等缺省PHP特性风险 。