V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
virusdefender
V2EX  ›  Python

两个非常隐蔽的 bug 导致的 Python xss filter 绕过

  •  
  •   virusdefender ·
    virusdefender · 2014-11-14 20:09:06 +08:00 · 4143 次点击
    这是一个创建于 3698 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近在网上找了一个Python实现的xss filter,然后通过测试发现有绕过的情况。究其原因,是忽略了一个比较隐蔽而且经常被误用的地方。然后自己去修改,去打补丁,发现还是有问题,又牵扯出了python的另外两个知识点,反正我觉得自己学到了很多,在这里分享一下,有什么问题希望各位大神提出来。

    地址: http://www.virusdefender.net/index.php/archives/45/
    12 条回复    2014-11-15 07:09:42 +08:00
    binux
        1
    binux  
       2014-11-14 20:49:30 +08:00
    这样防xss思路就是错的
    virusdefender
        2
    virusdefender  
    OP
       2014-11-14 20:50:28 +08:00
    @binux 为什么啊?
    binux
        3
    binux  
       2014-11-14 21:09:55 +08:00
    @virusdefender 哦,我明白你的目的了。

    创建模式要比删除模式好。创建一个新对象,提取需要的信息,把信息赋值给新对象。
    feilaoda
        4
    feilaoda  
       2014-11-14 21:12:33 +08:00
    lxml的clean html即可
    gamexg
        5
    gamexg  
       2014-11-14 21:13:25 +08:00
    没做过,难道像 ChanneW 说的,全部无效,然后手工重新生成有效的html代码?
    Bakemono
        6
    Bakemono  
       2014-11-14 21:15:44 +08:00 via iPad
    今天没带macbook回宿舍…明天我帮lz bypass一下xss filter 吧:)
    nooper
        7
    nooper  
       2014-11-14 21:22:30 +08:00
    应当尽量避免使用del,你的代码可以更简化。还是有点复杂。
    virusdefender
        8
    virusdefender  
    OP
       2014-11-14 21:25:58 +08:00
    @binux
    @nooper 其实这也是别人写的 我拿过来测试的时候发现了几个问题
    virusdefender
        9
    virusdefender  
    OP
       2014-11-14 21:26:29 +08:00
    @Bakemono 好啊 好啊 这几个问题也是我在fuzz的时候发现的啊
    ryd994
        10
    ryd994  
       2014-11-15 00:27:21 +08:00 via Android
    典型的被语言惯坏了,你到C++里绝对会被打死~
    正确做法难道不是一边检查一边加元素,检查不通过就不加么
    ryd994
        11
    ryd994  
       2014-11-15 00:30:47 +08:00 via Android
    检查,坚持成功就加到新list里
    msg7086
        12
    msg7086  
       2014-11-15 07:09:42 +08:00
    从Rubyer的角度来看这个似乎应该用#select或者#delete加个block解决。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1342 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 17:18 · PVG 01:18 · LAX 09:18 · JFK 12:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.