Apache简介

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

Apache攻击手段介绍

目前Apache存在换行解析漏洞与多后缀解析漏洞~

换行解析漏洞

影响版本:Apache 2.4.0 ~ 2.4.29

影响说明:绕过服务器策略,上传webshell

环境说明:PHP5.5、Apache2.4.10

漏洞原理:在php文件名后缀加了0x0a(换行),使得逃过了黑名单的检查,而Apache配置文件可以正确匹配.php0x0a的文件并当作php去解析。

注:在windows中不行,因为windows不允许换行符做文件名。所以虽然可以上传绕过检测,但文件无法保存。

多后缀解析漏洞

影响版本:使用module模式与php结合的所有版本apache存在未知扩展名解析漏洞,使用fastcig模式与php结合的所有版本apache不存在此漏洞。

影响说明:绕过服务器策略,上传webshell

环境说明:PHP7、任意版本的使用module模式与php结合的apache

漏洞原理:

apache支持php有多种模式,常见的有module、cgi、fastcgi等,此漏洞存在于module模式

Apache在遇到多个后缀的文件时,尝试从后往前解析,直到解析到可解析的为止。例如test.php.xxx就按照php去解析,test.php.aaa.jpg就按照php去解析。

根据这个原理,我们可以上传文件名如shell.php.xxx的文件,以此来绕过后端黑名单的检测,从而上传成功而且又能被Apache按照php去解析

应对方法

新版本的Apache已修复此漏洞,今日小编便编译最新版本:httpd-2.4.54

安装包下载网址:https://httpd.apache.org/download.cgi

银河麒麟 卸载 mysql 银河麒麟 卸载httpd_centos

实验环境:虚拟机

系统版本:Kylin-Server-10-SP2-x86-Release-Build09-20210524

安装包可以直接官网下载,也可以在终端使用wget下载(需有wget工具)

安装wget

终端中输入命令:

[root@172 ~ ]# yum  -y install wget

银河麒麟 卸载 mysql 银河麒麟 卸载httpd_php_02

如图,我的系统中已安装wget且为最新版本,没有安装wget的可以使用 apt-yum  -y install wget 进行安装

下载相关安装包

[root@172 ~ ]#  wget https://httpd.apache.org/download.cgi/httpd-2.4.54.tar.gz

[root@172 ~ ]#  wget http://archive.apache.org/dist/apr//apr-1.7.0.tar.gz 

[root@172 ~ ]#  wget http://archive.apache.org/dist/apr/apr-util-1.6.1.tar.gz 

银河麒麟 卸载 mysql 银河麒麟 卸载httpd_apache_03

银河麒麟 卸载 mysql 银河麒麟 卸载httpd_linux_04

如图所示,相关安装包已下载完毕

添加用户

[root@localhost ~]# useradd -r -M -s /sbin/nologin apache

 

安装依赖包

[root@172 ~ ]#  yum -y install openssl-devel pcre-devel expat-devel  libtool

银河麒麟 卸载 mysql 银河麒麟 卸载httpd_linux_05

解压安装包

[root@172 ~ ]#  tar -zvxf apr-1.7.0.tar.gz 

[root@172 ~ ]#  tar -zvxf apr-util-1.6.1.tar.gz 

[root@172 ~ ]#  tar -zvxf httpd-2.4.54.tar.gz 

查看解压后的文件

[root@172 ~ ]#  ls

银河麒麟 卸载 mysql 银河麒麟 卸载httpd_php_06

编译安装apr

[root@172 ~ ]#  cd apr-1.7.0/

[root@172  apr-1.7.0 ]#  vim configure

将框l蓝的一行注释掉,也就是在这一行行首添加#

银河麒麟 卸载 mysql 银河麒麟 卸载httpd_apache_07

[root@172  apr-1.7.0 ]#  ./configure --prefix=/usr/local/apr

[root@172  apr-1.7.0 ]#   make

[root@172  apr-1.7.0 ]#   make  install

银河麒麟 卸载 mysql 银河麒麟 卸载httpd_apache_08

编译安装apr-util

[root@172  apr-1.7.0 ]#  cd ../apr-util-1.6.1/

[root@172  arp-util-1.6.1 ]#  ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr

银河麒麟 卸载 mysql 银河麒麟 卸载httpd_php_09

[root@172  arp-util-1.6.1 ]#  make

[root@172  arp-util-1.6.1 ]#  make  install

银河麒麟 卸载 mysql 银河麒麟 卸载httpd_银河麒麟 卸载 mysql_10

编译安装httpd

[root@172  arp-util-1.6.1 ]#   cd ../httpd-2.4.54/

[root@172  httpd-2.4.54 ]#   ./configure --prefix=/usr/local/apache  --enable-so  --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork

[root@172  httpd-2.4.54 ]#   make

[root@172  httpd-2.4.54 ]#   make  install 

银河麒麟 卸载 mysql 银河麒麟 卸载httpd_centos_11

设置环境变量

[root@172 ~ ]# echo 'export PATH=/usr/local/apache/bin:$PATH' > /etc/profile.d/apache.sh

[root@172 ~ ]#  source /etc/profile.d/apache.sh

映射

[root@localhost ~]# ln -s /usr/local/apache/include/ /usr/include/apache

关闭防火墙

[root@localhost ~]# systemctl disable --now firewalld

[root@localhost ~]# setenforce 0

[root@localhost ~]# getenforce 

银河麒麟 卸载 mysql 银河麒麟 卸载httpd_centos_12

启动服务

[root@localhost ~]# which  apachectl

[root@localhost ~]#  apachectl  start

[root@localhost ~]#  ss  -antl

银河麒麟 卸载 mysql 银河麒麟 卸载httpd_apache_13

访问验证

浏览器输入:http://172.16.58.130

银河麒麟 卸载 mysql 银河麒麟 卸载httpd_linux_14

至此,编译完成~


      祝:

工作顺利