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
实验环境:虚拟机
系统版本:Kylin-Server-10-SP2-x86-Release-Build09-20210524
安装包可以直接官网下载,也可以在终端使用wget下载(需有wget工具)
安装wget
终端中输入命令:
[root@172 ~ ]# yum -y install wget
如图,我的系统中已安装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
如图所示,相关安装包已下载完毕
添加用户
[root@localhost ~]# useradd -r -M -s /sbin/nologin apache
安装依赖包
[root@172 ~ ]# yum -y install openssl-devel pcre-devel expat-devel libtool
解压安装包
[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
编译安装apr
[root@172 ~ ]# cd apr-1.7.0/
[root@172 apr-1.7.0 ]# vim configure
将框l蓝的一行注释掉,也就是在这一行行首添加#
[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
编译安装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
[root@172 arp-util-1.6.1 ]# make
[root@172 arp-util-1.6.1 ]# make install
编译安装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
设置环境变量
[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
启动服务
[root@localhost ~]# which apachectl
[root@localhost ~]# apachectl start
[root@localhost ~]# ss -antl
访问验证
浏览器输入:http://172.16.58.130
至此,编译完成~
祝:
工作顺利