渗透测试基本原理:依据渗透策略生成攻击向量,提交给Web服务器,然后根据Web服务器返回的网页来判断相应的检测点是否存在XSS漏洞
一.渗透策略
渗透策略规定了向Web服务器提交的内容,并根据Web服务器的返回信息来决定下一步的提交方案
流程:
二.合法字符串测试
Web服务器对检测点所提交的内容做不同的处理,并返回不同的网页,根据对返回网页的分析,排除掉不可能存在XSS漏洞的检测点,从而提高检测效率
三.攻击向量测试
模拟浏览器提交表单的过程向检测点注入攻击向量。根据action、method、type、name、value等值构造HTTP请求报文,并提交给Web应用程序,渗透测试主要采用POST方法来构造HTTP请求报文
攻击向量主要根据XSS漏洞定位字符串来生成,对于返回网页使用正则表达式与攻击向量进行匹配,如果返回的网页中包含攻击向量,则说明相应的网页中存在XSS漏洞
流程:
(1)根据检测点的type、name值结合渗透策略构造攻击向量,在提交字段中注入攻击向量
(2)根据method方法构造HTTP请求报文,并提交给Web服务器
(3)接收Web服务器返回的响应网页,分析返回的网页内容。根据所提交的攻击向量,与Web服务器返回的网页进行匹配,确定对应的网页是否存在XSS漏洞
(4)在渗透测试过程中,如果发生URL重定向,则继续对重定向的URL进行请求,并在请求时带有会话状态
四.会话保持
会话:用户在一定时间内发出的一系列请求和Web服务器返回的响应
HTTP协议是一种无状态的协议,两个HTTP请求/响应之间相互独立,因此在会话的过程中需保持会话状态,以便让Web服务器对不同的会话进行区分
保持会话状态:保存Web服务器返回的Cookie信息,再次请求时将相应的Cookie信息添加到HTTP请求头中
检测过程中,需要与Web服务器进行多次交互,交互过程中需要保持会话状态,否则在访问网页时,Web服务器会拒绝访问或者重定向网页
五.重定向跟踪
URL重定向:当用户浏览某个URL时,Web服务器将其重定向到另一个URL
常见的重定向:永久重定向、暂时重定向
在渗透测试过程中,所遇到的重定向一般为暂时重定向,主要存在于一些网页的动态跳转,动态网页会根据会话状态将客户重定向到相应的目标网页
发生重定向时,Web服务器发出“HTTP/1.1 302 Moved Temporarily”响应消息,并在HTTP响应中含有“Location:目标URL”的头信息来指出客户端下一步应该访问的URL
客户端接收到重定向消息时,保存重定向的URL,并在请求时附带会话状态