tinytracer

  • 实践
    • CTF
    • 项目实践
  • 技术
    • C++
    • 逆向与汇编
    • 区块链安全
  • 探索
    • OWASP汉化
    • SQL
    • Kali
TinyTracer
In solitude, where we were at least alone.
  1. 首页
  2. 探索
  3. OWASP汉化
  4. 正文

(OWASP个人汉化)攻击系列大全:函数注入

2018年4月18日 1344点热度 0人点赞 0条评论

最新版本(mm/dd/yy):09/1/2016

翻译自Function Injection

漏洞介绍

函数注入攻击包括从客户端向应用程序插入或“注入”函数名称。一次成功的函数注入攻击可以执行任何内置或者用户自定义的函数。函数注入攻击是注入攻击的一类,将带参数或无参的任意函数注入应用程序并执行。如果参数传递给注入函数,会导致远程代码执行。

风险因素

  • 这些类型的漏洞可能很难找到,也可能很容易找到
  • 如果找到,通常难以利用,取决于具体情况。
  • 如果成功利用,影响可能包括机密性丧失,完整性丧失,可用性损失和/或责任丧失

攻击示例

示例1

如果应用程序将通过GET请求发送的参数传递给PHP,然后通过在变量名后面包含()将该参数作为函数进行计算,则该变量将被视为函数并将被执行。下面的URL向脚本传递一个函数名
http://testsite.com/index.php?action=edit
index.php文件包含以下代码

<?php
$action = $_GET['action'];
$action();
?>

通过这种方法攻击者可以执行在脚本中执行任意函数,如phpinfo
http://testsite.com/index.php?action=phpinfo

示例2

该示例是示例1的扩展且更危险的版本,本示例中,引用不仅允许提供函数名,也允许提供该函数的参数
http://testsite.com/index.php?action=edit&pageid=1
index.php包含以下代码

<?php
$action = $_GET['action'];
$pageid = $_GET['pageid'];
$action($pageid);
?>

在此情况下攻击者不仅可以传递函数名,而且可以传递函数的参数,这意味着可以通过使用任意命令传递给系统函数来导致远程代码执行
http://testsite.com/index.php?action=system&pageid=ls
这将会在系统中执行ls命令

示例3

此示例显示了使用call_user_func而不是使用括号来评估用户函数的另一种方法。
http://testsite.com/index.php?action=edit
index.php包含以下代码

<?php
$action = $_GET['action'];
call_user_func($action);
?>

与示例1相似,攻击者可以向脚本传递任意函数名,如phpinfo
http://testsite.com/index.php?action=phpinfo

示例4

该示例是示例3的扩展且更危险的版本,本示例中,应用将向call_user_func传递另一个参数,它将作为参数传递给call_user_func的第一个参数中提供的函数,多个参数可以用数组的形式传递给call_user_func。
http://testsite.com/index.php?action=edit&pageid=1
index.php包含以下代码

<?php
$action = $_GET['action'];
$pageid = $_GET['pageid'];
call_user_func($action,$pageid);
?>

在这种情况下,攻击者不仅会传递函数名,而且还会传递该函数的参数,这意味着可以通过使用任意命令传递给系统函数来导致远程代码执行。
http://testsite.com/index.php?action=system&pageid=ls
这将会在系统中执行ls命令

相关攻击代理

  • 类别:互联网攻击
  • 内部软件开发商

相关攻击类型

  • 命令注入
  • SQL注入
  • LDAP注入
  • SSI注入
  • 跨站点脚本(XSS)

相关防御措施

  • 输入验证
  • 规范化

参考

call_user_func - call_user_func的PHP文档。
call_user_func_array - call_user_func的PHP文档

标签: 函数注入
最后更新:2018年4月22日

Chernobyl

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理。

COPYRIGHT © 2024 tinytracer. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang