当前位置:   article > 正文

Kali Linux渗透测试——WEB渗透(一)_kali web渗透教程

kali web渗透教程

笔记内容参考安全牛课堂苑房弘老师的Kali Linux渗透测试教程

WEB攻击面

访问网络服务基本架构如图1所示:

网络服务访问架构

图1 网络服务访问架构

WEB渗透途径涵盖了每一层内容

  • Browser
  • Network
  • WEB Server
  • WEB Application
  • App Server
  • Database

扫描工具

主要介绍针对WEB Server、WEB Application层面的漏洞扫描工具,注意与Nessus、OpenVAS等侧重于操作系统层面的扫描工具不同。自动化的扫描工具只能发现技术层面的漏洞,不能发现业务逻辑层面的漏洞

1.HTTrack

开源的跨平台网站克隆工具,用于离线存储网络镜像进行扫描探测,避免与目标网站大量交互。向导式交互界面,支持代理功能。

2.Nikto

Perl语言开发的开源WEB安全扫描器,针对软件版本、存在安全隐患的文件、服务器配置漏洞以及WEB应用进行扫描探测,主要扫描WEB Server层面的安全隐患。基本使用:

git clone https://github.com/sullo/nikto.git
# 通过git进行升级

nikto -list-plugins
# 列出nikto插件,对应扫描的内容

nikto -host http://10.10.11.128/dvwa
nikto -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 baidu.com -useproxy http://localhost:8087 
# 指定代理服务器,提高扫描隐蔽性

nikto -host http://10.10.11.128/dvwa -evasion 157
# -evasion:指定IDS绕过技术,有8种可供选择
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

在扫描过程中可以交互式回显信息:

Space:report current scan status

v:verbose mode on/off

d:debug mode on/off

e:error reporting on/off

p:progress reporting on/off

r:redirect display on/off

c:cookie display on/off

a:auth display on/off

q:quit

N:next host

P:Pause
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

可以通过配置文件/etc/nikto.conf设置cookies,注意修改其中的USERAGNET,增加扫描行为的隐蔽性。

注意:nikto不能提供基于表单的身份验证,身份验证只能通过cookies的形式,在/etc/nikto.conf中修改STATIC-COOKIE的值。

3.Vega

JAVA语言开发的开源图形化扫描工具,主要扫描WEB Application层面的安全隐患,分为扫描模式(Scanner)和代理模式(Proxy)。

Vega配置界面

图2 Vega配置界面

Window->Preferences中配置Proxy和Scanner参数,注意General中的代理是外部代理,Proxy中代理是Vega自身代理。

(1)爬站扫描

① 首先进入Proxy模式进行人工爬站,所有的链接、提交页面都要浏览,浏览器设置好Vega代理,开启扫描模块,人工访问目标站点的每一个链接,此时Vega会扫描、分析经由自身的流量,爬取目标站点网页并分析安全漏洞;

Vega Proxy模式扫描

图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根证书且设置为信任

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 http://example.org/foo.php HTTP/1.1
Host: example.org
不支持代理的浏览器发出的HTTP Request如:
GET /foo.php HTTP/1.1
Host: example.org

Burp Proxy分析正常HTTP Request不会理会Host头,而Invisible模式下会将Host与GET后的url拼接成完整url,但如果不支持代理功能的客户端请求没有严格按照HTTP规范,HTTP请求头没有Host,GET后的url只是相对路径,此时可以在Request handling中配置Redirect to host

Invisible proxy

图8 Proxy Invisible配置

② CA根证书
作为HTTPS代理时需要在浏览器中导入Burp的CA根证书,可以在Proxy->Options中将证书导出,也可以通过浏览器访问http://burp将证书导出,然后添加至浏览器证书并选择信任。

③ Intercept
默认只截断HTTP Request,HTTP Response截断需要在Options中配置,所有访问的流量都会在HTTP history保存,在Filter处右键对内容进行筛选,同时可以对Request和Response头以及内容进行修改和替换:

Request/Response头修改和替换

图9 HTTP Request/Response头修改和替换


Response Modification

图10 HTTP Response修改

客户端发出的Request和服务器返回的Response都是可以被代理截获修改的,任何来自客户端浏览器的验证都是不可靠的。

(2)Target

所有访问的url会在Target中记录,黑色字体为已经访问过的,灰色为页面分析得到的url,但没有访问。
① Scope
可以选择目标网站添加至scope,添加至IncludeExclude,一般导致登出logout的请求页面不能访问。

② Site map
显示所有爬取以及分析出的url,在Filter处右键进行选择,如图11所示,其中Show only commented itemsShow only highlighted items仅显示有comment和highlight的内容,这些都是在分析时对某个HTTP Request或Response做的标记,Filter by search term可以很方便查找特定的Request/Response内容。

Site map Filter

图11 Site map Filter

注:在Proxy->HTTP historyTarget->Site map中对流量做的标记和Filter过滤配置是相互独立的,互不影响。

(3)Spider

Burp已自动开启Passive Spidering,所有经过Burp代理的流量都会被Burp爬取分析,可以通过Control界面开启Spider,或者在Target->Site map中选择站点右键->Spider this branch。在Options中进行身份验证信息配置,如下图所示:
Spider验证信息配置

图12 Spider验证信息配置

可以对不同登录身份所爬取的页面进行页面级比较,首先选择Burp->Save copy of project保存当前项目,然后以另一身份新建项目,选择目标站点右键选择Compare site maps,选择要比较的两个项目和站点内容进行比较,可以同步选择HTTP Request/Response,如下图所示:
Compare site maps

图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 listRuntime fileNumbersDatesBrute force等多种类型,攻击类型分为四种:

(说明:List_1代表字典1,List_2代表字典2,Item_1代表字典中的第一项内容,Item_2代表字典中的第二项内容)

  • Sniper:利用1个Payload针对每一个变量进行Fuzz,期间其他变量保持不变
    Sniper
  • Battering ram:利用1个Payload对所有变量同步进行Fuzz
    Battering ram
  • Pitchfork:利用多个Payload对多个变量同步进行Fuzz,注意Fuzz数量与内容最少的Payload相同
    Pitchfork
  • Cluster bomb:利用所有的Payload对多个变量交叉Fuzz,Fuzz数量是所有Payload内容的组合项
    Cluster bomb

可以在Payload->Payload Processing中对Payload内容进行添加前缀、后缀、大小写切换等处理,攻击结果除了根据Length和HTTP返回码判断,还可以根据Options->Grep-Match抓取回包中匹配的payload进行判断:

在这里插入图片描述

图14 Grep-Match判断Intruder攻击结果


(2021.01补充)

暴破网站登录界面时不要一上来就无脑开干,事先要通过基本抓包分析网站验证流程,对于一些特殊情况的响应界面,应配置相应选项,不然即使口令正确也不能返回正确结果,一些特殊情况总结如下:

情况一:302跳转的网站

Options->Redirections配置选项中,Follow redirections有四个选项:

  • Never:不会跟随重定向
  • On-site only:只会跟随重定向到同源站点URL,同源即HTTP请求中目标主机、端口和协议相同
  • In-scope only:只会跟随重定向到指定范围内的URL
  • Always:总是跟随重定向,可以到任何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 listPayload set 2选择Recursive grep,在Payload Options [Recursive grep]中设置需要递归抓取的Token的规则。

抓取规则可在Intruder->OptionsGrep-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随机生成算法的质量。
Sequencer随机算法分析

图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,配置扫描和报告类型后开启扫描。ScansReports中生成相应扫描项和报告项。
配置Targets

图16 配置Targets

Vulnerabilities查看扫描的所有漏洞,点击具体漏洞后查看漏洞检测方法、漏洞编号、修复建议等详细信息。
查看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,然后在扫描中选择继续仅探索,自动爬取所有的页面后再开启完全扫描,如果左下角已爬取的页面和需要爬取的页面数目不一致,则需要将探索-扫描的步骤一直持续,直到将所有界面都爬取且扫描,之后扫描的按钮会显示灰色。

AppScan扫描界面

图19 AppScan扫描界面

(2)漏洞分析

对于检测出的每个漏洞,AppScan在问题中记录了有关漏洞信息、修复建议、测试方法等非常详细的说明,对安全测试人员非常有帮助,甚至在任务中按照优先级制定好了修复漏洞的一系列任务,帮助安全测试人员修复漏洞。

数据中记录了HTTP Request/Response的参数、Cookie等信息,针对具体内容右键选择手动测试,可以对HTTP Request/Response进行编辑重放进行测试。

(3)报告生成

AppScan同样具有强大的报告生成功能,支持不同行业标准、不同合规性、不同模板内容的报告导出功能,同时其具有Glass Box灰盒测试功能,可以帮助更加精准地扫描目标。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/251626
推荐阅读
相关标签
  

闽ICP备14008679号