笔记内容参考安全牛课堂苑房弘老师的Kali Linux渗透测试教程
文章目录
扫描工具1.HTTrack2.Nikto3.Vega4.OWASP ZAP5.Burp Suite6.AWVS7.AppScanWEB攻击面
访问网络服务基本架构如图1所示:
图1 网络服务访问架构
WEB渗透途径涵盖了每一层内容
BrowserNetworkWEB ServerWEB ApplicationApp ServerDatabase
扫描工具
主要介绍针对WEB Server、WEB Application层面的漏洞扫描工具,注意与Nessus、OpenVAS等侧重于操作系统层面的扫描工具不同。自动化的扫描工具只能发现技术层面的漏洞,不能发现业务逻辑层面的漏洞
1.HTTrack
开源的跨平台网站克隆工具,用于离线存储网络镜像进行扫描探测,避免与目标网站大量交互。向导式交互界面,支持代理功能。
2.Nikto
Perl语言开发的开源WEB安全扫描器,针对软件版本、存在安全隐患的文件、服务器配置漏洞以及WEB应用进行扫描探测,主要扫描WEB Server层面的安全隐患。基本使用:
git clone /sullo/nikto.git# 通过git进行升级nikto -list-plugins# 列出nikto插件,对应扫描的内容nikto -host http://10.10.11.128/dvwanikto -host 192.168.1.1 -ssl -port 443,8443,995# 可以通过url或host:port形式指定扫描目标# 扫描目标可以是网站主页或子站# 支持ssl扫描nikto -host host.txt# host.txt中为多个扫描目标,每个目标占一行nmap -p80 192.168.1.0/24 -oG - | nikto -host -# 将nmap扫描结果输出给nikto扫描nikto -host -useproxy http://localhost:8087 # 指定代理服务器,提高扫描隐蔽性nikto -host http://10.10.11.128/dvwa -evasion 157# -evasion:指定IDS绕过技术,有8种可供选择
在扫描过程中可以交互式回显信息:
Space:report current scan statusv:verbose mode on/offd:debug mode on/offe:error reporting on/offp:progress reporting on/offr:redirect display on/offc:cookie display on/offa:auth display on/offq:quitN:next hostP:Pause
可以通过配置文件/etc/nikto.conf
设置cookies,注意修改其中的USERAGNET
,增加扫描行为的隐蔽性。
注意:nikto不能提供基于表单的身份验证,身份验证只能通过cookies的形式,在/etc/nikto.conf
中修改STATIC-COOKIE
的值。
3.Vega
JAVA语言开发的开源图形化扫描工具,主要扫描WEB Application层面的安全隐患,分为扫描模式(Scanner)和代理模式(Proxy)。
图2 Vega配置界面
在Window->Preferences
中配置Proxy和Scanner参数,注意General
中的代理是外部代理,Proxy
中代理是Vega自身代理。
(1)爬站扫描
① 首先进入Proxy模式进行人工爬站,所有的链接、提交页面都要浏览,浏览器设置好Vega代理,开启扫描模块,人工访问目标站点的每一个链接,此时Vega会扫描、分析经由自身的流量,爬取目标站点网页并分析安全漏洞;
图3 Vega Proxy模式扫描
② 然后进入Scanner模式,需要登录访问的网站要配置身份信息Identity,macro认证信息可以通过request请求添加,注意扫描时定义好scope,否则Scanner会爬取页面中所有的链接,点击开始后Scanner就会根据字典和已爬取的网页进行进一步爬取,并逐一扫描分析安全漏洞。
综合Proxy模式和Scanner模式扫描的结果进行分析。
(2)流量截获
在Proxy模式下,Vega可以通过Intercept
进行流量截断、篡改,通过Intereptor Options
对Request和Response流量配置截流规则。
4.OWASP ZAP
JAVA语言开发的开源WEB Application图形化集成渗透测试和漏洞挖掘工具,主要扫描WEB Application层面的安全隐患,具有截断代理、主被动扫描、暴力破解、Fuzz等功能。
开启时可以选择将当前session保存在指定文件中,方便下次打开时查看爬网结果。ZAP开启后首先进行add-ons升级,add-ons分为:Realease(发行版,稳定性好,准确率高)、Beta(基本版,性能待优化)、Alpha(开发版,性能没有保证),Installed为已安装,Marketplace为未安装。
图4 ZAP运行界面
标准的扫描工作流程为:
设置代理 -> 手动爬网(被动扫描)-> 自动爬网(主动扫描)
(1)设置代理
ZAP默认开启代理功能,HTTPS代理需要在浏览器中添加OWASP根证书且设置为信任
图5 OWASP根证书
(2)手动爬网(被动扫描)
配置扫描范围
ZAP扫描范围概念为Context(上下文),可以定义不同的Context,每个Context包含不同的站点,Scope为扫描显示的站点,可以包含不同的Context
配置登录身份
在Session Properties
选择相应会话的身份验证,一般选择手动身份验证,即通过手动爬网自动记录登录信息
配置HTTP Session
通过Set as Active
选择不同的HTTP Sessions作为登录身份,而无需再浏览器中修改配置,其中Session中没有的关键字可以在Options->HTTP Sessions
中添加
配置扫描策略、规则
ZAP扫描模式分为Safe、Protected、Standard、Attack,扫描的危险性依次递增;在工具栏Scan Strategy
定制扫描策略,可以配置不同的警报阈值和攻击强度,扫描策略应用于主动扫描;在Options中配置主被动扫描规则,选择阈值、质量、范围等参数。
手动爬网(被动扫描)
浏览器设置好代理后,手动访问目标网站,所有的链接、提交页面都要浏览,ZAP会记录人工爬网站点,且根据设置的策略、规则进行被动扫描。
(3)自动爬网(主动扫描)
在Quick Start中输入目标URL,开始Attack,或者在已爬站点上右键->攻击->主动扫描
,选择扫描策略进行主动扫描。
图6 配置HTTP Sessions
Fuzz/暴力破解
在工具栏选择工具->Fuzz
,或者在已爬站点上右键->攻击->Fuzz
,选中要Fuzz的部分,输入自定义字典,类型为字符串、文件、File Fuzzers等,在Kali中已默认安装常见WEB Fuzz文件(eg:/usr/share/wfuzz/wordlist/fuzzdb/),开始Fuzz匹配。暴力破解即将post表单中的password部分进行Fuzz,根据返回码和size进行判断是否登录成功。
图7 Fuzz匹配
5.Burp Suite
JAVA语言开发的统一WEB安全集成工具,WEB安全工具中的瑞士军刀,分为Enterprise、Professional、Community三个版本,其中Community为免费版本,但是没有主动扫描的功能。
注:Burp运行需要与JDK版本对应,不然可能导致打不开情况,这里使用的Burp版本为Professional v1.7.37
,JDK版本为jdk-8u201
(1)Proxy
Burp最为优异的功能,可以通过代理高效截获、分析、过滤、修改HTTP流量。① Invisible
当客户端不支持代理时,可以启动Invisible功能,通过DNS重定向将客户端请求发往Burp,此时为了将流量正常转发,需要在Project options->Hostname Resolution
添加正确的域名和IP,这样流量会根据Burp设置的域名对应IP进行转发。
注意:
正常情况下,支持代理的浏览器HTTP Request的url如:
GET /foo.php HTTP/1.1
Host:
不支持代理的浏览器发出的HTTP Request如:
GET /foo.php HTTP/1.1
Host:
Burp Proxy分析正常HTTP Request不会理会Host头,而Invisible模式下会将Host与GET后的url拼接成完整url,但如果不支持代理功能的客户端请求没有严格按照HTTP规范,HTTP请求头没有Host,GET后的url只是相对路径,此时可以在Request handling
中配置Redirect to host
。
图8 Proxy Invisible配置
② CA根证书
作为HTTPS代理时需要在浏览器中导入Burp的CA根证书,可以在Proxy->Options
中将证书导出,也可以通过浏览器访问http://burp
将证书导出,然后添加至浏览器证书并选择信任。
③ Intercept
默认只截断HTTP Request,HTTP Response截断需要在Options
中配置,所有访问的流量都会在HTTP history
保存,在Filter
处右键对内容进行筛选,同时可以对Request和Response头以及内容进行修改和替换:
图9 HTTP Request/Response头修改和替换
图10 HTTP Response修改
客户端发出的Request和服务器返回的Response都是可以被代理截获修改的,任何来自客户端浏览器的验证都是不可靠的。
(2)Target
所有访问的url会在Target中记录,黑色字体为已经访问过的,灰色为页面分析得到的url,但没有访问。
① Scope
可以选择目标网站添加至scope,添加至Include
和Exclude
,一般导致登出logout的请求页面不能访问。
② Site map
显示所有爬取以及分析出的url,在Filter
处右键进行选择,如图11所示,其中Show only commented items
和Show only highlighted items
仅显示有comment和highlight的内容,这些都是在分析时对某个HTTP Request或Response做的标记,Filter by search term
可以很方便查找特定的Request/Response内容。
图11 Site map Filter
注:在Proxy->HTTP history
和Target->Site map
中对流量做的标记和Filter过滤配置是相互独立的,互不影响。
(3)Spider
Burp已自动开启Passive Spidering
,所有经过Burp代理的流量都会被Burp爬取分析,可以通过Control
界面开启Spider
,或者在Target->Site map
中选择站点右键->Spider this branch
。在Options
中进行身份验证信息配置,如下图所示:
图12 Spider验证信息配置
可以对不同登录身份所爬取的页面进行页面级比较,首先选择Burp->Save copy of project
保存当前项目,然后以另一身份新建项目,选择目标站点右键选择Compare site maps
,选择要比较的两个项目和站点内容进行比较,可以同步选择HTTP Request/Response,如下图所示:
图13 Compare site maps
(4)Scanner
被动扫描默认开启,主动扫描在目标站点右键选择Active scan
,在Options
中配置扫描项、扫描速度、准确度等内容,开启主动扫描后Scan queue
显示扫描进度。
(5)Intruder
利用Payload(字典)进行Fuzz攻击(暴力破解),在目标HTTP Request/Response右键选择Send to Intruder
,需要Fuzz的变量位置用$Variable$
表示,Payload包括Simple list
、Runtime file
、Numbers
、Dates
、Brute force
等多种类型,攻击类型分为四种:
(说明:List_1代表字典1,List_2代表字典2,Item_1代表字典中的第一项内容,Item_2代表字典中的第二项内容)
Sniper:利用1个Payload针对每一个变量进行Fuzz,期间其他变量保持不变
Battering ram:利用1个Payload对所有变量同步进行Fuzz
Pitchfork:利用多个Payload对多个变量同步进行Fuzz,注意Fuzz数量与内容最少的Payload相同
Cluster bomb:利用所有的Payload对多个变量交叉Fuzz,Fuzz数量是所有Payload内容的组合项
可以在Payload->Payload Processing
中对Payload内容进行添加前缀、后缀、大小写切换等处理,攻击结果除了根据Length和HTTP返回码判断,还可以根据Options->Grep-Match
抓取回包中匹配的payload进行判断:
图14 Grep-Match判断Intruder攻击结果
(.01补充)
暴破网站登录界面时不要一上来就无脑开干,事先要通过基本抓包分析网站验证流程,对于一些特殊情况的响应界面,应配置相应选项,不然即使口令正确也不能返回正确结果,一些特殊情况总结如下:
情况一:302跳转的网站
在Options->Redirections
配置选项中,Follow redirections
有四个选项:
Never:不会跟随重定向On-site only:只会跟随重定向到同源站点URL,同源即HTTP请求中目标主机、端口和协议相同In-scope only:只会跟随重定向到指定范围内的URLAlways:总是跟随重定向,可以到任何URL
对于登录时返回302跳转的网站,在暴破时Intruder配置选项中Follow redirections
应选择Always
,如果需要跟踪提交网站返回的cookie信息,还需要勾选Process cookies in redirections
,如下所示:
情况二:Token验证的网站
Token验证机制能够有效防止CSRF,但是无法防范暴力破解。对于采用Token验证机制,且每次登录都更新Token的网站,可以利用Burp递归抓取回包中更新的Token进行暴破,具体如下:
以DVWA中Brute Force作为实验平台,安全等级选择High。首先是分析网站的登录验证机制,发现在请求URL中带有Token字段,结合Repeater
发包分析,发现每次请求中携带的合法Token必须从上一次回包的Body中获取。
Intruder->Positions
中配置,payload中password和user_token字段同步变化,暴破模式选择Pitchfork
,如下所示:
Intruder->Options
中配置,Request Engine
暴破线程设置为1,因为请求中必须携带上次返回的Token,访问过一次Token即失效:
Intruder->Payloads
中配置,Payload set 1
选择Simple list
,Payload set 2
选择Recursive grep
,在Payload Options [Recursive grep]
中设置需要递归抓取的Token的规则。
抓取规则可在Intruder->Options
中Grep-Extract
自动化生成,点击Add
添加规则,选择Fetch response
,然后在response中点选user_token字段,规则会自动生成,如下所示:
在Payload Options [Recursive grep]
中填入自动化生成的规则,同时将Token的初始值填入Initial payload for first request
:
最后在Options->Redirections
中,Follow redirections
选择Always
,开始暴破,根据回包Length
可以判断是否暴破成功:
(6)Repeater
选择HTTP Request/Response编辑后进行重放,可以修改Request
的提交方法、编码方式等,对Response
可以通过不同形式查看内容。
在HTTP Request界面右键选择Engagement tools->Generate CSRF PoC
可以将Request转换为CSRF PoC,保存为HTML文档方便后续漏洞利用。
(7)Sequencer
判断伪随机序列算法的质量,选中包含Set-Cookie
头的HTTP Request/Response,右键选择Send to Sequencer
,选中随机生成的Cookies值,然后选择Start live capture
,当捕获的内容足够多时,进行分析Analyze now
,生成报告,查看Cookie随机生成算法的质量。
图15 Sequencer随机算法分析
(8)Decoder
编码、解码模块,支持Base64、ASCII、Hex、Binary、Octal、URL、HTML、Gzip等编码方式,以及SHA、SHA-256、SHA-512、MD5等HASH算法。
(9)Comparer
对HTTP Request/Response进行字节级比较,在比较内容上右键选择Sent to comparer
,在Comparer不同窗口中可以同步查看区别。
(10)Extender
扩展功能,BApp Store
中包含了可以扩展安装的插件,以及每个插件的评级、受欢迎程度、更新时间等信息。
6.AWVS
Acunetix WEB Vulnerability Scanner,商业版WEB扫描器,AWVS11.0以后采用B/S架构,支持不同平台,具有AcuSensor灰盒测试、强大的报告生成功能等优势,阉割掉了HTTP Request/Response截获、转发、分析等功能,更加专注于漏洞扫描和管理,操作界面更加简介。
首先选择Target->Add Target
添加扫描目标URL,在General、Crawl、HTTP、Advanced中配置相应信息,然后选择Scan,配置扫描和报告类型后开启扫描。Scans
和Reports
中生成相应扫描项和报告项。
图16 配置Targets
在Vulnerabilities
查看扫描的所有漏洞,点击具体漏洞后查看漏洞检测方法、漏洞编号、修复建议等详细信息。
图16 查看Vulnerabilities
7.AppScan
商业版WEB扫描器,具有Glass Box灰盒测试、强大的报告生成功能等优势,扫描过程分为探索(爬网)阶段和测试(扫描)阶段,与一般扫描工具不同的是,AppScan除了可以将自身作为代理服务器,而且可以在自身窗口中集成浏览器功能直接进行爬网。
(1)探索扫描
按照 手动探索->继续仅探索->完全扫描 的顺序完成探索扫描过程
首先新建项目,选择文件->新建
,选择针对WEB Application或者WEB Service进行扫描,可以选择将AppScan作为代理,这里要对Metasploitable主机上的DVWA应用进行扫描,选在扫描Web应用程序
,填写url。
图17 新建项目向导
然后选择登录方法,推荐使用记录的方式进行登录,点击记录
按钮,AppScan会打开集成的IE或者Chrome接口,访问上一步填写的URL,用户只需要正常登录,AppScan就会将登录过程记录下来供之后扫描、爬网登录使用。
图18 记录身份验证过程
随着向导选择扫描配置,也可以在之后的扫描界面菜单栏选择配置
进行详细的配置,最后建议选择使用手动探索启动
(AppScan中探索=爬网,测试=扫描)。
手动探索启动后,AppScan会开启浏览器窗口对目标进行登陆访问,人工点击每个链接,提交所有的url,然后在扫描
中选择继续仅探索
,自动爬取所有的页面后再开启完全扫描
,如果左下角已爬取的页面和需要爬取的页面数目不一致,则需要将探索-扫描
的步骤一直持续,直到将所有界面都爬取且扫描,之后扫描
的按钮会显示灰色。
图19 AppScan扫描界面
(2)漏洞分析
对于检测出的每个漏洞,AppScan在问题
中记录了有关漏洞信息、修复建议、测试方法等非常详细的说明,对安全测试人员非常有帮助,甚至在任务
中按照优先级制定好了修复漏洞的一系列任务,帮助安全测试人员修复漏洞。
在数据
中记录了HTTP Request/Response的参数、Cookie等信息,针对具体内容右键选择手动测试
,可以对HTTP Request/Response进行编辑重放进行测试。
(3)报告生成
AppScan同样具有强大的报告生成功能,支持不同行业标准、不同合规性、不同模板内容的报告导出功能,同时其具有Glass Box灰盒测试功能,可以帮助更加精准地扫描目标。