栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

山东大学软件学院项目实训-创新实训-山大软院网络攻防靶场实验平台(十六)-XXE(2)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

山东大学软件学院项目实训-创新实训-山大软院网络攻防靶场实验平台(十六)-XXE(2)

目录
  • 前言:
  • 2、项目配置
  • 3、编写“XXE漏洞”后端代码
  • 4、编写“XXE漏洞”前端代码
  • 5、运行测试


前言:

继上一篇博客,本篇博客记录下XXE漏洞靶场的搭建过程及关键代码。


2、项目配置

编写 application.properties

spring.thymeleaf.prefix = classpath:/templates/

pom.xml 导入相关依赖



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.6.4
         
    
    com.example
    XXE_springboot
    0.0.1-SNAPSHOT
    XXE_springboot
    XXE_springboot
    
        1.8
    
    
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        

        
            org.springframework.boot
            spring-boot-starter-thymeleaf
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    




3、编写“XXE漏洞”后端代码

indexController.java:用于匹配 index 首界面,匹配到 index.html

package com.example.xxe_springboot.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class indexController {
    @RequestMapping(value={"/","/index.html"})
    public String index(){
        return "index";
    }
    
}

index.html 中提交的数据,请求到 localhost:8080/xxe ,编写匹配 xxe 请求的 controller

XxeController.java

package com.example.xxe_springboot.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;

@RestController
public class XxeController {
    @RequestMapping("/xxe")
    public String xxe(@RequestParam(value = "xxe",required = false) String xxe) throws ParserConfigurationException, IOException, SAXException {
        
        // 把要解析的 XML 文档转化为输入流,以便 DOM 解析器解析它
        String anyString = xxe;
        InputStream is = new ByteArrayInputStream(anyString.getBytes(StandardCharsets.UTF_8));
        //InputStream is = new FileInputStream("D:\note2.xml");
        //创建DOM模式的解析器工厂
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
        //调用工厂的方法得到DOM解析器对象
        DocumentBuilder builder = factory.newDocumentBuilder(); 
        //调用 DOM 解析器对象的 parse() 方法解析 XML 文档,得到代表整个文档的 Document 对象
        Document doc = builder.parse(is);
        //根据元素名称获取元素值
        NodeList nodeList = doc.getElementsByTagName("from");
        
        System.out.println(nodeList.item(0).getTextContent());
        
        return "success";
    }
}

成功解析后返回到前端界面“success”,控制台输出读取文件内容,用于测试。


4、编写“XXE漏洞”前端代码

首先在主界面编写一个输入框,用于输入 payload,如果想构造其他场景也是可以的,例如登录界面等场景,但是我这里为了测试,就简单写了一个输入框,毕竟目的不是写一个前端,关键在于后端实现,漏洞场景的复现。

index.html




    
    XXE


    

这是一个XXE漏洞环境,试着构造payload读取D://XXE.txt

payload:

5、运行测试

启动项目:

访问主界面:

payload:



        ]>

    Tove
    &myentity;
    Reminder
    Don't forget me this weekend

返回结果:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/887940.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号