Apache漏洞利用与安全加固实例分析
Apache 作为Web应用的载体,一旦出现安全问题,那么运行在其上的Web应用的安全也无法得到保障,所以,研究Apache的漏洞与安全性非常有意义。本文将结合实例来谈谈针对Apache的漏洞利用和安全加固措施。
Apache HTTP Server(以下简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,是最流行的Web服务器软件之一。虽然近年来Nginx和Lighttpd等Web Server的市场份额增长得很快,但Apache仍然是这个领域中独一无二的巨头,互联网上大多数的Web应用依然运行在Apache上。
Apache文件名解析特性
Apache对于文件名的解析是从后往前解析的,直到遇见一个它认识的文件类型为止。因此,如果web目录下存在以类似webshell.php.test这样格式命名的文件,Apache在解析时因为不认识.test这个文件类型,所以会一直往前解析,当解析到.php时,它认识了,因此会将它解析为PHP文件。
Apache的这种解析特性经常被用来绕过Web应用的文件上传检测。当Web应用的文件上传功能在检测上传文件的合法性时,如果仅通过检测上传文件的扩展名来判断文件是否合法,就可以利用Apache的这种文件名解析特征绕过Web应用的检测。
下面来看一个实例:目标网站后台存在一个上传图片的功能,只允许上传JPG和GIF图片格式的文件。但程序在验证上传文件合法性处存在漏洞,只是简单地通过上传文件扩展名来确定文件是否合法,这时我们就可以利用Apache的文件名解析特征来绕过这种检测。
将文件名修改为类似phpshell.php.jpg这样的格式上传,发现绕过了检测,文件被成功上传到目标网站,如图

可以在httpd.conf配置文件中添加以下内容来阻止Apache解析这种文件。
Order Allow,Deny
Deny from all
修改后需要重启Apache服务生效。
这样即使攻击者上传了类似phpshell.php.jpg这样格式的文件,Apache也不会将它解析为PHP文件了,如图

安全加固
Apache的安全加固我们主要从以下两点考虑:一是Apache Web Server本身是否安全,比如是否存在安全漏洞;二是Apache Web Server是否提供了可使用的安全功能,这部分主要是检查Apache的配置是否得当,在安全性、可用性、稳定性之间取得平衡。
Apache版本的选择与安装注意事项
检查目前使用的Apache版本是否存在安全漏洞,如果存在,需要升级到新的安全版本。在选择Apache的版本时,我们一般选择最新的稳定版本。这样可以在安全性和稳定性之间取得一个很好的平衡。从低版本升级到高版本时,建议先在测试环境中测试通过后再进行升级,以避免由于兼容性带来的问题。
在安装时使用自定义的安装路径,并配置使用自定义的WEB目录。
Apache安全配置
1. Apache降权
这个工作只针对运行在Windows平台上的Apache,因为在Windows环境下,Apache默认以System权限运行,这样的后果是一旦成功入侵WEB应用,将直接得到一个高权限的Webshell,如图

现在我们来对Apache进行降权操作。首先新建一个用户,设置复杂的密码,并且让它不属于任何用户组,如图

接着打开“本地安全策略”--->“本地策略”--->“用户权限分配”,找到“作为服务登录”项,把刚刚新建的用户添加进去,如图

然后打开“服务”组件,找到Apache 的服务,右键“属性”--->“登录”,用刚新建的apache 账户运行Apache 服务,如图

再找到Apache 日志目录,为apache 账户分配“读取”和“写入”权限,否则Apache 服务不能启动,如图

配置好后,重启Apache 服务生效,现在Apache 服务就已apache 低权限账户运行了,如图

Linux环境下不必关心这个问题,Apache主进程以root 权限启动,子进程默认是以apache、daemon或其他用户身份运行的,这是一个低权限用户。
2. 只加载必要的Module(模块)
Apache有很多官方与非官方的Module,很多漏洞都是由于Apache的Module造成的。所以我们需要检查Apache的Module安装情况,根据“最小权限原则”,应该尽可能地减少不必要的Module,对于要使用的Module,则检查其对应版本是否存在已知的安全漏洞。可以在httpd.conf中配置需要加载或禁用的Module。
3. Apache日志安全设置
不论在那种服务器上,日志都是一个非常重要的部分,我们需要对它严加保护。在Apache上也是如此。首先要修改日志的默认保存路径,然后设置只允许管理员有日志保存目录的完全控制权限,如图

4. 网站目录权限配置
原则:目录有写入权限,一定不要分配执行权限;目录有执行权限,一定不要分配写入权限。
网站上传目录和数据库目录一般需要分配“写入”权限,但一定不要分配执行权限。其他目录一般只分配“读取”和“记录访问”权限即可。
5. 关闭Apache的目录浏览功能
如果Apache采用默认配置,当WEB目录下不存在默认索引页面(如index.html)时,会将当前目录下的所有文件和目录都列出来,这是十分危险的,如图

可以通过以下两种方法来关闭目录浏览功能:
a.打开httpd.conf配置文件,查找“Options Indexes FollowSymLinks”,修改为“Options -Indexes”,然后保存并重启Apache服务生效
b.修改.htaccess文件——在.htaccess文件里加入“Options -Indexes”(没有双引号)就可以阻止目录列表的显示了。
这样以后再访问不存在默认索引页面的目录时,Apache将会返回403错误页面,如图

6. 修改Apache默认banner信息
Apache的banner会泄露服务器的操作系统和Apache版本等相关信息,如图16和图17,而这些信息对攻击者是非常有用的,我们需要修改默认配置来阻止这些信息的泄露。


打开httpd.conf配置文件,找到ServerTokens和ServerSignature,将它们的值分别修改为Prod和Off,修改后的效果如上图和下图


总结
通过上面对Apache漏洞和安全加固的实例分析,相信读者对Apache HTTP Server的漏洞和安全加固都有了更加深入的认识。其实Apache的安全加固并不难,很多时候更重要的是管理员的安全意识,只要有足够的安全意识,加上上面介绍的安全加固方法,相信你一定可以打造一个安全的Apache HTTP Server。
Apache漏洞利用与安全加固实例分析的更多相关文章
- [转]Apache漏洞利用与安全加固实例分析
1.2 Apache文件解析特性 Apache对于文件名的解析是从后往前解析的,直到遇见一个它认识的文件类型为止.因此,如果web目录下存在以类似webshell.php.test这样格式命名的文件, ...
- Tomcat漏洞利用与安全加固实例分析
Tomcat中间件经常遇到的漏洞: 1.Tomcat默认存在一个管理后台,默认的管理地址是http://IP或域名:端口号/manager/html 2.Axis2默认口令安全漏洞,默认的管理地址是h ...
- Nginx漏洞利用与安全加固
本文主要分为两大部分,第一部分介绍了Nginx的一些常见安全漏洞的形成原因.利用方法,并给出了相应的解决办法;第二部分介绍了Nginx安全加固时需要关注的主要内容. Nginx(发音同engine x ...
- IIS攻击与安全加固实例分析
IIS作为一款流行的Web服务器,在当今互联网环境中占有很大的比重,绝大多数的asp.asp.net网站都运行在它上面.因此,也引来了无数 黑客们关注的目光.目前针对IIS的攻击技术已经非常成熟,而且 ...
- Linux环境下常见漏洞利用技术(培训ppt+实例+exp)
记得以前在drops写过一篇文章叫 linux常见漏洞利用技术实践 ,现在还可以找得到(https://woo.49.gs/static/drops/binary-6521.html), 不过当时开始 ...
- Linux堆溢出漏洞利用之unlink
Linux堆溢出漏洞利用之unlink 作者:走位@阿里聚安全 0 前言 之前我们深入了解了glibc malloc的运行机制(文章链接请看文末▼),下面就让我们开始真正的堆溢出漏洞利用学习吧.说实话 ...
- Apache Tomcat远程命令执行漏洞(CVE-2017-12615) 漏洞利用到入侵检测
本文作者:i春秋作家——Anythin9 1.漏洞简介 当 Tomcat运行在Windows操作系统时,且启用了HTTP PUT请求方法(例如,将 readonly 初始化参数由默认值设置为 fals ...
- CVE-2015-3864漏洞利用分析(exploit_from_google)
title: CVE-2015-3864漏洞利用分析(exploit_from_google) author: hac425 tags: CVE-2015-3864 文件格式漏洞 categories ...
- 安全学习概览——恶意软件分析、web渗透、漏洞利用和挖掘、内网渗透、IoT安全分析、区块链、黑灰产对抗
1 基础知识1.1 网络熟悉常见网络协议:https://www.ietf.org/standards/rfcs/1.2 操作系统1.3 编程2 恶意软件分析2.1 分类2.1.1 木马2.1.2 B ...
随机推荐
- html ajax 异步加载 局部刷新
1. getJSON 优点: 简单高效,直接返回处理好的json数据 缺点: 只能使用get请求和使用json数据 <script src ='jquery.min.js'></sc ...
- 瀑布流vue-waterfall的高度设置
最近用vue做项目,用到了瀑布流vue-waterfall,其中遇到高度的设置问题,大概介绍下,希望可以帮到一些人 1.安装 npm install --save vue-waterfall 2.引入 ...
- [poj1797]Heavy Transportation<最大生成树prim&kruskal>
题目链接:http://poj.org/problem?id=1797 题意:给定n个点,m条边,每条边连接两点切有权值.求点1到点n的路径的上的最小边的值最大... 翻别人博客找到的题,方法挺多的, ...
- JS烟花案例优化版
不明白为什么是烟花优化版本的先参考作者的烟花基础版本 烟花优化版本主要实在优化爆炸的范围和运动上做了优化,爆炸范围我们采用已圆的爆炸方式,以鼠标点击的位置为圆形爆炸的烟花效果 <!DOCTYPE ...
- Python——五分钟理解函数式编程与闭包
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是Python专题的第9篇文章,我们来聊聊Python的函数式编程与闭包. 函数式编程 函数式编程这个概念我们可能或多或少都听说过,刚听 ...
- CoderForces 327D Block Tower
Portal:http://codeforces.com/problemset/problem/327/D 一座红塔200人,一座蓝塔100人,只有与蓝塔相邻才可以建红塔. '.'处可建塔 '#'处不 ...
- RedHat 6.7 使用 CentOS 6 的源
1. 移除 RedHat 相关软件包 # yum -y remove subscription-manager and rh-check # rpm -aq | grep yum | xargs rp ...
- JS数据结构与算法——栈
JS数据结构与算法--栈 1.栈结构概念 栈(Stack)是一种先进后出(LIFO Last in First out)的线性表,先进栈的将会比后进栈的先出栈. 栈的限制是仅允许在一端进行插入和删除运 ...
- 编译安装inotify-tools和监控inotifywait事件
编译安装inotify-tools软件包 1)解包inotify-tools-3.13.tar.gz文件 [root@svr7~]#ls inotify-tools- ...
- 家庭版记账本app进度之关于android界面布局的相关学习
1.线性布局(linearlayout)是一种让视图水平或垂直线性排列的布局线性布局使用<LinearLayout>标签进行配置对应代码中的类是android.widget.LinearL ...