美文网首页
2020-02-12Jsp挖掘(6)-JSP命令执行漏洞

2020-02-12Jsp挖掘(6)-JSP命令执行漏洞

作者: thelostworldSec | 来源:发表于2020-02-12 10:04 被阅读0次

JSP命令执行漏洞

一、代码执行成因

调用Runtime但是没有对传入参数没有过滤和限制:

jsp调用命令行的只需要在<%%> 中编写使用Runtime类即可调用命令行

Windows 用“&”,linux用“;”号来分隔多条命令

'cmd.exe /c type "E:\jsp\WebGoat-5.3_RC1\tomcat\webapps\webgoat\lesson_plans\English\BasicAuthentication.html"'

注入数据"%26dir *

二、实例子操作

http://localhost:8080/WebGoat/attack?Screen=11&menu=1100

抓去数据包

数据执行的语句:

'cmd.exe /c type "C:\WebGoat-5.4\tomcat\webapps\WebGoat\lesson_plans\English\BasicAuthentication.html"'

闭合:

"%26 dir *

执行的结果:

'cmd.exe /c type "C:\WebGoat-5.4\tomcat\webapps\WebGoat\lesson_plans\English\AccessControlMatrix.html"& dir *"'

尝试其他的查看:

"%26 netstat -a

返回相关信息

防护方法:

找到系统的相关命令执行的源码:

执行系统的关键源代码 private String exec(WebSession s, String[] command) { System.out.println("Executing OS command: " + Arrays.asList(command)); ExecResults er = Exec.execSimple(command); // the third argument (index 2) will have the command injection in it if ((command[2].indexOf("&") != -1 || command[2].indexOf(";") != -1) && !er.getError()) { makeSuccess(s); }  return (er.toString()); }  ----------------------------------------------------------------------------------  过滤危险字符        private String exec(WebSession s, String command)        {              System.out.println("Executing OS command: " + command);              if ((command.indexOf("&") != -1 || command.indexOf(";") != -1)                || command.indexOf("\"") != -1) || command.indexOf("|") != -1))//添加的过滤的特殊符合              {                      return "";              }                ExecResults er = Exec.execSimple(command);              if ((command.indexOf("&") != -1 || command.indexOf(";") != -1) && !er.getError())              {                      makeSuccess(s);              }              return (er.toString());        }

保存Java文件,重起tomcat环境

将修改的.java文件编译成.class文件替换对应的原来的.class文件防护就OK。

参考前面怎么本地编译.java文件。

url:https://mp.weixin.qq.com/s?__biz=MzIyNjk0ODYxMA==&mid=2247483687&idx=1&sn=8551b072266d69f6eb323d2a76f9b77f&chksm=e869e24adf1e6b5c25d5fe542826d6af754903b53889f020839fe1985770021b3290b8504c97&token=699917353&lang=zh_CN#rd

三、防护总结:

1、安全产品waf等等过滤相关的关键词。

2、系统的代码层面,可以关键点执行的相关函数过滤相关的关键词,或者是全局过滤中过滤敏感字符和命令执行相关的代码。

分黑名单(不允许的一些字符)、白名单(运行的字符)。

参数编码

Unix 中

可以通过编码方式,避免命令的注入

/bin/bash script.sh\;rm *

/bin/bash –c “sh script.sh\; rm *”

四、注意了解:

相关命令执行文章:https://www.cnblogs.com/unixcs/p/10475131.html

参考文献:https://blog.csdn.net/weixin_43706468/article/details/88819431

​公众号:

thelostworld:

个人知乎​:https://www.zhihu.com/people/fu-wei-43-69/columns

​个人简书:https://www.jianshu.com/u/bf0e38a8d400

相关文章

  • 2020-02-12Jsp挖掘(6)-JSP命令执行漏洞

    JSP命令执行漏洞 一、代码执行成因 调用Runtime但是没有对传入参数没有过滤和限制: jsp调用命令行的只需...

  • 2.命令执行漏洞

    定义:攻击者可以随意执行系统命令,命令可以连接执行:&,||,| 命令执行漏洞:直接调用操作系统命令 代码执行漏洞...

  • 文件上传漏洞

    文件上传漏洞 权限 漏洞分类 利用条件 漏洞挖掘 常见可执行文件后缀

  • Samba远程命令执行漏洞(CVE-2017-7494)

    一、 实验目标 理解Samba远程命令执行漏洞的原理 掌握怎么利用Samba远程命令执行漏洞 链接:https:/...

  • 干货 | 命令执行漏洞和代码执行漏洞详解

    命令执行(RCE)漏洞和代码执行漏洞区别如下: 代码执行实际上是调用服务器网站代码进行执行 命令执行则是调用操作系...

  • 命令执行漏洞

    一、命令执行漏洞基本定义 命令执行漏洞是指攻击者可以随意执行系统命令,其B/S架构和C/S架构都是存在的,是高危漏...

  • Java WebShell1—Java 命令执行

    JSP执行命令的方式有很多,包括常见的命令执行方法(Runtime、ProcessBuilder、ProcessI...

  • 命令执行漏洞

    命令执行 利用条件 应用调用执行系统命令的函数 将用户输入作为系统命令的参数拼接到了命令行中 没有对用户输入进行过...

  • 命令执行漏洞

    1脚本语言(如PHP)优点是简洁、方便,但也伴随着一些问题,如速度慢、无法接触系统底层,如果我们开发的应用(特别是...

  • 命令执行漏洞

    命令执行漏洞的成因: 脚本语言(如PHP )优点是简洁、方便,但也伴随着一些问题,如速度慢、无法接触系统底层,如果...

网友评论

      本文标题:2020-02-12Jsp挖掘(6)-JSP命令执行漏洞

      本文链接:https://www.haomeiwen.com/subject/clyqfhtx.html