淘先锋技术网

首页 1 2 3 4 5 6 7

我的博客:acsec.xyz
微信公众号: Ac sec

一.SSI注入

1.概述

SSI:服务器端嵌入或者叫服务器端包含,是Server Side Include的简写。SSI技术通过在文档中加入SSI指令,让服务器端在输出文档之前解析SSI指令,并把解析完的结果和文档一同输出给客户端。

SSI的指令格式为:<!-- #directive parameter=“value” – >。其中,directive是指令名,parameter指令参数,value指令参数值。

可以看到,就是html注释,Web服务器开启了SSI,并且页面包含可以解析的指令,那么Web服务器就解析这个指令。没开启器SSI或者开启了SSI,但是不是可以解析的指令,那么都当做注释。注意的是,“#”要和directive连在一起,中间不能含有空格。

SSI包含的指令有:

config:修改 SSI 的默认设置
echo:显示环境变量
exec:执行 CGI 脚本
flastmod :显示指定文件的最后修改日期
fsize:显示指定文件的大小
include:把其它文档插入到当前被解析的文档中


2.环境搭建

前提是已经安装docker,看我前面Java and php反序列化漏洞 | Active Blog (acsec.xyz)这篇文章java反序列化中有安装教程。

systemctl start docker   //启动docker
git clone https://github.com/vulhub/vulhub.git  //拉取vulhub靶场代码
cd /vulhub/httpd/ssi-rce   //进入ssi目录
docker-compose up -d   //启动docker环境

访问http://192.168.60.148:8080/upload.php即可

在这里插入图片描述


3.复现

创建文件shell.shtml,写入

在这里插入图片描述


上传后访问

在这里插入图片描述


这里用burp更方便修改内容实现命令执行

在这里插入图片描述

在这里插入图片描述


docker-compose down  //停止docker

进入下一关


4.防护

  • 关闭服务器SSI功能
  • 过滤相关SSI特殊字符(<,>,#,-,",’)

二.Apache httpd 多后缀解析漏洞

1.概述

httpd是Apache超文本传输协议(HTTP)服务器的主程序。被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池。

漏洞原理:
apache httpd支持一个文件有多个后缀,如:test1.php.rar。在windows下,会直接根据最后的.来进行分隔,将其判定为pdf文件,但在apache中可不是这样的,apache会从后往前依次进行判别,遇到不认识的后缀,便会往前读,如果还是不认识再往前,若是到最后一个都不认识,则会将该文件当成默认类型文件读取。

在etc目录下有个mime.types文件定义了apache可以识别的文件后缀。以下是该文件部分内容:
该解析漏洞产生的原因一部分是基于apache的这种特性,还有一大部分原因都是由于开发人员的配置不当构成的,当运维人员在配置文件给.php添加了处理器时:AddHandler application/x-httpd-php .php。
多后缀的文件名中只要存在.php后缀,则就会将该文件当做php文件解析。


2.环境搭建

cd /vulhub/httpd/apache_parsing_vulnerability
docker-compose build
docker-compose up -d

访问http://192.168.60.148即可


3.复现

创建shell.pgp.jpg,写入

上传文件

在这里插入图片描述

路径:http://192.168.60.148/uploadfiles/shell.php.jpg

利用:

在这里插入图片描述

docker-compose down  //停止docker

4.防护

  • 将AddHandler application/x-httpd-php.php的配置文件删除;
  • 设置上传目录不可执行;
  • 文件上传后重命名:时间戳+后缀名。

三.Apache httpd换行解析漏洞(CVE-2017-15715)

1.概述

影响版本:2.4.0 ~ 2.4.29

漏洞原理:
此漏洞的出现是由于apache在修复第一个后缀名解析漏洞时,用正则来匹配后缀。在解析php时xxx.php\x0A将被按照php后缀进行解析,导致绕过一些服务器的安全策略。

在上传文件时,对文件名进行了黑名单限制,我们利用该漏洞上传一个1.php文件,使用burpsuit抓包。在1.php后插入一个\x0A,绕过黑名单过滤。访问1.php%0A,即可看到文件被当做php解析。


2.环境搭建

cd /vulhub/httpd/CVE-2017-15715
docker-compose up -d

访问http://192.168.60.148:8080即可


3.复现

创建evil.php

burp抓包,在php后面留一个空格出来

在这里插入图片描述

把空格的16进制值“20”改成换行符的16进制值“0a”,注意:不要直接改后面的0d、0a,否则没有效果

在这里插入图片描述

上传访问http://192.168.60.148:8080/evil.php%0A成功解析

在这里插入图片描述


4.防护

  • 该漏洞仅针对于apache的2.4.0~2.4.29版本,升级apache版本即可避过该漏洞。
  • 获取文件名时使用$_FILES[‘file’] [‘name’]会自动把换行符去掉