《Web安全之深度学习实战》笔记:第十二章 智能扫描器(1) XSS攻击载荷

别看本小节的标题较为炫酷,实际上是这就是通过让机器通过学习攻击样本,自动生成XSS攻击载荷,与本书第三章中使用的SequenceGenerator原理相同,具体可参考我之前的笔记。

《Web安全之深度学习实战》笔记:第三章 循环神经网络_mooyuan的博客-CSDN博客

一、扫描器

漏洞扫描主要就是基于扫描器,扫描器是安全领域非常重要的一个工具,大多数安全公司都会有自己的扫描器产品。扫描器的原理非常简单,如图12-1所示,扫描器通过对目标网站发送攻击请求,根据应答内容判断是否存在漏洞,整个过程就是模拟黑客踩点和渗透的过程。常见的开源扫描器有Nikto、WebScarab、Burpsuite等。

《Web安全之深度学习实战》笔记:第十二章 智能扫描器(1) XSS攻击载荷_第1张图片

传统扫描器基于事先配置好的规则模板,发送攻击请求,然后分析应答内容,从而进一步判断是否存在漏洞。扫描器的漏洞发现能力取决于规则的丰富程度,一旦出现规则集合中不覆盖的漏洞,就无法检出,这是传统安全产品的通病。在实际的工作中,我们经常发现人工渗透可以发现大量扫描器无法发现的漏洞,排除扫描器本来就难以支持的业务逻辑漏洞,即使是常见的XSS和SQL注入漏洞也会有不少遗漏 [1] 。对比人工渗透和扫描器的扫描过程,主要差异点在于,安全工程师通过学习Web漏洞的原理,根据以往的经验,结合具体网站的实际情况展开渗透测试,人工渗透具有很强的灵活性,不像扫描器只会死板地照套模板规则。智能扫描器就可以学习人工渗透过程,如图12-2所示。 

《Web安全之深度学习实战》笔记:第十二章 智能扫描器(1) XSS攻击载荷_第2张图片

二、数据集

        本节将使用常见的XSS攻击载荷数据集,数据集的获取方法是使用常见的Web扫描器对我们的靶场进行扫描,搜集扫描日志,提取XSS的攻击载荷,然后去重即可。

xss_data_file="../data/aiscanner/xss.txt"

三、模型构建

def generator_xss():
    global char_idx
    global xss_data_file
    global maxlen


    if os.path.isfile(char_idx_file):
        print('Loading previous xxs_char_idx')
        char_idx = pickle.load(open(char_idx_file, 'rb'))


    X, Y, char_idx = \
        textfile_to_semi_redundant_sequences(xss_data_file, seq_maxlen=maxlen, redun_step=3,
                                             pre_defined_char_idx=char_idx)


    #pickle.dump(char_idx, open(char_idx_file, 'wb'))

    g = tflearn.input_data([None, maxlen, len(char_idx)])
    g = tflearn.lstm(g, 32, return_seq=True)
    g = tflearn.dropout(g, 0.1)
    g = tflearn.lstm(g, 32, return_seq=True)
    g = tflearn.dropout(g, 0.1)
    g = tflearn.lstm(g, 32)
    g = tflearn.dropout(g, 0.1)
    g = tflearn.fully_connected(g, len(char_idx), activation='softmax')
    g = tflearn.regression(g, optimizer='adam', loss='categorical_crossentropy',
                           learning_rate=0.001)

    m = tflearn.SequenceGenerator(g, dictionary=char_idx,
                                  seq_maxlen=maxlen,
                                  clip_gradients=5.0,
                                  checkpoint_path='chkpoint/model_scanner_poc')

    seed='"/>
                    
                    

你可能感兴趣的:(Web安全之深度学习实战,web安全,xss,深度学习,人工智能,rnn)