RIPS --代码审计靶场(第三关)
2020-12-11 11:22:39 Author: mp.weixin.qq.com(查看原文) 阅读量:99 收藏


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 --代码审计靶场(第一关)

*RIPS 代码审计 - 第二关(Twig)


文章来源: http://mp.weixin.qq.com/s?__biz=MzAxMjE3ODU3MQ==&mid=2650495611&idx=3&sn=9015cb6a39d3d7c1e2bc5abf4e67851d&chksm=83ba3f9fb4cdb68936b7b63f5acb9b53589d10e1cdb5b8b52d0db0ff08713b0e83af491a38fe#rd
如有侵权请联系:admin#unsafe.sh