MapTiler Tileserver-php v2.0 中的未认证文件读取。
MapTiler Tileserver-php v2.0 存在目录遍历漏洞。tileserver.php 中的 renderTile 函数负责通过 Web 请求传递存储在服务器上作为文件的瓦片。构造文件路径时允许使用 '../',可借此读取 Web 服务器上的任意文件。 受影响的 GET 参数为 "TileMatrix"、"TileRow"、"TileCol" 和 "Format"
$name = './' . $tileset . '/' . $z . '/' . $x . '/' . $y;
$mime = 'image/';
if($ext != null){
$name .= '.' . $ext;
}
if ($fp = @fopen($name, 'rb')) {
if($ext != null){
$mime .= $ext;
}else{
//detect image type from file
$mimetypes = ['gif', 'jpeg', 'png'];
$mime .= $mimetypes[exif_imagetype($name) - 1];
}
header('Access-Control-Allow-Origin: *');
header('Content-Type: ' . $mime);
header('Content-Length: ' . filesize($name));
fpassthru($fp);
die;

Martin Herancourt