这篇文章主要讲解了“Apache中间件漏洞原理及复现方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Apache中间件漏洞原理及复现方法”吧!
apache是世界上使用排名第一的web软件。他广泛使用在各种计算机平台,由于其跨平台和安全性被广泛使用,是最流行的web服务器端软件之一。他快速、可靠并且通过简单的API扩充,将perl/python等语言解释器编译到服务器中。
根据上述我们了解了apache与php结合的三种模式,那么不同模式和解析漏洞有什么关系呢,下面我们一起看一下:
使用module模式与php结合的所有版本 apache存在未知扩展名解析漏洞,使用fastcig模式与php结合的所有版本apache不存在此漏洞。并且,想利用此漏洞必须保障文件扩展名中至少带有一个“.php”,否则将默认被作为txt/html文档处理。
1、使用module模式域php结合的所有版本,apache存在未知扩展名解析漏洞
2、使用fastcgi模式域php结合的所有版本,apache不存在此漏洞未知扩展名解析漏洞
3、想利用此漏洞必须保证文件名至少带有一个“.php”.否则将默认被作为txt/html文档处理
三、linux环境测试文件解析漏洞
或者将软件包上传到本地
4、启动(CVE-)漏洞环境
# docker-compose up -d运行后,会自动查找当前目录下的配置文件。如果配置文件中包含的环境均已经存在,则不会再次编译;如果配置文件中包含的环境不存在,则会自动进行编译。所以,其实docker-compose up -d命令是包含了docker-compose build的。 如果更新了配置文件,你可以手工执行docker-compose
build来重新编译靶场环境。 docker ps 列出所有在运行的容器信息。
使用burp抓取请求报
0a在hex解码或为换行符
我们看一下,上传的文件,\n对应这hex编码中的0a
为什么加载0X0a就能让给了呢,我们先看一下index.php的代码
根据前文我们提到,php模块在解析php文件中通过正则表达式验证可以解析的文件名,正则表达式在结尾处$ 符号,如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\n' 或 '\r'。我们在文件结尾加上\x0a(\n),保证了文件解析的同时,也可以绕过上传黑名单。
0x0d、 \r、CR这三者代表回车,是同一个意思,回车的作用只是移动光标至该行的起始位置
0x0a、\n、CL这三者代表换行,是同一个意思,换行至下一行行首起始位置
2、或将上传的文件重命名为时间戳+随机数+.jpg的格式,并禁用上传文件目录执行脚本权限
SSI(server-side includes):是放置在HTML页面中的指令,他可以将动态生成的内容添加到现在的HTML页面,而不必通过CGI程序或其他动态技术来提供整个页面。以上是定义采用在apache官网对SSI的定义,说白了就是可以在HTML中加入特定的指令,也可以引入其他的页面。开始SSI需要单独配置Apache,参考:
SSI可以完成查看时间、文件修改时间、CGI程序执行结果、执行系统命令、连接数据库等操作,功能很强大。
在测试任意文件上传漏洞时时候,目标服务器可能不允许上传php后缀的文件。如果目标服务器开启了SSI与CGI支持,我们可以上传一个shtml文件,并利用语法执行任意命令。
此次测试使用docker搭建环境,环境采用Vulhub靶机
我们利用SSI执行系统命令的工作,正常一个包含SSI指令的文件,保存在test.shtml文件,内容如下:
文件的后缀名取决于apache的配置,默认是此后缀。
如果后台对后缀名校验不严格时,可以上传shtml类型文件,达到命令执行,获取webshell的目录。
访问shtml文件,看到whoami命令执行并返回了结果
感谢各位的阅读,以上就是“Apache中间件漏洞原理及复现方法”的内容了,经过本文的学习后,相信大家对Apache中间件漏洞原理及复现方法这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!