Apache Shiro反序列化漏洞复现CVE-2016-4437

发布于 2023-08-08  428 次阅读


前置知识

  • 根据上一篇CVE-2021-42013里面的猜测,为了防止环境又出现问题,还是提前把其他版本的apache的容器和镜像删完

  • 首先是环境配置,cd到CVE-2021-40438目录下(有yml配置文件的目录),找不到可以使用find命令在vulhub靶场目录中查找,然后执行构建命令,然后docker ps看一下
find ./ -name *CVE-2017*
docker-compose up -d
docker ps

  • 当我们提到 Apache HTTP Server 时,通常指的是整个软件包,它包括了HTTP服务器的核心功能、模块化架构、配置文件、运行时环境等。Apache HTTP Server 提供了完整的 Web 服务器解决方案,可以用于托管和提供网站内容。

  • 而 httpd 则是 Apache HTTP Server 的具体可执行程序的名称(通常在 Unix/Linux 系统上)。通过运行 httpd守护进程,Apache HTTP Server 开始监听指定的端口(例如默认的80端口),接收来自客户端的HTTP请求,并根据配置文件进行相应的处理和响应。

  • httpd可以通过mod_php来运行PHP网页。其存在一个解析漏洞,在解析PHP时,如1.php0x0A将被按照1.php进行解析,导致绕过一些服务器的安全策略。

  • mod_php 是 Apache 的一个模块,它允许将 PHP 解释器嵌入到 Apache 的进程中,并通过该模块将 PHP 代码集成到 Apache 的请求处理流程中。当 Apache 收到一个包含 PHP 代码的网页请求时,mod_php 模块负责解析该请求,将 PHP 代码交给 PHP 解释器进行解释执行,然后将执行结果返回给客户端浏览器。

  • 除了 mod_php,还存在其他方式来运行 PHP 网页。以下是一些常见的替代方法:

1. PHP-FPM(PHP FastCGI Process Manager):PHP-FPM 是一个独立的进程管理器,通过 FastCGI 协议与 Web 服务器
(例如 Apache 或 Nginx)进行通信。PHP-FPM 可以独立于 Web 服务器运行,提供更高的性能和灵活性。

2. CGI(Common Gateway Interface):CGI 是一种标准的 Web 服务器和应用程序之间的接口协议。通过将 PHP 解释器
作为 CGI 程序来运行 PHP 网页,Web 服务器可以通过 CGI 协议与 PHP 解释器进行通信并执行 PHP 代码。

3. FastCGI:FastCGI 是一种改进的 CGI 协议,它使用长连接和进程池的方式提高了性能。类似于 CGI,FastCGI 可以将 
PHP 解释器作为独立的进程来运行 PHP 网页,并通过协议与 Web 服务器进行通信。
  • 这些方法都可以用来运行 PHP 网页,选择哪种方法取决于你的需求和配置。例如,mod_php 对于简单的 PHP 应用程序和较小的网站是一个简便且高效的选择,而 PHP-FPM 和 FastCGI 则适用于更大型、高流量的网站,提供更好的性能和可扩展性。

  • 这个漏洞的利用条件是apache版本为2.4.0~2.4.29

漏洞复现

  • 先访问一下服务,docker可以看到开在8080端口的,访问后有一个上传文件功能

  • 随便写一个一句话木马上传试试,页面提示bad file
<?php @eval($_POST['a']);?>

  • 看来被过滤了,根据这个漏洞,后端可能是过滤了php后缀,我们把上传的木马的名字改成evil.txt试试

  • 上传成功,说明过滤的是php后缀,根据这个漏洞,1.php0X0A(16进制的0X0A)和1.php具有相同效果,所以可以抓包在文件名后面插一个16进制
  • 因为burpsuit的16进制编辑器不能插入只能修改,所以提前在evil.php的后面加一个空格,然后把空格对应的0d改成0a就可以了

  • 然后蚁剑直接连接http://192.168.1.103:8080/evil.php,成功拿到shell

届ける言葉を今は育ててる
最后更新于 2024-02-07