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預身份認證模式。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章