1.2 Apache文件解析特性

Apache对于文件名的解析是从后往前解析的,直到遇见一个它认识的文件类型为止。因此,如果web目录下存在以类似webshell.php.test这样格式命名的文件,Apache在解析时因为不认识.test这个文件类型,所以会一直往前解析,当解析到.php时,它认识了,因此会将它解析为PHP文件。

Apache的这种解析特性经常被用来绕过Web应用的文件上传检测。当Web应用的文件上传功能在检测上传文件的合法性时,如果仅通过检测上传文件的扩展名来判断文件是否合法,就可以利用Apache的这种文件名解析特征绕过Web应用的检测。下面来看一个实例:

目标网站后台存在一个上传图片的功能,只允许上传JPG和GIF图片格式的文件。但程序在验证上传文件合法性处存在漏洞,只是简单的通过上传文件扩展名来确定文件是否合法。这时我们就可以利用Apache的文件名解析特征来绕过这种检测。

将文件名修改为类似phpshell.php.jpg这样的格式上传,发现绕过了检测,文件被成功上传到目标网站。

图4

可以在httpd.conf配置文件中添加以下内容来阻止Apache解析这种文件。

<Files ~ "\.(php.)">

Order Allow,Deny

Deny from all

</Files>

修改后需要重启Apache服务生效。

这样即使攻击者上传了类似phpshell.php.jpg这样格式的文件,Apache也不会将它解析为PHP文件了。

图5

2. 安全加固

Apache的安全加固我们主要从以下两点考虑:一是Apache Web Server本身是否安全,比如是否存在安全漏洞;二是Apache Web Server是否提供了可使用的安全功能,这部分主要是检查Apache的配置是否得当,在安全性、可用性、稳定性之间取得平衡。

2.1 Apache版本的选择与安装注意事项

检查目前使用的Apache版本是否存在安全漏洞,如果存在,需要升级到新的安全版本。在选择Apache的版本时,我们一般选择最新的稳定版本。这样可以在安全性和稳定性之间取得一个很好的平衡。如果从低版本升级到高版本时,建议先在测试环境中测试通过后再进行升级,以避免由于兼容性带来的问题。

在安装时使用自定义的安装路径,并配置使用自定义的WEB目录。

2.2 Apache安全配置

2.2.1 Apache降权

这个工作只针对运行在Windows平台上的Apache,因为在Windows环境下,Apache默认以System权限运行,这样的后果是一旦成功入侵WEB应用,将直接得到一个高权限的Webshell。

图6

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

图7

接着打开“本地安全策略”--->“本地策略”--->“用户权限分配”,找到“作

为服务登录”项,把刚刚新建的用户添加进去。

图8

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

图9

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

图10

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

图11

Linux环境下不必关心这个问题,Apache主进程以root 权限启动,子进程默认是以apache、daemon或其他用户身份运行的,这是一个低权限用户。

2.2.2 只加载必要的Module(模块)

Apache有很多官方与非官方的Module,很多漏洞都是由于Apache的Module造成的。所以我们需要检查Apache的Module安装情况,根据“最小权限原则”,应该尽可能地减少不必要的Module,对于要使用的Module,则检查其对应版本是否存在已知的安全漏洞。可以在httpd.conf中配置需要加载或禁用的Module。

2.2.3 Apache日志安全设置

不论在那种服务器上,日志都是一个非常重要的部分,我们需要对它严加保护。在Apache上也是如此。首先要修改日志的默认保存路径,然后设置只允许管理员有日志保存目录的完全控制权限。

图12

2.2.4 网站目录权限配置

原则:目录有写入权限,一定不要分配执行权限;目录有执行权限,一定不要分配写入权限。

网站上传目录和数据库目录一般需要分配“写入”权限,但一定不要分配执行权限。其他目录一般只分配“读取”和“记录访问”权限即可。

2.2.5 关闭Apache的目录浏览功能

如果Apache采用默认配置,当WEB目录下不存在默认索引页面(如index.html)时,会将当前目录下的所有文件和目录都列出来,这是十分危险的。

图13

可以通过以下两种方法来关闭目录浏览功能:a.打开httpd.conf配置文件,查找“Options Indexes FollowSymLinks”,修改为“Options -Indexes”,然后保存并重启Apache服务生效;b.修改.htaccess文件——在.htaccess文件里加入“Options -Indexes”(没有双引号)就可以阻止目录列表的显示了。

这样以后再访问不存在默认索引页面的目录时,Apache将会返回403错误页面。

图14

2.2.6 修改Apache默认banner信息

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

图15

图16

打开httpd.conf配置文件,找到ServerTokens和ServerSignature,将它们的值分别修改为

Prod和Off。修改后的效果如下图:

图17

图18

3. 总结

通过上面对Apache漏洞和安全加固的实例分析,相信读者对Apache HTTP Server的漏洞和安全加固都有了更加深入的认识。其实对于Apache的安全加固并不难,很多时候更重要的是管理员的安全意识,只要有足够的安全意识,加上上面介绍的安全加固方法,相信你一定可以打造一个安全的Apache HTTP Server。

[转]Apache漏洞利用与安全加固实例分析的更多相关文章

  1. Apache漏洞利用与安全加固实例分析

    Apache 作为Web应用的载体,一旦出现安全问题,那么运行在其上的Web应用的安全也无法得到保障,所以,研究Apache的漏洞与安全性非常有意义.本文将结合实例来谈谈针对Apache的漏洞利用和安 ...

  2. Tomcat漏洞利用与安全加固实例分析

    Tomcat中间件经常遇到的漏洞: 1.Tomcat默认存在一个管理后台,默认的管理地址是http://IP或域名:端口号/manager/html 2.Axis2默认口令安全漏洞,默认的管理地址是h ...

  3. Nginx漏洞利用与安全加固

    本文主要分为两大部分,第一部分介绍了Nginx的一些常见安全漏洞的形成原因.利用方法,并给出了相应的解决办法;第二部分介绍了Nginx安全加固时需要关注的主要内容. Nginx(发音同engine x ...

  4. Linux环境下常见漏洞利用技术(培训ppt+实例+exp)

    记得以前在drops写过一篇文章叫 linux常见漏洞利用技术实践 ,现在还可以找得到(https://woo.49.gs/static/drops/binary-6521.html), 不过当时开始 ...

  5. IIS攻击与安全加固实例分析

    IIS作为一款流行的Web服务器,在当今互联网环境中占有很大的比重,绝大多数的asp.asp.net网站都运行在它上面.因此,也引来了无数 黑客们关注的目光.目前针对IIS的攻击技术已经非常成熟,而且 ...

  6. Linux堆溢出漏洞利用之unlink

    Linux堆溢出漏洞利用之unlink 作者:走位@阿里聚安全 0 前言 之前我们深入了解了glibc malloc的运行机制(文章链接请看文末▼),下面就让我们开始真正的堆溢出漏洞利用学习吧.说实话 ...

  7. Struts2漏洞利用实例

    Struts2漏洞利用实例 如果存在struts2漏洞的站,administrator权限,但是无法加管理组,内网,shell访问500. 1.struts2 漏洞原理:struts2是一个框架,他在 ...

  8. Apache Tomcat远程命令执行漏洞(CVE-2017-12615) 漏洞利用到入侵检测

    本文作者:i春秋作家——Anythin9 1.漏洞简介 当 Tomcat运行在Windows操作系统时,且启用了HTTP PUT请求方法(例如,将 readonly 初始化参数由默认值设置为 fals ...

  9. Kali Linux渗透基础知识整理(三):漏洞利用

    漏洞利用阶段利用已获得的信息和各种攻击手段实施渗透.网络应用程序漏洞诊断项目的加密通信漏洞诊断是必须执行的.顾名思义,利用漏洞,达到攻击的目的. Metasploit Framework rdeskt ...

随机推荐

  1. bugku-Web flag.php

    打开网页发现并没有什么,试了很多次没用. 其实题目中提示了hint,我们就传递一个hint=1试试,发现出现了代码: <?php error_reporting(0); include_once ...

  2. Python 学习基础

    一.编程语言的发展历史 按照翻译方式分为两类: # 编译型(类似于谷歌翻译):如c.java, 运行速度快,调试麻烦 # 解释型(l类似于同声传译):如Python,运行速度慢,调试麻烦 按照特点总结 ...

  3. Hive鲜为人知的宝石-Hooks

    本来想祝大家节日快乐,哎,无奈浪尖还在写文章.谴责一下,那些今天不学习的人.对于今天入星球的人,今天调低了一点价格.减少了20大洋.机不可失失不再来.点击阅读原文或者扫底部二维码. hive概述 Hi ...

  4. GTK入门

    环境准备 官网下载 GTK 源码包,因为本机 GLib 版本不够,下载一个非最新版的 GTK3.8.0 先学习用 直接阅读 "/gtk+-3.8.0/docs/reference/gtk/h ...

  5. 2020/1/31 PHP代码审计之目录穿越漏洞

    0x00 目录穿越 目录穿越(Directory Traversal)攻击是黑客能够在Web应用程序所在的根目录以外的文件夹上,任意的存取被限制的文件夹,执行命令或查找数据.目录穿越攻击,也与人称为P ...

  6. Linux环境创建交换分区

    最近在准备在移动端跑一下深度学习训练好的模型,在RK3399的板子上安装scipy时报错.网上查了一下,由于内存不足导致,做个交换分区就搞定了.那么如何做交换分区呢.话不多说,直接开撸. ------ ...

  7. Ubuntu13.04闪屏的问题

    我的电脑Y460,双显切换,win7+ubuntu双系统,就是这个坑爹的双显切换,导致安装ubuntu13.04后屏老闪,网上查阅资料得知是显卡问题,一种是说显卡驱动问题,一种是说双显卡问题,双显卡问 ...

  8. The full stack trace of the root cause is available in the Apache Tomcat/8.0.8 logs.

    这个问题是版本冲突的问题 1.调低jdk 版本,不能让jdk版本太高,至少不能比tomcat高,要不然就会有这个错误. 2.如果看过我这篇博客的人(https://www.cnblogs.com/CH ...

  9. html+css web storage课上笔记 2019.3.18

    存储 cookie cookie 使用文本来存储信息 使用时服务器发送cookie给客户端,下一次时,浏览器发送给服务器 web storage local storage 本地的硬件设备中,关闭后不 ...

  10. 题解【[FJOI2018]所罗门王的宝藏】

    本题解同步于luogu emmm切了近年省选题来写题解啦qwq 该题较其他省选题较水吧(否则我再怎么做的出来 思路是图论做法,做法上楼上大佬已经讲的很清楚了,我来谈谈代码实现上的一些细节 \[\tex ...