RIPS 代码审计 - 第二关(Twig)
2020-12-10 11:05:45 Author: mp.weixin.qq.com(查看原文) 阅读量:56 收藏


文章来源:红数位

靶场源码:
// composer require "twig/twig"require 'vendor/autoload.php';
class Template {private $twig;
public function __construct() {$indexTemplate = '<img ' .'src="https://loremflickr.com/320/240">' .'<a href="{{link|escape}}">Next slide ?</a>';
// Default twig setup, simulate loading// index.html file from disk$loader = new Twig\Loader\ArrayLoader(['index.html' => $indexTemplate]);$this->twig = new Twig\Environment($loader);}
public function getNexSlideUrl() {$nextSlide = $_GET['nextSlide'];return filter_var($nextSlide, FILTER_VALIDATE_URL); //验证是否获取的实参是否为真正的URL}
public function render() {echo $this->twig->render( 'index.html',['link' => $this->getNexSlideUrl()]);}}
(new Template())->render();
该代码在第26行中包含一个跨站点脚本漏洞。有两个过滤器试图确保传递给<a>标记的链接 是一个真正的URL。首先,第filter_var()22行中的 函数检查它是否为有效的URL。然后,在第10行中使用Twig的模板转义,这避免了超出 href属性的情况。
仍可以通过以下URL利用此漏洞:?nextSlide=javascript://comment%0aalert(1)。有效负载不包含任何会受到Twig的转义影响的标记字符。
同时,它是的有效网址filter_var()。我们使用了JavaScript协议处理程序,然后引入了JavaScript注释 //,然后实际的JS有效负载在换行符之后。单击链接后,将在受害者的浏览器中执行JavaScript有效负载。

推荐文章++++

*【代码审计】对另一套钓鱼网站的代码审计

*PHP代码审计入门笔记合集(共20篇)

*Ecshop 4.0 SQL(代码审计从Nday到0day )


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