美文网首页
一次jsp上传绕过的思考 --yzddMr6

一次jsp上传绕过的思考 --yzddMr6

作者: yzddMr6 | 来源:发表于2021-05-14 17:32 被阅读0次

    @yzddmr6

    @zsxq: websafe

    背景

    前几天有个小伙伴做项目的时候遇到一个问题来问我,大概情况如下:

    1. jsp的站,可以任意文件上传
    2. 上传jsp会把<%中的<给转义掉
    3. 上传jspx会把<jsp:scriptlet>到</jsp:scriptlet>中的内容替换为空

    问有什么突破办法?

    image.png image.png

    当时研究了一下后jsp和jspx各给了一个解决方案,后来发到星球里后@hosch3n师傅又提出了一种新的方案,tql

    image.png

    解决方案

    其实问题等价于:

    1. jsp不使用<% %>标签如何执行命令
    2. jspx不使用<jsp:scriptlet> </jsp:scriptlet>如何执行命令

    jsp利用EL表达式绕过

    jsp是默认解析el表达式的,并且在没有jsp标签的情况下也可以直接执行,这样就可以绕过jsp的限制。

    星球里面@Gh0stFx也提到了这一点

    image.png image.png

    jspx利用命名空间绕过

    因为jspx实际上是jsp的xml写法,所以继承了xml的所有特性,例如cdata跟html实体编码等,同样也继承了命名空间的特性。

    https://www.runoob.com/xml/xml-namespaces.html

    image.png

    在<jsp:scriptlet>这个标签中,jsp就是默认的命名空间,但是实际上可以随意替换成其他名字

    image.png image.png

    这样就绕过了对<jsp:scriptlet>的过滤

    jspx利用<jsp:expression>绕过

    在jsp中可以利用表达式绕过,那么jspx中同样也可以,以下是jsp跟jspx语法的对照:


    image.png

    这个方法是@hosch3n师傅提出来的,把表达式写到jspx中,同样可以达到执行命令的目的

    image.png image.png

    相关文章

      网友评论

          本文标题:一次jsp上传绕过的思考 --yzddMr6

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