欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

如何使用深度学习检测XSS

来源:本站整理 作者:foxscheduler 时间:2017-08-01 TAG: 我要投稿

一、前言
众所周知,深度学习在计算机视觉、自然语言处理、人工智能等领域取得了极大的进展,在安全领域也开始崭露头角走向了实际应用。本文中进行的实验主要以文本分类的方法,使用深度学习检测XSS攻击,由于本人是初学者,难免对算法本身的理解不够确切,所以本文尽量使用通俗简单的方式介绍算法,不会过多的讲解细节,以免误导大家。
二、数据集
安全领域的公开数据集非常的稀缺,本文提供的实验数据包含两个部分:从xssed爬取的黑样本作为正样例,有4万多条;另外提供约20万条正常的http get请求记录作为负样例,为了保证数据安全,去除了url中的host、path等信息,仅保留了payload的部分。
以上数据url编码后保存在csv中,由于部分原始数据进行过url编码,所以要两次url解码后才能使用。
正样例:
topic=http://gmwgroup.harvard.edu/techniques/index.php?topic=script>alert(document.cookie)script>
siteID=';alert(String.fromCharCode(88,83,83))//\';alert(String.fromCharCode(88,83,83))//";alert(String.fromCharCode(88,83,83))//\";alert(String.fromCharCode(88,83,83))//-->SCRIPT>">'>SCRIPT>alert(String.fromCharCode(88,83,83))SCRIPT>
js='"-->style>script>script>alert(/meehinfected/)script>title>marquee>h1>XSS:)h1>marquee>strong>blink>XSSTESTblink>strong>marquee>h1  >XSS

 h1>marquee>
负样例:
_=1498584888937/&list=FU1804,FU0,FU1707,FU1708,FU1709,FU1710,FU1711,FU1712
hid=sgpy-windows-generic-device-id&v=8.4.0.1062&brand=1&platform=6&ifbak=0&ifmobile=0&ifauto=1&type=1&filename=sgim_privilege.zip
iid=11491672248&device_id=34942737887&ac=wifi&channel=huawei&aid=13&app_name=news_article&version_code=621&version_name=6.2.1&device_platform=android&ssmix=a&device_type=FDR-A03L&device_brand=HUAWEI&language=zh&os_api=22&os_version=5.1.1&uuid=860947033207318&openudid=fc19d05187ebeb0&manifest_version_code=621&resolution=1200*1848&dpi=240&update_version_code=6214&_rticket=1498580286466
三、分词
使用文本分类的方法自然涉及到如何将文本分词。观察以上正样例,人是如何辨别XSS的:参数内包含完整可执行的HTML标签和DOM方法。所以要支持的分词原则为:
 单双引号包含的内容 ‘xss
  http/https链接
  标签
  开头
  参数名 topic=
  函数体 alert(
  字符数字组成的单词
另外,为了减小分词数量,需要把数字和超链接范化,将数字替换为”0”,超链接替换为http://u。
实现的代码如下:
def GeneSeg(payload):
    payload=payload.lower()
    payload=unquote(unquote(payload))
   payload,num=re.subn(r'\d+',"0",payload)
   payload,num=re.subn(r'(http|https)://[a-zA-Z0-9\.@&/#!#\?]+',"http://u", payload)
    r = '''
        (?x)[\w\.]+?\(
        |\)
        |"\w+?"
        |'\w+?'
        |http://\w
        |
        |
        |
        |\w+=
        |>
       |[\w\.]+
    '''
    return nltk.regexp_tokenize(payload,r)
分词后的正样例:
['topic=', 'http://u', '', 'alert(','document.cookie', ')', '']
['siteid=', 'alert(', 'string.fromcharcode(', '0','0', '0', ')', ')', 'alert(', 'string.fromcharcode(', '0', '0', '0', ')', ')','alert(', 'string.fromcharcode(', '0', '0', '0', ')', ')', 'alert(','string.fromcharcode(', '0', '0', '0', ')', ')', '>', '','>', '>', '', 'alert(', 'string.fromcharcode(', '0', '0','0', ')', ')', '']
['js=', '>', '', '','', 'alert(', 'meeh', 'infected', ')', '','', '', '', 'xss', ')', '','', '', '', 'xss

[1] [2] [3] [4]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载