Web安全攻防-----学习笔记(四)之XXE漏洞、WAF的那些事

1 篇文章 0 订阅
0 篇文章 0 订阅

4.12 XXE漏洞

4.12.1 介绍XXE漏洞

XML外部实体注入(XML External Entity)简称XXE漏洞,XML用于标记电子文档使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML文档包括XML声明、DTD文档类型定义、文档元素。

概括一下就是"攻击者通过向服务器注入指定的xml实体内容,从而让服务器按照指定的配置进行执行,导致问题"
也就是说服务端接收和解析了来自用户端的xml数据,而又没有做严格的安全控制,从而导致xml外部实体注入。

文档类型定义(菜鸟教程):https://www.runoob.com/dtd/dtd-tutorial.html

4.12.2 XEE漏洞攻击

目标地址:https://www.bihuoedu.com/vul/xxe/xxe_1.php

<?xml version="1.0">
<!DOCTYPE a[
  <!ENTITY b SYSTEM "file:///etc/passwd">
]>
<xml>
<xxe>&b;</xxe>
</xml>

懵......

4.12.4 XXE漏洞修复建议

  • 禁止使用外部实体,例如libxml_disable_entity_loader(true)
  • 过滤用户提交的XML数据,防止出现非法内容

4.13 WAF的那些事

4.13.1 介绍WAF

WAF(Web Application Firewall,Web应用防火墙),基本上可以分为几类:

  • 软件型WAF(intval等)
  • 硬件型WAF
  • 云WAF
  • 网站系统内置的WAF:可以说是网站系统内置的过滤,直接镶嵌在代码中,相对来说自由度高,一般有以下几种情况:
  • #
  1. 输入参数强制类型转换
  2. 输入参数合法性检测
  3. 关键函数执行(SQL执行、页面显示、命令执行)前,对经过代码流程的输入进行检测
  4. 对输入的数据进行替换过滤后再继续执行代码流程(转义/替换掉特殊字符等)

4.13.2 WAF判断

主要介绍判断网站是否存在WAF的几种方法。

1. SQLMap

SQLMap自带的WAF识别模块可以识别出WAF的种类,但是如果所安装的WAF并没有什么特征,SQLMap只能识别出类型是Generic。格式如下:

sqlmap -u "http://bihuoedu.com" --identify-waf --batch

2. 手工判断

直接在相应网站的URL后面加上最基础的测试语句,比如Union select 1,2,3%23,并放在一个不存在的参数名中。

?id=1 union select 1,2,3#

被拦截的表现为(增加了无影响的测试语句后):页面无法访问、响应码不同、返回与正常请求网页时不同的结果等。 

4.13.3 一些WAF的绕过方法

1.大小写混合(现在几乎没有这样的情况)

uNioN SeLecT 1,2,3,4,5

2.URL编码

  • 极少部分的WAF不会对普通字符进行URL解码
  • URL二次编码,WAF一般只进行一次解码,而如果目标Web系统的代码中进行了额外的URL解码,即可进行绕过。

3.替换关键字

WAF采用替换或者删除select/union这类敏感关键词的时,如果只匹配一次则很容易进行绕过

union select 1,2,3,4,5   替换为

union union selectselect 1,2,3,4,5

4.使用注释

注释在截断SQL语句时用的比较多,在绕过WAF时主要使用其替代空格(/*任意内容*/),适用于检测过程中没有识别注释或替换掉了注释的WAF。

union/*2333*/select/*aaa*/1,2,3,4,5

5.多参数请求划分

对于多个参数拼接到同一条SQL语句中的情况,可以将注入语句分割插入。

例如,在GET参数里,为a=[input1]&b=[input2],合并后,

a=union/* &b= */select 1,2,3,4

6.HTTP参数污染

指同一参数出现多次,不同的中间件会解析为不同的结果。

以IIS为例,普通SQL注入语句:Inject = union select 1,2,3,4

转换为以下格式:Inject=union/*&Inject=*/select/*&Inject=*/1&Inject=2&Inject=3&Inject=4

最终在IIS中读入的参数值为:

Inject=union/*,*/select/*,*/1,2,3,4

 

7.生僻函数

使用生僻函数替代常见的函数,例如在报错注入中使用poligon()函数替换常用的updatexml()函数,如下:

SELECT polygon((select*from(select*from(select@@version)f)x));

8.寻找网站源站IP

对于具有云WAF防护的网站而言,只要找到网站的IP地址,然后通过IP访问网站,就可以绕过云WAF的检测。常见方法:

  • 寻找网站的历史解析记录
  • 多个不同区域ping网站,查看ip解析的结果
  • 找网站的 二级域名、NS、MX记录等对应的IP
  • 订阅网站,查看邮件发送方的IP

9.注入参数到cookies中

某些程序员在代码中使用$_REQUEST获取参数,$_REQUEST会依次从GET/POST?cookie中获取参数,若WAF只检测了GET/POST而没有检测cookie,可将注入语句放入cookie中进行绕过。

续:Web安全攻防-----学习笔记(五)之Metasploit技术

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值