(19)中华 人民共和国 国家知识产权局
(12)发明 专利申请
(10)申请公布号
(43)申请公布日
(21)申请 号 202111660103.7
(22)申请日 2021.12.3 0
(71)申请人 北京工业大 学
地址 100124 北京市朝阳区平乐园10 0号
(72)发明人 姜楠 关云方
(74)专利代理 机构 北京思海天达知识产权代理
有限公司 1 1203
代理人 刘萍
(51)Int.Cl.
G06F 11/36(2006.01)
G06F 9/455(2006.01)
G06N 3/04(2006.01)
G06N 3/08(2006.01)
(54)发明名称
基于时间卷积网络的XSS 模糊测试用例生成
方法
(57)摘要
本发明提出基于时间卷积网络的XSS 模糊测
试用例生成方法。 目前, 大多是 以关键载荷字典
作为数据集, 并通过搭建字 符级别语 言模型的方
式进行用例的生成。 然而, 由于目前存在关键载
荷字典中用例数量有限等问题, 使得生成效率和
质量受到影 响。 本发明以JS 事件函数插入位置作
为依据, 对用例进行结构划分。 在此基础上, 参考
XSS绕过方法, 根据划分结果对用例各部分内容
进行变异, 以实现数据增强。 其次, 对用例中的单
词与字符进行联合编码, 保证在保留字符变异性
的同时, 不会破坏原有单词语义。 最后, 通过TCN
搭建用例生成模型, 通过学习用例特征, 生成符
合要求的XSS漏洞测试用例。 本发明提高XSS漏洞
模糊测试用例生成效率和质量。
权利要求书4页 说明书16页 附图3页
CN 114297079 A
2022.04.08
CN 114297079 A
1.基于时间卷积网络的XS S模糊测试用例生成方法, 其特 征在于:
1).数据预处理阶段: 确定时间卷积网络语言生成模型的输入与输出变量: 以XSS漏洞
测试用例为研究对象, 对 XSS漏洞测试用例中的关键载荷部 分进行结构划分与变异操作, 分
别得到变异后的标签、 属性及事件函数, 最 终通过替换和整理, 获得扩充后的关键载荷数据
集PM=(pm1,pm2,...,pmz)作为下一个阶段的输入;
针对XSS测试用例中关键载荷Payl oad的基本形式表示 为:
Payload=<L,A,E> (1)
其中, L为关键载荷中的HTML标签部分, A为关键载荷中的属性部分, E为关键载荷中的
JS事件函数部分;
针对XSS漏洞测试用例, HTML标签通常被划为script标签和普通标签两种形式, 即L=
{Ls,Lc}; 带有script标签属性部分包含HTML属性、 CSS属性及JS属性三种形式, 即A={AH,
AC,AJ}; 这里的属性部分特指属性名; E为关键载荷中的JS事 件函数部分;
通过对关键载荷进行结构划分的方式, 能够将关键载荷中的各类标签、 属性和事件函
数进行提取, 方便后续的变异操作; 根据Payload 的基本形式将关键载荷结构划分为以下几
种情况: 1)JS事件函数E作为双标签script标签的文本内容, 插在script开标签之后, 此情
况中script标签通常不带属性, 对应公式(2); 为了便于绕过针对script标签的防御措施,
script标签前面有时会放置 其他普通 标签LC, 对应公式(3); 2)JS事件函数E作为 标签LC中属
性AH、 AC和AJ所对应的值; 在一条关键载荷中, 也存在着同时具有属性AH和AC的情况, 在这种
情况中, JS事件函数E作为属性AC的值, 属性AC和他的值则作为属性AH值的一部分; 以上情况
分别对应下列公式(4)、 公 式(5)以及公 式(6); 此外, 在关键载荷的构造中也存在CSS属性针
对标签选择器做指定样式的情况, 在此类情况里一条关键载荷Payload中会存在两个标签
LC, 此情况对应公式(7); 经 过整理, 根据各个规则关键载荷的基本形式具体定义如下:
XSSPayload1=LS+E (2)
XSSPayload2=LC+LS+E (3)
XSSPayload3=(LC+AH)+E (4)
XSSPayload4=(LC+AH+AC)+E (5)
XSSPayload5=(LC+AJ)+E (6)
XSSPayload6=(LC+LC+AC)+E (7)
其中, 运算符+表示关键载荷中各部分的连接, 标签L在公式中的位置以其开标前的出
现位置为 准;
基于上述结构划分规则, 将关键载荷数据集中的所有标签、 属性及事件特征进行提取,
得到六个代表不同部分的字符串数组, 分别代表script标签LS、 普通标签LC、 HTML属性AH、
CSS属性AC、 JS属性AJ和JS事件函数E;
根据目前已有的XSS漏洞关键载荷及XSS漏洞注入案例分析可得, 针对XSS漏洞有效常
用且适合于局部变异的绕过方法有以下几种, 分别是大小写绕过、 编码 绕过、 双写绕过、 添
加特殊字符绕过和添加混淆词绕过
进行基于字符进行变异需要考虑变异的位置, 即变异点; 因此, 在对划分阶段所获取的
字符串数组中每一个字符串进 行变异时, 将字符串中每一个字符所对应的索引作为变异 点
进行变异; 字符串中第一个字符所对应索引为开始索引, 最后一个字符所对应索引为结束权 利 要 求 书 1/4 页
2
CN 114297079 A
2索引; 以i作为循环变量, 从指 定数量的字符中取i个字 符的索引作为一组变异 点组合情况;
这里字符的指定数量为字符串数组中每一个字符串的长度; 根据每一条划分结果的标签、
属性及事 件函数字符串索引范围, 逐一获得包 含变异点全部情况的组合M, 得到公式(8):
其中Ml为变异索引组合数组的长度, H为结束索引;
根据获得的变异索引组合数组M, 以及XSS绕过方法对所得到的字符串数组进行变异;
在算法描述中, 字符串mutationString为待变异字符串, mutationNum为根据索引生成的变
异组合数组, 针对XS S关键载荷各部分的具体 变异算法描述如下:
1)、 输入字符串mutati onString以及数组mutati onNum;
2)、 定义listText用来存 储变异后的字符串列表;
3)、 获取一个满足大于0, 小于mutationNum数组长度条件的随机整数, 以此作为循环条
件决定变异次数; 其中, 随机整数通过pytho n中numpy库中的randi nt()函数进行获取;
4)、 根据变异次数, 每一次获取一个满足大于0, 小于mutationNum数组长度条件的随机
整数, 以此作为所选择的变异组合数组索引;
5)、 根据所选择索引所对应的变异排列组合逐一对字符串内字符依次执行变异, 直至
循环结束; 变异操作包括在变异索引处转换字符大小写、 替换字符编码形式、 进行嵌套操
作、 添加特殊字符以及添加混淆词;
6)、 对变异后的字符串列表l istText进行去重操作;
7)、 输出变异后的字符串列表listText; 对于上述变异对数据进行增强, 得到不同部分
变异后的字符串列表; 根据该列表, 通过替换 的方式对原有的初始关键载荷数据集进行数
据扩充, 使得 数据集的针对性和多元性得到提升;
基于上述变异, 获得数量更多且形式更丰富的标签、 属性及事件函数; 根据这些变异后
标签、 属性及事件函数, 通过替换 的方式对原有的初始关键载荷数据集进行数据扩充获得
新的关键载荷数据集, 实现数据增强的效果, 使得数据集的针对性和多 元性得到提升; 此步
骤最终得到的数据集为关键载荷数据集PM={pm1,pm2,…,pmz}; 此数据集将作为下一阶段
输入;
语言生成模型搭建阶段: 设计用于XSS漏洞测试用例生成的语言生成模型, 利用时间卷
积网络建立联合单词和字符进行编码的用例生成模型; 使用的用例生成模型共分为两部
分, 分别是编码部分以及模型 搭建部分;
编码部分通过对XSS关键载荷中的单词与字符进行联合编码的方式, 进行模型输入数
据集的构 造; 为了能够在保存原有的语义结构的同时, 保证用例生成具有字符变异 性, 通过
使用对XSS关键载荷语句中的单词与字符进行联合编码的方法完成输入数据集的构造; 其
中, 单词是具有一定含义的, 由若干个字符组成的固定字符串, 如果对其进行拆分会破坏原
有含义;
把上一部分中所获取的变异前和变异后的标签及属性以单词的形式存入词典, 将事件
分割为字符的形式存入词典; 该词典中包含以单词形式存储的标签和属 性、 被分割为单一
字符的事件以及他们所对应的数字; 通过词典, 便于单词和字符向数字形式的转换; 在针对
标签进行编码操作时, 将闭标签'>'单独拆 分开来以字 符的形式进 行存储, 标签中其他部 分权 利 要 求 书 2/4 页
3
CN 114297079 A
3
专利 基于时间卷积网络的XSS模糊测试用例生成方法
文档预览
中文文档
24 页
50 下载
1000 浏览
0 评论
309 收藏
3.0分
温馨提示:本文档共24页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 人生无常 于 2024-03-19 03:56:07上传分享