我有一个Apache Web服务器2.0和Tomcat服务器7.0。
Web服务器将请求定向到Tomcat服务器。
可以直接访问Web和tomcat应用程序服务器。
当表达式语言$ {9-4}作为请求参数发送到Web服务器URL时,表达式将被评估并返回结果为5.
如果向Tomcat服务器发送了相同的请求,则结果为$ {9-4},无需评估。
例如:
Web服务器
请求:http://apache-web-server:port/context?test= $ {9-4}
在jsp:5中打印测试时的响应
Tomcat服务器
请求:http://tomcat-server:port/context?test= $ {9-4}
在jsp中打印测试时的响应:$ {9-4}
Apache Web服务器是否在此评估表达式语言?
如何阻止服务器评估表达式语言?
我也在Tomcat应用服务器中使用Struts 2.
如果Apache Web服务器具有评估表达式的能力,那么如何在Apache Web服务器中关闭OGNL表达式评估?
答案 0 :(得分:0)
看起来JSP表达式语言正在解析您的参数。它实际上是您的应用程序的远程代码执行漏洞。
看看这篇文章: https://www.owasp.org/index.php/Expression_Language_Injection http://danamodio.com/appsec/research/spring-remote-code-with-expression-language-injection/
答案 1 :(得分:0)
为什么你传递这些作为url中的值。而不是你可以在变量中传递这些值并从jsp或控制器分配访问变量值,然后你可以在那里编写逻辑。