PHP imap 远程命令执行漏洞(CVE-2018-19158)

PHP imap 远程命令执行漏洞(CVE-2018-19158)

php imap扩展用于在PHP中执行邮件收发操作。其imap_open函数会调用rsh来连接远程shell,而debian/ubuntu中默认使用ssh来代替rsh的功能(也就是说,在debian系列系统中,执行rsh命令实际执行的是ssh命令)。

因为ssh命令中可以通过设置-oProxyCommand=来调用第三方命令,攻击者通过注入注入这个参数,最终将导致命令执行漏洞。

启动环境

        1.进入漏洞环境目录
        2.docker-compose build
        3.docker-compose up -d

默认打开的端口是8080

进行复现之前先了解一下php_imap函数

作用:此函数基于imap 扩展,imap_open -将IMAP流打开到mailbox。

用法:imap_open ( string $mailbox , string $username , string $password )

其中包括三个参数,二三个是登录名和密码,第一个mailbox是执行命令参数的一部分,说到这里其实就很明显了,可以抓包修改邮箱名从而达到命令注入的目的

关于mailbox

在这里插入图片描述

并且上文提到imap_open函数会通过ssh远程连接shell(建立SSH连接)

然后通过设置oProxyCommand=参数执行第三方命令

打开环境是一个邮件系统:

在这里插入图片描述
既然是命令执行漏洞并且知道注入点在哪直接抓包:

在这里插入图片描述

根据给的poc制作POST包发送:

在这里插入图片描述

看一下构造的命令,先url解码再将选中部分base64解码,命令部分就是

在这里插入图片描述

然后再将请求包发送

在这里插入图片描述

进入容器

docker-compose exec web bash

进入根目录下的tmp查看test0001文件

在这里插入图片描述

复现完成,退出docker环境

修复方法

  1. 检查传递给 imap_open 的用户输入参数。

  2. 在 mailbox 参数中使用某些标志,其中 /norsh 标志可以用来禁用IMAP预身份认证模式。

原创文章 40 获赞 215 访问量 9693

猜你喜欢

转载自blog.csdn.net/qq_43571759/article/details/105542548