RIPS –代码审计靶场(第三关)_集群智慧网络安全云
全国客户服务热线:4006-054-001 疑难解答:159-9855-7370(7X24受理投诉、建议、合作、售前咨询),173-0411-9111(售前),155-4267-2990(售前),座机/传真:0411-83767788(售后),微信咨询:543646
企业服务导航

RIPS –代码审计靶场(第三关)

发布日期:2024-05-19 浏览次数: 专利申请、商标注册、软件著作权、资质办理快速响应热线:4006-054-001 微信:15998557370


RIPS –代码审计靶场(第三关)

function __autoload($className) { include $className;} $controllerName = $_GET['c'];$data = $_GET['d']; if (class_exists($controllerName)) { $controller = new $controllerName($data['t'], $data['v']); $controller->render();} else { echo 'There is no page with this name';} class HomeController { private $template; private $variables;  public function __construct($template, $variables) { $this->template = $template; $this->variables = $variables; }  public function render() { if ($this->variables['new']) { echo 'controller rendering new response'; } else { echo 'controller rendering old response'; } }} 这段代码中有两个安全漏洞。文件包含漏洞是由class_exists() 第8行的调用触发的。这里,检查用户提供的类名的存在。如果类名未知,这将自动在第1行中调用自定义自动加载器,这将尝试包含未知类。攻击者可以使用路径遍历攻击来滥用此文件包含。对类名的查找../../../../etc/passwd将泄漏passwd文件。该攻击仅在PHP 5.3版之前有效。但是还有另一个错误也可以在最新的PHP版本中使用。在第9行中,类名用于新的对象实例化。其构造函数的第一个参数也位于攻击者的控制之下。可以调用PHP代码库的任意构造函数。即使代码本身不包含易受攻击的构造函数,PHP的内置类SimpleXMLElement也可以用于XXE攻击,从而导致文件暴露。

RIPS –代码审计靶场(第三关)