yzddMr6's Blog

脚本小子


  • 首页

  • 分类

  • 标签

  • 归档

  • 知识星球

  • 关于

  • 搜索

星球问答:一次jsp上传绕过的思考

发表于 2021-01-15 更新于 2021-06-15 分类于 技术文章 阅读次数:

背景

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

  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语法的对照:

JSP语法JSP document语法
Page Directive<%@ page %><jsp:directive.page />
Include Directive<%@ include %><jsp:directive.include />
Tag Library Directive<%@ taglib %>xmlns:prefix=”Library URI”
Declartion<%! … %>jsp:declaration … </jsp:declaration>
Scriplet<% … %>jsp:scriptlet … </jsp:scriptlet>
Expression<%= … %>jsp:expression … </jsp:expression>
Comment<%-- … --%>

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

image.png

image.png

本文标题:星球问答:一次jsp上传绕过的思考

文章作者:yzddMr6

发布时间:2021年01月15日 - 11:22

最后更新:2021年06月15日 - 21:50

原始链接:https://yzddmr6.com/posts/jsp-webshell-upload-bypass/

许可协议: 转载请保留原文链接及作者。

yzddMr6 wechat
欢迎加入我的知识星球
你的支持将是我更新的动力!
yzddMr6 微信支付

微信支付

# bypass
As-Exploits: 中国蚁剑后渗透框架
Jscript加载Assembly踩坑记
  • 文章目录
  • 站点概览
yzddMr6

yzddMr6

慢就是快,少就是多。
61 日志
3 分类
12 标签
RSS
GitHub E-Mail 简书
友情链接
  • NaiveKun
  • Fi9coder
  • Sardinefish
  • Panda
  • 九世
  • LFY
  • EarthC
  • Ablustrund
  1. 1. 背景
  2. 2. 解决方案
    1. 2.1. jsp利用EL表达式绕过
    2. 2.2. jspx利用命名空间绕过
    3. 2.3. jspx利用jsp:expression绕过
© 2022 yzddMr6
|