记一次突破反弹shell

这是 酒仙桥六号部队 的第 106 篇文章。

全文共计1809个字,预计阅读时长6分钟。

背景

某天闲着无聊,小伙伴发来一个某网站,说只能执行命令,不能反弹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:calc
MacOS:calculator
Linux: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。

(0)

相关推荐

  • shell 命令 exec

    exec command : 表示不创建子进程的方式执行后面的命令. exec家族函数的功能是类似的,用新的代码段替换原有代码段而已,成功则不会返回,只有出错了才会返回,并执行下面的指令.

  • 给哥斯拉 webshell 管理工具加后门

    Java 反编译是分析 Java 程序的基本手段,也是对一些 Java 程序二次开发的基本前提,可用于反编译的工具有很多,比如 JD-GUI,CRF 等,个人比较常用的是 IntelliJ IDEA ...

  • shiro反序列化漏洞综合利用

    涛哥出品,必属精品. shiro反序列化漏洞综合利用 项目基于javafx,利用shiro反序列化漏洞进行回显命令执行以及注入各类内存马 检出默认key (SimplePrincipalCollect ...

  • 胡任标(均线系统操作 主控三个基本要点 真假突破 反弹和反转 趋势与盘整 止涨止跌四步讯号 止跌量形态)

    胡任标(均线系统操作 主控三个基本要点 真假突破 反弹和反转 趋势与盘整 止涨止跌四步讯号 止跌量形态)

  • 谨记,短线进入反弹高抛区

    破3500前有技术反弹需求注意,3503不是底!按之前观点有30-60分钟级反弹从时间上算已到尾声两市成交量10113亿今天涨停102只,跌停:6只跌大于5%:54只,涨大于5%:240沪深总上涨家数 ...

  • 反弹shell的N种姿势

    0x00 前言 在渗透测试的过程中,在拿到webshell以后,如果目标主机是Windows主机,则是通过开3389端口在远程连接,如果目标主机是linux服务器,一般我们都会选择反弹shell来进行 ...

  • linux反弹shell的各种姿势

    准备工作 外网服务器103.234.72.5 本地Kali一台,优班图一台 Bash反弹 注意之前使用nc监听端口反弹shell时都会有一个警告:Warning: forward host looku ...

  • 转【期海记】乘风破浪,纵横期海,来自突破型趋势交易的真实分享!

    一本正经说胡话的期海记 作者:叫兽 写在起航前的废话: 交易就是一团欲望,满足就空虚,不满足就痛苦. 即便是一个成功的交易员,也是在这空虚和痛苦中辗转反复.欲罢不能. 至于尚未成功的交易员,只有在苦海 ...

  • 大反弹,一只持仓股突破新高

    今天7点起床,跑步3.6公里. 下午去打了一剂新冠疫苗,明天不跑步了. 今天股市大反弹,机构抱团股像发疯一样反扑.医疗器械,新能源汽车,港口航运等板块涨幅居前.牙科眼科也表现不错,半导体表现活跃,我持 ...

  • 0614:缩量行情难突破,短期关注锂电池等超跌反弹板块

    今日热点+个股 昨日回顾 1.周二中小创迎来大幅反弹,创业板指于10日均线获得支撑,在次新股.锂电池等题材股带动下,大涨1.1%,重新站上5日均线.尽管保险.银行等金融权重回调,但有色.煤炭等二线蓝筹 ...

  • 《寻梦环游记》坐稳榜首,《正义联盟》突破6亿!

    12月1日,星期五,12月的第一天,有多部电影上映,不过<寻梦环游记>还笑到了最后! (数据来源艺恩电影智库,截止北京时间12月1日22:00) 由迪士尼皮克斯联合出品的<寻梦环游记 ...

  • 淘金早评:今日反弹能否突破3500点

    今日看点: 1.外围普涨,大盘能否突破3500点? 2.男人的茅台.女人的医美,后市如何参与? 周三,三大指数小幅低开后展开震荡,10点左右探底回升,午未翻红在零轴附近震荡,在外围市场全线大跌的情况下 ...