翻译来自:掣雷小组
成员信息:
thr0cyte,Gr33k,花花,MrTools,R1ght0us,7089bAt,
标记红色的部分日更新内容。
第五章、使用跨站脚本攻击客户端
5.0、介绍
5.1、使用浏览器绕过客户端控制
5.2、识别跨站脚本漏洞
5.3、利用XSS获取Cookie
5.4、利用DOM XSS
5.5、利用BeEF执行xss攻击
5.6、从Web存储中提取信息
5.7、使用ZAP测试WebSokets
5.8、使用XSS和Metasploit获取远程shell
4.2、识别跨站脚本漏洞
跨站脚本漏洞(XSS)是web应用程序中最常见的漏洞之一;它在2013年的OWASP Top 10中排名第三(https://www.owasp.org/index.php/Top_10_2013-Top_10)
在这个小节中,我们将看到发现web应用程序中XSS漏洞的关键点。
实战演练
让我们看看以下步骤:
1. 我们将使用易受攻击的Web应用程序(DVWA)来完成这个小节。使用默认的管理凭据(admin作为用户名和密码)登录,然后到XSS reflected(反射XSS)。
2. 测试漏洞的第一步是观察应用程序的正常响应。在文本框中填写一个名称字符串并且点击提交。在这里我们填写的是Bob:
3. 应用程序使用的是我们输入的字符串。如果我们引入一些特殊字符或者数字而不是一个有效的名称字符串,会发生什么呢?让我们试试<’this is the first test’>:
4. 现在,我们看到我们在文本框输入的任何内容都将出现在响应中;也就是说,它成为了响应HTML页面的一部分。让我们检查页面的源代码来分析它是如何显示信息的:
源代码显示,在输出中没有对特殊字符进行编码,我们发送的特殊字符在没有任何预先处理的情况下反射回页面。<和>是用来定义HTML标签的,所以我们可以引入一些脚本代码。
5. 试着在普通输入的后面加上非常简单的脚本代码,Bob<script>alert(‘xss’)</script>:
该页面执行了脚本,导致弹出了警告框,因此该页面容易收到XSS攻击。
6. 现在,检查源代码,看看发生了什么:
看起来我们的输入被处理得好像它是HTML代码的一部分;浏览器解释了<script>标签,并在其中执行代码,显示出了警告。
原理剖析
XSS漏洞发生在服务器端和客户端对输入执行弱验证或不进行验证,且输出没有正确编码的情况下。这意味着该应用程序允许我们引入HTML代码中使用的字符,并且在将它们发送到页面时,不进行任何编码(例如使用HTML转义<和>,以防止它们被解释为HTML或Javascript源代码)。
攻击者使用这些漏洞来更改客户端的行为,欺骗用户在他们不知情的情况下执行任务,或者窃取私人信息。
为了发现XSS漏洞的存在,我们可以关注以下几个方面:
其他…
在这个小节中,我们发现了一个反射XSS;这意味着每当我们发送这个请求,服务器响应它时,脚本就会被执行。另一种类型的XSS称为存储型XSS。存储型的XSS可能是在输入提交后立即显示的,也可能不是,但是这种输入存储在服务器上(可能存储在数据库中),在用户每次访问时都会执行。