Apache如何解析漏洞和ssl远程命令执行


Apache如何解析漏洞和ssl远程命令执行,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Apache HTTP Server(简称 )是 的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性 Apache Apache软件基金会 被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。 [2] Apac免费云主机域名he HTTP服务器是一个模块化的服务器,源于NCSAhttpd服务器,经过多次修改,成为世界使用排名第一的 软件。Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,1.phpx0A将被按 照PHP后缀进行解析,导致绕过一些服务器的安全策略。在有多个后缀的情况下,只要一个文件含有.php后缀的文件即将被识别成PHP文件,没必要是最后一个后缀。利用这个特性,将会造成一个可以绕过上传白 名单的解析漏洞。在测试任意文件上传漏洞的时候,目标服务端可能不允许上传php后缀的文件。如果目标服务器开启了SSI与CGI支持,我们可以上传一个shtml文件,并利用 语法执行任意命令。apache这次解析漏洞的根本原因就是这个 $,正则表达式中,我们都知道$用来匹配字符串结尾位置,我们来看看$符号在正则表达式中的含义:匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 ‘n’ 或 ‘r’。要匹配 $ 字符本身,请使用 $。
因此产生这个漏洞的根本原因就是设置了 RegExp 对象的 Multiline 属性,从而使得$可以匹配换行符。那我们进入docker环境中看一看apache2是如何配置的

很明显这里使用了$符号我们再来看一看其他版本apaceh的模块中对于php的配置文件:可以看到这里相对docker环境中的多了几种php后缀的识别,如果这里的$设置过RegExp 对象的 Multiline 属性,那么该版本的apache也将存在换行解析漏洞。
php php3 php4 php5 php7 pht phtml
其给.html后缀增加了media-type,值为text/html;给.cn后缀增加了语言,值为zh-CN。此时,如果用户请求文件 .html index.cn ,他将返回一个中 文的html页面。那么,在有多个后缀的情况下,只要一个文件含有.php后缀的文件即将被识别成PHP文件,没必要是最后一个后缀。利用这个特性,将会造成一个可以绕过 上传白名单的解析漏洞。我们会在漏洞利用部分做一个实验。SSI(服务器端包含)是放置在HTML页面中的指令,并在服务页面时在服务器上对其进行评估。它们使您可以将动态生成的内容添加到现有的HTML页面, 而不必通过CGI程序或其他动态技术来提供整个页面。其实apache的ssl更像是flask的jinjia2,用来实现和前端实现一种动态交互,只不过在配置ssl之后,如果上传接口没有过滤掉.shtml文件,那么就可以就其中 包含我们要执行的命令。
实验1:这里有一个小知识就是如何进入docker容器内部:为了方便起见我们docker容器内部装一个vim
在上传利用之前,我们先在var/www/html目录下创建一个带有换行标志的文件
vim hack.php$’n’接下来用浏览器访问该文件验证成功。说明该版本的apache是存在此漏洞的。
实验2:接下来我们通过上传的方式再次去验证一下漏洞(注意:这里有个很大的坑)我们先来看一下docker环境中index.php的内容index.php注意这里只给了一个index.php文件,复现到这,我以为vulhub作者忘掉了一个上传的html页面,我特意的写了上去打开上传页面

这之后就是无尽的报错之路,百度、Google、改目录、修权限。从复现到放弃。缓了好几天之后,下决心要解决这个问题。搜了好多文章没有一个解释这个问题。我先写了一个正常的上传PHP文件和之前的进行对比之后,终于知道哪里出问题了。通过自己写的html文件进行上传name的地方没有文件名(注意:这里我们一定要自己补上)为什么要这样做?因为vulhub给出的php文件是通过$_POST[‘name’]获取文件名的。注意:下边这种方式获取文件名是会自动去掉换行符的。所以该漏洞不能使用该方法获取文件名。
可以看到我们上传成功了。


接下来我们做个实验,修改一下该配置文件让其可以识别我们自定义后缀文件为PHP文件。要注意修改完配置文件,一定要重启apache服务但是在docker环境中我们如何做到重启服务又不会退出容器呢?就是这条命令了
service apache2 reload
可以看到我们的info.hacker.xxx.jpg成功的按照php格式执行
Apache的漏洞大部分都是配置错误问题,很多程序员不熟悉这些配置或者说不熟悉安全配置问题,故而写出有问题的代码或灾难性的配置文件,这才给黑客可趁之机,造成严重后果。而有的配置问题是apache自带的,那后果将更加严重。所以编写安全的配置文件同样重要。看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注云编程开发博客行业资讯频道,感谢您对云编程开发博客的支持。

相关推荐: Java源代码加密,防止反编译

使用Virbox Prote免费云主机域名ctor对Java项目加密有两种方式,一种是对War包加密,一种是对Jar包加密。Virbox Protector支持这两种文件格式加密,可以加密用于解析class文件的java.exe,并且可以实现项目源码绑定制定设…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 02/02 19:04
下一篇 02/02 19:04