宣传一波 更好的阅读体验 👉 个人blog
Cross-Site Scripting(XSS)
1
介绍XSS,即脚本,当前端或后端没有对用户输入进行过滤时,js脚本会在浏览器正常执行,常见的危害:
窃取会话Cookie
创建虚假请求
在页面上创建虚假字段以收集凭据
将您的页面重定向到“不友好”站点
创建伪装成有效用户的请求
窃取机密信息
在最终用户系统上执行恶意代码(活动脚本)
插入恶意和不适当的内容
2
根据题意,查看WebGoat内各个网页对应的Cookie是否都一样。
(1)F12打开控制台
输入JS命令,回车
(2)测试查看其他网页
发现每个选项卡上的Cookie都相同
(3)填写yes
3.
xss最常见的位置
-
将搜索字符串回显给用户的搜索字段
-
回显用户数据的输入字段
-
返回用户提供的文本的错误消息
-
包含用户提供的数据的隐藏字段
-
显示用户提供的数据的任何页面
- 留言板
-
自由格式注释
-
HTTP 标头
4.
我们为什么要注意xss
XSS 攻击可能导致
窃取会话 Cookie
创建虚假请求
在页面上创建 false 字段以收集凭据
将您的网页重定向到“不友好”的网站
创建伪装成有效用户的请求
窃取机密信息
在最终用户系统上执行恶意代码(活动脚本)
插入恶意和不当内容
<img src="http://malicious.site.com/image.jpg/>
">GoodYear recommends buying BridgeStone tires...
XSS 攻击增加了网络钓鱼攻击的有效性
URL 中使用了有效的域
5.
xss类型
反射型
来自用户请求的恶意内容在 Web 浏览器中显示给用户
恶意内容在服务器响应后写入页面
需要社会工程学
使用从浏览器中的用户继承的浏览器权限运行
基于 DOM(也反映在技术上)
客户端脚本使用来自用户请求的恶意内容将 HTML 写入其自己的页面
与reflected XSS相似
使用从浏览器中的用户继承的浏览器权限运行
存储或持久化
恶意内容存储在服务器上(在数据库、文件系统或其他对象中),然后通过 Web 浏览器显示给用户
不需要社会工程
7.
找注入点
一个一个试就行了
分别在两个空输入alert(1)
,看返回的结果,
结果显示第一空存在xss漏洞,即不会过滤非法的输入
这里我们在第二空输入
<script>alert(1);</script>
就行了,即调用js的弹出窗口的功能
9.
反射型和基于 DOM 的 XSS
基于 DOM 的 XSS 是反射型 XSS 的另一种形式。两者都是通过发送一个链接来触发的,该链接的输入将反映到浏览器。 DOM 和“传统”反射型 XSS 之间的区别在于,使用 DOM 时,有效负载永远不会进入服务器。 它只会由客户端处理。
攻击者向受害者发送恶意 URL
受害者点击链接
该链接可能会加载恶意网页或他们使用(已登录?)的网页,该网页具有易受攻击的路由/处理程序
如果它是一个恶意网页,它可能会使用自己的 JavaScript 来攻击另一个具有易受攻击的路由/处理程序的页面/URL
易受攻击的页面呈现有效负载,并在该页面/站点的用户上下文中执行攻击
攻击者的恶意脚本可能以本地账号的权限运行命令
受害者没有意识到发生了攻击 ...... 恶意攻击者不使用 [HTML_REMOVED]alert(’xss’)[HTML_REMOVED]
10.
根据题意,我们要找到留在应用程序中的test代码的route,搜索js脚本。
这做题之前我们需要知道js里面的Backbone.Router
Backbone.Router(路由) | Backbone.js 中文文档 1.1.2 (gitbooks.io)
它题目的案例写的很清楚
查看本课的 URL … 它应类似于 /WebGoat/start.mvc#lesson/CrossSiteScripting.lesson/9。在这种情况下,“基本路线”是: 开始.mvc#lesson/ 之后的 CrossSiteScripting.lesson/9 是由 JavaScript 路由处理程序处理的参数。
这里我们需要找test code
先用f12去看调试器中的(来源)resource,一个一个慢慢找就能看到GoatRouter,里面有
var GoatAppRouter = Backbone.Router.extend({
routes: {
'welcome': 'welcomeRoute',
'lesson/:name': 'lessonRoute',
'lesson/:name/:pageNum': 'lessonPageRoute',
'test/:param': 'testRoute',
'reportCard': 'reportCard'
},
extend
Backbone.Router.extend(properties, [classProperties])
开始创建一个自定义的路由类。当匹配了 URL 片段便执行定义的动作,并可以通过 routes 定义路由动作键值对。 请注意,你要避免在路由定义时使用前导斜杠
所以这里答案就是直接start.mvc#test
11.
这里就是利用test进行xss攻击
题目给的webgoat.customjs.phoneHome()
是会返回一个随机数
直接构建payload
localhost:8080/WebGoat/start.mvc#test/%3Cscript%3Ewebgoat.customjs.phoneHome()%3C%2fscript%3E
在f12的console里面可以看到随机数,填入就行了
12
答案试43124
可信网站是否能抵御XSS攻击?
解决方案 1:是的,它们是安全的,因为浏览器在执行之前会检查代码。
解决方案 2:是的,因为 Google 有一种阻止恶意代码的算法。
解决方案3:否,因为执行的脚本会突破浏览器的防御算法。
解决方案 4:否,因为浏览器信任该网站,如果它被确认为受信任,则浏览器不知道该脚本是恶意的。XSS攻击何时发生?
解决方案 1:数据通过受信任的源进入 Web 应用程序。
解决方案 2:数据通过网站进入浏览器应用程序。
解决方案 3:数据包含在发送给 Web 用户的动态内容中,而未验证恶意内容。
解决方案 4:数据在静态内容中被排除在外,即在未经验证的情况下发送数据。什么是存储型XSS攻击?
解决方案 1:脚本永久存储在服务器上,受害者在向服务器请求信息时获取恶意脚本。
解决方案 2:该脚本将自身存储在受害者的计算机上,并在本地执行恶意代码。
解决方案 3:该脚本将病毒存储在受害者的计算机上。攻击者现在可以执行各种操作。
解决方案 4:脚本存储在浏览器中,并向攻击者发送信息。什么是反射式 XSS 攻击?
解决方案 1:反射攻击将恶意代码从数据库反射到 Web 服务器,然后将其反射回用户。
解决方案 2:它们将注入的脚本反映在 Web 服务器之外。当发送到 Web 服务器的输入是请求的一部分时,就会发生这种情况。
解决方案 3:反射式攻击从防火墙反射到用户从中请求信息的数据库。
解决方案 4:反射型 XSS 是一种攻击,其中注入的脚本从数据库和 Web 服务器反射到用户。JavaScript 是执行 XSS 攻击的唯一方法吗?
解决方案 1:是的,您只能通过 JavaScript 使用标签。
解决方案 2:是的,否则您无法窃取 cookie。
解决方案 3:不,也有 ECMAScript。
解决方案4:不,还有很多其他方法。如 HTML、Flash 或浏览器执行的任何其他类型的代码。