JAVA常见命令执行代码(超简单)

admin 2023年5月15日02:33:10评论33 views字数 870阅读2分54秒阅读模式

1.最为常见的一种Runtime

所以在审计时,其实可以关注一下这个函数,而exec("")中其实都会放接收到的参数。

Runtime.getRuntime().exec("calc");

JAVA常见命令执行代码(超简单)


2.ProcessBuilder执行命令

这里本人简化了,只是想告诉大家这种执行命令的方法。在审计过程中,本人会先关注到有没有使用ProcessBuilder这个类,如果有使用的话,其次会关注有没有调用到start这个方法。以上条件都存在我会寻找command()函数中的传参是否可控。如果可控的情况,则会进一步挖掘。

ProcessBuilder processBuilder = new ProcessBuilder();processBuilder.command("calc");processBuilder.start();


3.反射执行命令

其实反射来玩的话,操作性就非常大了。根据自己思路可自由发挥

首先str存放的是Runtime这个类


而后通过forName获取到的Class进一步使用getMethod。最终通过invoke调用来执行命令

String str = new String(new byte[]{106, 97, 118, 97, 46, 108, 97, 110, 103, 46, 82, 117, 110, 116, 105, 109, 101});Class<?> c = Class.forName(str);Method m1 = c.getMethod("getRuntime");Method m2 = c.getMethod("exec",String.class);try {   m2.invoke(m1.invoke(null,new Object[]{}),new Object[]{"calc"});} catch (IllegalAccessException e) {    e.printStackTrace();} catch (InvocationTargetException e) {    e.printStackTrace();}



原文始发于微信公众号(HACK安全):JAVA常见命令执行代码(超简单)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年5月15日02:33:10
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   JAVA常见命令执行代码(超简单)https://cn-sec.com/archives/1712003.html

发表评论

匿名网友 填写信息