简介

Apache(音译为阿帕奇)是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。


本博客所有内容均为作者的个人学习笔记记录,作者也是小白一枚,如果有什么地方写的不对或者对您带来影响欢迎底部留言或者点击右下角的图标与我联系吧

本博客的所有Security 大类下的文章只能作为学习研究使用不可用于非法测试和攻击,请遵循网络安全法,共筑和谐网络

如果喜欢我的文章欢迎各位大佬点击右下角的订阅图标开启浏览器推送吧,这样你只要不清除浏览器缓存就能第一时间收到我的更新通知啦(如果你的网络如果能上Google就用Chrome浏览器订阅,如果不能推荐用微软的Edge浏览器,目前正在寻找解决办法,订阅成功后会有一条提示成功,如果未收到表示网络限制原因未订阅成功)

中华人民共和国网络安全法(2017年6月1日起施行) 第二十二条任何个人和组织不得从事入侵他人网络、干扰他人网络正常功能、窃取网络数据等危害网络安全的活动;不得提供从事入侵网络、干扰网络正常功能、窃取网络数据等危害网络安全活动的工具和制作方法;不得为他人实施危害网络安全的活动提供技术支持、广告、推广、支付结算等帮助。 第三十八条任何个人和组织不得窃取或者以其他非法方式获取公民个人信息,不得出售或者非法向他人提供公民个人信息 第六十三条违反本法规定,给他人造成损害的,依法承担民事责任 第六十四条违反本法规定,构成犯罪的,依法追究刑事责任 中华人民共和国刑法(285286) 第二百八十五条违反国家规定,侵入国家事务、国防建设、尖端科学技术领域的计算机信息系统的处三年以下有期徒刑或者拘役 第二百八十六条违反国家规定,对计算机信息系统功能进行删除、修改、增加、干扰,造成计算机信息系统不能正常运行,后果严重的,处五年以下有期徒刑或者拘役:后果特别严重的,处五年以上有期徒刑。违反国家规定,对计算机信息系统中存储、处理或者传输的数据和应用程序进行删除、修改、增加的操作,后果严重的,依照前款的规定处罚 中华人民共和国刑法修正案7(第九条) 在刑法第二百八十五条中增加两款作为第二款、第三款:“违反国家规定,侵入前款规定以外的计算机信息系统或者采用其他技术手段,获取该计算机信息系统中存储、处理或者传输的数据,或者对该计算机信息系统实施非法控制,情节严重的,处三年以下有期徒刑或者拘役,并处或者单处罚金:情节特别严重的,处三年以上七年以下有期徒刑,并处罚金提供专门用于侵入、非法控制计算机信息系统的程序、或者明知他人实施侵入、非法控制计算机信息系统的违法犯罪行为而为其提供程序、工具,情节严依照前款的规定处罚。


Apache

apache后缀解析漏洞原因

在 Apache2.0.X<=2.0.59, Apache2.2x<=2.2.17, Apache2.2.2<=2.2.8 中 Apache 解析文件的规则是从右到左开始判断解析,如果后缀名为不可识别文件解析,就再往左判断

1.php.abc 因 apache 不识别 .abc 后缀,所以向前解析php 1.php.abc = 1.php test.php.owf.rar解析成 test.php

换行解析漏洞

Apache httpd 换行解析漏洞靶场:CVE-2017-15715

Apache httpd 是一款 HTTP 服务器,它可以通过 mod_php 来运行 PHP 网页。其2.4.0-2.4.29版本中存在一个解析漏洞,在解析 PHP 时,1.php\x0a将被按照 PHP 后缀进行解析,导致绕过一些服务器的安全策略。 shell.php\xOa –> shell.php

启动

1
2
3
4
5
6
7
8
9
10
# 进入vulhub
cd vulhub-master
# 进入某一个漏洞/环境的目录
cd httpd/CVE-2017-15715
# 自动化编译环境
docker-compose build
# 启动整个环境
docker-compose up -d
# 测试完成后,删除整个环境
docker-compose down -v

启动后页面

漏洞复现

本靶场漏洞利用的是 Apache httpd 中的解析 \0a 进行截断,在上图的文件上传的对文件的后缀是有一些限制的,如果上传文件为 shell.php 文件后缀是无法上传的只能将 filename的文件名改为 eval.php\x0a 进行上传 但是改的操作有不能在本地进行,那么我们就通过 BurpSuite 进行截包 篡改16进制 hex 的标识

这里是演示的 phpinfo() 函数,同样也可以用 eval() 函数写入一句话木马

换行解析漏洞复现

多后缀解析漏洞

Apache httpd 多后缀解析漏洞靶场:apache_parsing_vulnerability

Apache Httpd支持一个文件拥有多个后缀,并为不同后缀执行不同的指令我们上传的文件中只要后缀名含有php,该文件就可以被解析成php文件比如,如下配置文件

1
2
AddType text/html .html
AddLanguage zh-CN .cn

其给 .html 后缀增加了 media-type,值为text/html; 给 .cn 后缀增加了语言,值为zh-CN; 此时,如果用户请求文件 index.cn.html 他将返回一个中文的 html 页面。
以上就是 Apache 多后缀的特性。如果运维人员给 .php 后缀增加了处理器如下:

1
AddHandler application/x-httpd-php .php

那么,在有多个后缀的情况下,只要一个文件含有 .php 后缀的文件即将被识别成 PHP 文件,没必要是最后一个后缀。利用这个特性,将会造成一个可以绕过上传白名单的解析漏洞

启动

1
2
3
4
5
6
7
8
9
10
# 进入vulhub
cd vulhub-master
# 进入某一个漏洞/环境的目录
cd httpd/apache_parsing_vulnerability
# 自动化编译环境
docker-compose build
# 启动整个环境
docker-compose up -d
# 测试完成后,删除整个环境
docker-compose down -v

启动

漏洞复现

多后缀解析漏洞复现

SSI 远程命令执行漏洞

Apache httpd SSI 远程命令执行漏洞:ssi-rce

在测试任意文件上传漏洞的时候,目标服务端可能不允许上传php后缀的文件。如果目标服务器开启了SSI与CGI支持,我们可以上传一个shtml文件,并利用<!--#exec cmd="id"-->语法执行任意命令

什么是shtml

  • 引用:https://www.cnblogs.com/alantao/p/6565029.html

  • htm、html、shtml网页区别

    • 首先htm、html、shtml都是静态网页的后缀,三者也可以说都是只是扩展名不同,其他一样,都是静态的网页。
    • Htm和html是完全静态的网页不通过服务器编译解释直接送出给浏览器读取的静态网页,以Htm和html伪静态Request除外。
    • html、htm、shtml、shtm均是静态html网页。都是网页文件后缀名不同的html网页扩展名。
  • Html与htm

    • .html与.htm均是静态网页后缀名,网页文件没有区别与区分,html与htm后缀网页后缀可以互换,对网页完全没有影响同时也没有区别。可以认为html与htm没有本质区别,唯一区别即多与少一个“L”。
  • Shtml与shtm

    • shtml命名的网页文件里,使用了ssi的一些指令,就像asp中的指令,你可以在SHTML文件中写入SSI指令,当客户端访问这些shtml文件时,服务器端会把这些SHTML文件进行读取和解释,把SHTML文件中包含的SSI指令解释出来。
    • 而shtml与shtm后缀的网页文件没有区别,后缀名可以互换,区别在于和html与htm一样多与少“L”。
  • Html与shtml区别

    • 本质上都属于静态网页一种,html属于纯静态,客户端浏览器读取html文件是什么就呈现给浏览者什么内容。而shtml则可以使用SSI。
  • shtml的SSI功能

    • SSI是为WEB服务器提供的一套命令,这些命令只要直接嵌入到HTML文档的注释内容之中即可。如:<!--#include file="info.htm"-->
      就是一条SSI指令,其作用是将”info.htm”的内容拷贝到当前的页面中,当访问者来浏览时,会看到其它HTML文档一样显示info.htm其中的内容。

      假如我们A页面是shtml的静态网页,而A页面里我们使用了include包含嵌入B静态html页面,如果你的服务器空间支持Shtml SSI这个时候我们,浏览器打开A页面时候,就会在A页面显示A原本内容以及B页面内容,我们查看网页源代码,不会发现B页面引入痕迹,而是看到B页面内容完全在A页面里。

什么是SSI

SSI提供了一种对现有HTML文档增加动态内容的方法,即在html中加入动态内容
SSI是嵌入HTML页面中的指令,在页面被提供时由服务器进行运算,以对现有HTML页面增加动态生成的内容,而无须通过CGI程序提供其整个页面,或者使用其他动态技术。
SSI是一种增加小段动态信息的好方法,比如当前时间。如果你的页面大部分内容是在被提供时动态生成的,那就要另找方案了。

启动

1
2
3
4
5
6
7
8
9
10
# 进入vulhub
cd vulhub-master
# 进入某一个漏洞/环境的目录
cd httpd/ssi-rce
# 自动化编译环境
docker-compose build
# 启动整个环境
docker-compose up -d
# 测试完成后,删除整个环境
docker-compose down -v

启动后页面

漏洞复现

1
<!--#exec cmd="whoami"-->

SSI 漏洞复现