RIPS –代码审计靶场(第三关)
发布日期:2024-05-19 浏览次数: 专利申请、商标注册、软件著作权、资质办理快速响应热线:4006-054-001 微信:15998557370
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攻击,从而导致文件暴露。
- 上一篇:Webbug靶场第三关
- 下一篇:web渗透第一步之信息搜集 [ 找目标内网入口 ]