如何动态调用危险的PHP函数来开发概念验证?

时间:2018-05-17 21:44:26

标签: php security penetration-testing

我正在进行白盒渗透测试,而我对PHP细节的不熟悉使得开发概念验证变得困难。这是一个我认为危险的功能的简化示例。 (为简单起见,我删除了一些验证和错误处理。)

function makeCall($myClass, $method, $args){
   $theClass = new $myClass();
   return $theClass->$method($args);
}

这个问题是潜在的攻击者可以通过像site.com/program.php/class/method?args=args之类的东西来控制所有参数。 makeCall的正常用法是公司制作的某个类和方法作为字符串传递给函数。我能够调用其他显然不打算调用的类,因此这里肯定存在一些问题。

我的目标是能够将exec用于$method param(或类似的东西),以证明此代码有多危险 - 远程代码执行是此处的目标。我不能为我的生活找出什么" class" exec(或类似的)将在其中(或者如果这是正确的问题)。是否有一个内置的类,有一个危险的方法,我可以用来证明我的观点?

例如,在C#中,我可以为类创建System.IO.File,为方法执行ReadAllLines,其中args是服务器上的敏感文件。我非常愿意接受#34的回答;这对于任何通用的php方法都不适用#34;但我想确定。

0 个答案:

没有答案