目录
四、使用BurpSuite的Intruder 模块发现敏感目录
一、使用DirBuster寻找敏感文件和目录
1.1 实验概述
DirBuster, buster英[ˈbʌstə(r)] n. 破坏者;
程序DirBuster使用Java编写。所有使用Java语言编写的程序要想正常使用,基本都需要安装JDK(JDK, Java Development Kit 实际上需要用的是JRE, Java Runtime Environment,但是JDK包含了JRE),并且要配置环境变量。
DirBuster是一个多线程的应用程序,设计用于暴力破解Web 应用服务器上的目录名和文件名的工具。
更加通俗的说法是:DirBuster就是用于探测web目录结构和隐藏的敏感文件。
将在本节中使用它来搜索特定的文件和目录列表。 要使用一个文本文件,其中包含要用DirBuster来查找的文件列表。创建一个包含以下内容的文本文件dir_dictionary.txt
1.2实验内容
DirBuster是一款使用Java语言写的应用程序,它可以从Kali的主菜单或在终端使用dirbuster命令来使用。以下是使用它所需的步骤:
1.找到Applications |03-Web Application Analysis / web Crawlers & DirectoryBruteforcing lDirbuster 。(注:按照这个路径在Kali可能无法找到,但是你可以在终端下输入dirbuster命令打开这个软件)
2.在 DirBuster窗口中,将目标URL设置为靶机 http://192.168.123.12/
3.将线程数设置为20,以获得不错的测试速度。
4.选择基于列表的暴力破解,然后单击“浏览”。
5.在浏览窗口中,选择我们刚刚创建的文件(dir_dictionary.txt)
6.取消选中Be Recursive(递归)选项。
7.对于这个配置,我们将其余选项保留为默认值。
8.点击Start(开始)。
9.如果我们转到结果选项卡,我们将看到 DirBuster在我们的字典中找到了至少两个文件夹:cgi-bin和 gtd-php。响应码200表示文件或目录存在并且可以被读取。Phpmyadmin是一个基于Web的mysql数据库,查找一个带有tis 名称的目录告诉我们服务器中有一个数据库管理系统
( DBMS),它可能包含有关应用程序及其用户的相关信息。
10.搜索结果生成一份报告(Report),并将报告文件提交。
1.3实验总结
使用BurpSuite作为代理捕捉请求来改变Content-Type报头,从而绕过了客户端应用程序的验证机制。 Content-Type是客户机(尤其是POST和PUT请求中)设置的标准HTTP头文件,用于向服务器指示它接收的数据类型。很多时候,开发者通过判断content-type过滤危险文件。正如刚才看到的,在防止用户向服务器上传恶意文件方面,这种保护措施是远远不够的。
拦截和修改请求包是web应用渗透测试的一个非常重要的方面,它不仅可以绕过一些客户端验证(就像在本示例中所作的那样),还可以研究发送了哪些信息,并且尝试理解应用程序的内部工作方式。为了便于理解,还可能需要添加、删除或替换一些值。
二、使用ZAP寻找敏感文件和目录
2.1实验概述
oWASPZed Attack Proxy(ZAP)是一种非常通用的web安全测试工具。它具有代理、被动和主动漏洞扫描器、模糊器、爬行器、HTTP请求发送器和其他一些有趣的特性。
2.2实验准备
为了使这个程序工作,我们需要使用 ZAP作为我们的Web 浏览器的代理。
1.从Kali Linux菜单启动OWASP ZAP,然后选择Applications | 03 - Web Application Analysis owasp-zap或者打开终端并输入owasp-zap命令我们需要使用ZAP作为我们的Web浏览器的代理。
2.接下来,我们将更改ZAP的代理设置。默认情况下,它使用端口8080,这是可以的,但是如果我们让ZAP和Burp Suite同时运行,则会干扰 Burp Suite等其他代理。在ZAP中,转到Toolsl Options | Local Proxies 并将端口更改为8088
3.现在,在 Firefox中,转到主菜单并导航到 Preferences | Advanced / Network;在Connection中,单击Settings.
4.选择手动代理配置,并将HTTP代理设置为127.0.0.1,将端口设置为8088。选中该选项以对所有协议使用相同的代理,然后单击OK:
5.我们还可以使用FoxyProxy插件设置多个代理设置,切换他们只需点击一下:
(注:各个工具使用不同代理端口,避免冲突。zap代理端口为8088,burp代理端口为8080,WebSca代理端口为8008)
2.3实验内容
现在我们已经配置了浏览器和代理,我们准备扫描服务器的存在的文件夹,使用以下步骤:
1.正确配置代理后,浏览到 http://192.168.123.130/WackoPicko/
2.我们将看到 ZAP 通过显示我们刚访问过的主机的树结构来对此操作做出反应。
3.现在在ZAP的左上角面板(“站点”选项卡)中在http://192.1685611网站内右键单击然后,在上下文菜单中,导航到 Attack (攻击) 强制浏览目录(和子目录),WackoPicko文件夹。这将进行递归扫描:
4.如果在底部面板中的 list(列表)菜单没有选择列表文件,选择列表文件后再进行上述扫描。我们将看到Forced Browse(强制浏览)选项卡上显示的扫描进度及其结果:
2.4实验总结
代理是一个应用程序,充当客户端和服务器之间的中介,或者为一个服务器组提供不同的服务。客户端从代理请求服务,代理能够将请求转发到适当的服务器并获取来自客户端的回复。
当我们将浏览器使用ZAP作为代理时,并且ZAР正在监听时,它不会直接发送请求到我们想要浏览网页的服务器,而是发送到我们定义的地址。然后ZAР将请求转发给服务器,但我们发送的是没有注册和分析过的信息。
ZAP的强制浏览与DirBuster的工作方式相同,我们需要配置相应的字典,并向服务器发送请求,就像它试图浏览列表中的文件一样。如果文件存在,服务器将相应地做出响应,如果它们不存在或者当前用户无法访问,则服务器将返回错误。
三、使用BurpSuite查看和修改请求
3.1实验概述
Burp Suite套件不仅是一个简单的web代理,它还是一个功能齐全的 web应用程序测试工具包。它有proxy(代理)、request repeatcr(请求中继)、fuzzcr(模糊测试)、rcqucstautomation(自动化请求)、string encoderand decoder(字符串编解码)、vulnerabilityscanners(漏洞扫描,在专业版)、plugins to ctend its functionality (插件扩展)和其他非常有用的功能。
3.2实验内容
1.浏览OWASP板块,并练习 Upload 2
2.请求拦截功能在 Burp Suite 中默认启用,如果没有拦截,转到Burp Suite | proxy | Intercepton,点击下按钮,拦截打开:
3.这里我们有一个文件上传表单,应该只能上传图片。我们来试着上传一个。点击浏览并选择任何图像文件(PNGJPG或BMP):
4.点击Open后,再点Upload,验证文件上传
5.现在我们看看如果我们上传不同类型的文件会发生什么,比如说,一个HTML 文件:
6.看起来,正如练习描述中提到的,服务器会验证上传的文件类型。为了绕过这个限制我们在BurpSuite中启用请求拦截。
7.使用浏览器对 HTML文件再一次提交。
8.Burp将捕获到这个请求:
在这里,我们可以看到一个 POST 请求。每个部分的分隔符是一长串破折号 (-)和一个长数字。在第一部分中,我们看到了要上载的文件信息和内容类型。
9.因为服务器只接收图像,我们可以改变 content-type,欺骗服务器这是一个图片:
10.接下来,如果要继续拦截请求,可以单击 Foeward 提交请求,如果不这样做,可以禁用拦截。
11.可以发现上传成功了。如果我们滚动鼠标指针到“here”这里,会看到一个文件链接:
3.3实验总结
在这个小节中,我们使用 BurpSuite作为代理捕捉请求来改变Content-Type报头,从而绕过了客户端应用程序的验证机制。
Content-Typc是客户机(尤其是POST和PUT请求中)设置的标准HTTP头文件,用于向服务器指示它接收的数据类型。很多时候,开发者通过判断content-type过滤危险文件。正如我们刚才看到的,在防止用户向服务器上传恶意文件方面,这种保护措施是远远不够的。
拦截和修改请求包是web应用渗透测试的一个非常重要的方面,它不仅可以绕过一些客户端验证(就像我们在本示例中所作的那样),还可以研究发送了哪些信息,并且尝试理解应用程序的内部工作方式。为了便于理解,我们还可能需要添加、删除或替换一些值。
四、使用BurpSuite的Intruder 模块发现敏感目录
4.1实验概述
ntruder 模块可以将一个请求多次修改并自动重放,它可以根据自带的规则来生成攻击载荷或者自定义攻击载荷列表实现修改 requests 请求并重放。
尽管这并不是intruder 的主要用途,但是我们依然可以开使用它查找那些没有被网站引入但却存在的文件和文件夹,这就像我们前面学习的工具 Dir Buster 和 ZAPsForced Browse
4.2实验内容
假设我们已经给浏览器设置好了代理服务器,并且已经成功地访问了 Wacko Picko(http://192.168.56.11/WackoPicko),参考一下步骤:
1.在Proxy栏目中找到对Wacko Picko根路径的请求包,选中它右键再选择Send tointrudero
2.然后切换到Intruder栏目下的 Positions 选项你会看到很多被S包着的字段并且它们是被高亮显示的,这些字段是Intruder 在每次请求中都会更改的字段单击 Clear 按清空所有被S包裹着的字段。
3.我们在URL的最后一个/后面给它随便添加一个字段,比如说a,然后选中它,并且单击 Add按钮,那么这样就会让这个被选中的字符成为一个修改点,如下图:
4.现在我们切换到Payload 选项下,由于我们在第三步只设置了一个修改点,所以我们只需要根据默认配置生成一个攻击载荷列表即可,将攻击荷的类型设置为 simple list 然后我们入一个外部的攻击列表。
5.现在我们单击 Load 按并选择/usr/share/wordlists/dirb/smalltxt这个文件
6.在我们点击Startattack 按开始服务器发送请求如果你使用的是 Burp Suite的免费版那么你将会看到intruder 的一些警告信息,请选择accept然后攻击就会开始。
7.单击Status 按,状态码就会按照从小到大的顺序展示,请记住:200是存在且可访问的文件或目录的响应代码,重定向为300,错误范围为400和500
4.3实验总结
Intruder 使用我们加载的攻击载荷去换请求中被特殊符号标记的字段然后发送请求。有效的攻击载荷类型如下:
Simple List:可以直接从文件中加内容也可以从贴板粘贴进去或者是直接写入文本框然后添加到列表中。
Runtime File:intruder 会在运行时获取指定文件中的有效攻击载荷,当被加的文件非常大它将不会被完全载入到内存中。Numbers:生成一个以制者进制编码的数列表该列表可以是有的可以是随机的。
Username Generator:入一个以电子邮件构成的列表并在其中提取出可能会用到的用户名。
Bruteforcer:获取一个字符集,然后按照指定长度对它进行所有可能的排列组合。
攻击载荷的类型由 Positions中的类型Payload type来指定,其他类型如下Sniper:将一组攻击荷分别换每一个修改点上,每个换后的值都是不同的。Batteringram:和Sniper 一样,它也使用一组攻击荷但是不同的是它在每一次修改中会把所有修改点都替换成一样的值。
Pitchfork:将多个攻击载荷集中的每一项依次替换不同的修改点,当我们对已知的某些数据进行测试时会发现它很有用,比如对一组用户名和密码进行测试。Cluster bomb:测试多个攻击载荷的所有排列组合。
在攻击结果中我们可以发现一些已知文件的名称与列表中的名称相匹配,还发现一个名为 admin的目录,它可能是负责管理功能的页面,比如添加用户名或者某些内容。
五、使用ZAP代理查看和修改请求
5.1实验概述
OWASP_ZAP与 Burp Suite 类似。它不仅可以拦截流量,还有很多其他的功能,比如我们在前几章中使用过的爬虫、漏洞扫描器、模糊测试和暴力破解等。它还有一个脚本引擎,可以用来自动化的执行或者创建新的功能。
5.2实验内容
启动 ZAP并配置浏览器将其作为代理,然后执行以下步骤:
1.转到靶机VM1中的OWASPBricks并且选择content-4(http://192.168.123.128/owaspbricks/content-4/):
我们可以看到,页面的即时响应是一个错误,表示用户不存在。还显示了 SOL 语句,语句显示应用程序正在将字段(ua)与浏览器发送的用户代理标头字符 (User-Agent)进行比较User-Agent 是浏览器在每个请求头中发送的一条消息,用于向服务器标识自己。这通常包含浏览器的名称和版本、基本操作系统和HTML呈现引擎。
2.由于User-Agent是由览器在发出请求时置的,因此我们无法在应用程序中更改它。我们将使用OWASPZAP来捕获请求,并设置我们希望的任何文本作为用户代理。首先,通过单击工具栏中的绿色圆圈(鼠标移动时变成红色),在代中启用拦截(称为中断)。这将截所有通过代理的请求:
3.启用中断后,转到览器并刷新页面到ZAP,在 Request(请求) Response(响)选项卡旁边将出现一个新的Break(中断)选项卡。
4.在 Break(中断)选项卡中,我们看到浏览器在刷新页面时发出的请求。在这里,我们可以更改请求的任何部分;对于本次练习,我们只更改 User-Agent 值。例如,将其更改为:123456
5.通过点击 Play 图标(蓝色三角形)提交请求。当发出新请求时,这里将再次截断;如果不想拦截请求,请使用红色圆圈按钮来禁用
6.现在我们再次进入浏览器,看看响应
5.3实验总结
在这个小节中,我们使用 ZAP 代理拦截了一个有效的请求并修改了 ua 标头,验证了服务器已经接受我们提供的值。ZAP 起到一个中间人的作用,可以任意修改浏览器提供给服务端的请求。
六、使用ZAP爬虫功能
6.1实验概述
在 web 应用程序中,爬虫(crawler)或爬行器(spider)是一种工具,它可以根据网站中的所有链接自动浏览网站,有时还可以填写和发送表单。这允许我们获得站点中所有引用页面的完整映射,并记录获取这些页面的请求和响应。
6.2实验内容
我们将使用 Bodgelt(http://192.168.123.130/bodgeit/)来说明 ZAP的爬行功能是如何工作的
1.在Sites(站点)选项卡中,打开与测试站点对应的文件夹(本书是 http://192.168.123.128)
2.右键单击得到;bodgeit。
3.从下拉菜单选择Attack(攻击)|Spider(爬行)
4.在Spider(爬行)对话框中,我们可以判断爬行是否递归(在找到的目录中爬行)置起点和其他选项。目前,我们保留所有默认选项,并点击开始扫描(Start Scan)。
5.结果将出现在Spider(爬行)选项卡的底部面板:
6.将Spider(爬行)的结果导出到“3.6zap-bodgeit.csv”文件并提交。
7.如果我们想分析单个文件的请求和响应我们会去 Sites(站点)选项卡打开site文件查看里面的文件和文件夹
6.3实验总结
与其他爬行器一样,ZAP 的爬行功能会跟随它在每一页找到的链接,包括在请求的范围内和它内部的链接。此外,此循“robots.txt和“sitemap.xml”文件中包含的表单响应重定向和 URL,然后存储所有请求和响应以供以后分析和使用。
七、使用Burp爬取网站页面
7.1实验概述
Burp是一个和 zap 具有类似功能的一个具它以特的特点,更容易接的接口而在安全圈倍受欢迎。它的功能不仅仅是爬取页面,但因为这里只介绍信息收集,所以我们只介绍它的爬取功能。
7.2实验内容
代理 burp 后默认会拦截所有请求,想要不拦截请求使浏览器正常访问的话,可以这样禁用它(Proxy Intercept|Intercept is on)。然后按照以下步骤进行:
1.挂好代理后,让浏览器访问 BWAPP(http://192.168.56.11/bWAPP);访问过程中的数据包将被记录在target和proxy选项卡中
2.点击target-site map,然后右键点击 bwapp 文件夹,选择spider this branch
3.点击后会弹出一个警告(是否扫描范围外的网页),点击 yes 后蛛取将会开始
4.在某些时候,爬行器会找到一个注册或登陆的表单,弹出一个对话框,询问如何填写表单字段。可以选择忽略,也可以选择填写。忽略后会继续爬行
5.我们可以在spider 选项卡中检查爬行状态,也可以通过点击 spider is running 来暂停它
6.我们可以在target 选项卡中看到取到的新页面
7.3实验总结
Burp 的爬取形式和其他爬取器差不多,但是使用方法大相径庭。你可以一边浏览网站一边让 burp 爬行,最后会一起收集到设定范围内的爬行队列中。就像和 zap 一样,我们可以在行结果中执行任意操作。如扫描、重放、比较、模糊测试等,还可以在浏览器中重新访问。
八、使用Burp Suite重放请求
8.1实验概述
Repeater 模块在分析 spider 的结果并测试请求参数输入时,非常有用
8.2实验内容
为了学习这个模块,我们将使用 OWASPBricks靶机。以下是所需的步骤
1.开始第一个内容练习(http://192.168.56.11/owaspbricks/content-1/)。
2.在BurpSuite中转到Proxy HTTPhistory,在URL的末尾找到id=0或id=1的GET请求,右键单击
它,然后从菜单中选择Send to Repeater:
3.接着我们切换到 Repeater 选项卡。
4.在Repeater 中,我们可以在左侧看到原始请求。器的响应:接着点击 Go,就可以在右侧收到服务
分析请求和响应,我们可以看到发送参数 (id=1)后,服务器使用该参数查找了具有相同ID的用户,信息显示在了响应的正文中。
5.由此看来,服务器中的此页面需要一个名为 ID的参数,其中数字参数表示用户ID。 让我们看看如果应用程序收到一个字母(如字母“a”而不是一个数字会发生什么:
响应是显示有关数据库(MySQL)的报错:期望的参数类型,文件的内部路径以及代码行导致错误。这些报错信息为攻击者的下一步攻击提供了条件。
6.现在我们看看如果期值是一个表达式,会发生什么。 id 值更为2-1
8.3实验总结
Burp Suite 的 Repeater 允许我们手动测试相HTTP 请的不同输入场,并分析服务器为每个请求提供的响应。在测试漏洞时,这是一个非常有用的功能,可以研究应用程序如何对其给出的各种输入做出反应,并相应地采取措施来识别利用、编程或设计可能存在的弱点
九、WebScarab的使用
9.1实验概述
WebScarab是我们接下来要学习的另一款功能强大的 Web 代理工具,它深受渗透测试人员的喜欢。
9.2实验内容
你可以在Kali的应用菜单中的03-Web 程序(Web Application Analysis)中找到webscarab或者在终端中输入命令 webscarab 来启动它,启动成功后,请接着看下面的步骤:
1.打开浏览器访问VM1中的 BodgeIt 模块,地址如下:http://192.168.123.130/bodgeit/
2.现在我们在bodgeit目录上右键选择“Spider tree”,如下图
3.然后所有的请求都会被简要地现在下方并且取到的文会在 Summary 下方以树状图的形式展现出来,见下图:
Summary 中还会显示每一个文件的其他相关信息,比如它是否存在注入或者是否有可能会存在注入,是否设置了 Cookie,是否包含 Forms(表单)和隐藏字段,此外Summary 中还会显示代码或者文件中存在的注释.
4.在下半部分的请求中,任选一个右键选中后,你就可以看到能对它执行的所有操作,在path 中找到/bogedit/searchjsp,右键选中它,选择Show conversation,就会弹出一个携带着很多操作窗口的新界面,如下图:
5.现在我们单击Spider 标签,如下图
在Spider里,我们可以通过在Allowed Domains和Forbidden Paths 中输入正则表达式来更改拦截规则。选中目标后单击 Fetch Tree 按会刷新爬取到的结果,单击 Stop 按将会停止爬取。
9.3实验总结
WebScarab 的 Spider 模块与 ZAP 和 BurpSuite 中的一些功能是相同的,它们都是用来发现网站中所有被引入的文件和存在的链接,无需手动操作就可以完整地爬取站点的所有链接并且能对每一个抓取到的请求和爬取到的文件进行深入分析,因此它更加适合做复杂的渗透测试