您的位置:首页 > 运维架构 > Apache

Apache SSI 远程命令执行漏洞 复现

2020-03-31 18:45 1186 查看

0x00 前言

利用条件

目标服务器开启了SSI与CGI支持

SSI

对html页面进行解析
https://www.geek-share.com/detail/2671678940.html

CGI

开启后可执行外带命令
https://blog.csdn.net/y_yang666/article/details/84790434

0x01 复现

1.环境

这里环境也是直接使用

docker-compose up -d

2.过程演示

首先访问

http://192.168.25.242:8080/upload.php

是一个上传的表单

直接上传会出现如下错误:

这里上传带有x.shtml
ps:shtml和html的区别
shtml可以理解为就是让ssi进行识别的html

<!--#exec cmd="ls" -->

成功执行命令

3.剖析

上docker容器上看一下源码

<?php
if (!empty($_FILES)):
$ext = pathinfo($_FILES['file_upload']['name'], PATHINFO_EXTENSION);
if (in_array($ext, ['php'])) {
die('Unsupported filetype uploaded.');
}

move_uploaded_file($_FILES['file_upload']['tmp_name'], './' . $_FILES['file_upload']['name']);
echo "<a href='/{$_FILES['file_upload']['name']}'>{$_FILES['file_upload']['name']}</a>";

endif;
?>
<form method="post" enctype="multipart/form-data">
File: <input type="file" name="file_upload">
<input type="submit">
</form>

这里实际上就是做了一个黑名单的防护。

0x02 修复

  • 关闭ssl
  • 对shtml进行黑名单限制
  • 点赞
  • 收藏
  • 分享
  • 文章举报
HAI_WD 发布了57 篇原创文章 · 获赞 0 · 访问量 3159 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: