做前端的都知道不要相信每个输入框的内容,我真没想到浏览器地址栏也是一个输入框,然后就被搞了。 记录下整个过程:
1
shansing 2023-05-27 16:57:07 +08:00 7
我还以为有啥浏览器 API 可以直接拿地址栏的参数。像这种 url param 难道不本来就要防范 XSS 注入吗?
|
2
binaryify 2023-05-27 17:01:36 +08:00 2
这跟输入框啥关系,不就是 url params 防范 XSS
|
3
xmumiffy 2023-05-27 17:01:52 +08:00 via Android
我还以为你要说直接在地址栏输入 JavaScript 命令呢
|
5
vevlins 2023-05-27 17:22:17 +08:00
url xss 注入,shopify 外贸站重灾区,黑产 seo 常见套路。
|
6
IvanLi127 2023-05-27 17:46:42 +08:00 via Android
这。。。你这好像和前端没关系呐?
|
7
oldshensheep 2023-05-27 18:03:20 +08:00 5
可能很多人没看懂楼主发的东西,这其实不是 XSS ,我一开始也没看懂,后来懂了。
他是把 URL 里面的查询参数先显示在页面上再去查询的,然后页面上就多了很多无关的东西。 后来他改造了一下,先去用参数查询,然后再显示结果,如果没有结果就显示 404 而不是先显示查询参数。 但是其实没改造好,我去网站看了一下,查询一个存在的 tag 会先显示 404 然后再显示正常的结果 而他这个显示查询参数是不存在 XSS 漏洞的,因为现代框架都会处理的,除非你用 Vue 中的 v-html 或者 React 中的 dangerouslySetInnerHTML ,但是楼主显然不会这么傻。 |
8
leonshaw 2023-05-27 19:01:59 +08:00
这难道不是搜索引擎的算法问题?
|
9
1521815837 2023-05-27 19:17:31 +08:00
外链自动 nf 不就可以了?
|
10
vivipure 2023-05-27 19:18:39 +08:00 3
就是反射 XSS, 不过攻击的不是普通用户,而是污染 SEO.
|
11
oldshensheep 2023-05-27 19:20:35 +08:00 1
@leonshaw
不是,楼主的网站在进入网址 https://hackertalk.net/tags/********是会显示一个 tag 为********的页面,然后发起查询,如果查询不到这个 tag 就不显示内容。但是页面上显示了********,而这个********会是任意的可能。所以页面上也就会显示任意的内容,然后就被别人用来做 SEO 。 黑产通过在其他网站上构造 [https://hackertalk.net/tags/读博网站地址等广告信息] ,然后搜索引擎就会索引到 https://hackertalk.net/上有这个 [读博网站地址等广告信息] 的内容 |
12
huijiewei 2023-05-27 19:26:13 +08:00
tag 不存在不应该是 404 页面么,搜索引擎会索引 404 页面么
|
13
tin3w5 2023-05-27 19:30:42 +08:00 via iPhone
这不就是最典型的 get 请求的 inject 吗?无论是通过 api 拼接 sql 还是 js ,亦或者是系统命令……
|
14
leonshaw 2023-05-27 19:33:29 +08:00
@oldshensheep
搜索引擎不应该识别这种页面内容与 URL 相关情况么?比如说由于 caidu.com 本身是一个没有审查的搜索引擎,[https://caidu.com/读博] 大概率有读博网站信息,那么用同样的攻击方法就能使得其它搜索引擎降低 caidu.com 的 rank ? |
15
oldshensheep 2023-05-27 19:47:25 +08:00
|
16
leonshaw 2023-05-27 19:48:45 +08:00
@oldshensheep 搜索引擎怎么知道它是搜索引擎?
|
17
oldshensheep 2023-05-27 19:50:44 +08:00
@leonshaw 建议你了解一下 robots.txt
|
18
leonshaw 2023-05-27 19:58:55 +08:00
@oldshensheep 本来觉得 op 的情况等效于一个搜索引擎,想了一下确实不对,合法的 tag 是希望被索引的。
|
19
x86 2023-05-27 20:04:35 +08:00
想起了早期 asp 时代有的垃圾站可以这样插个小马的
|
20
huijiewei 2023-05-27 20:22:54 +08:00
@oldshensheep 所以这和输入框没什么关系。就是开发人员对 HTTP 协议不了解,以为一切都 200 就 OK
倒是让我想起一个比较容易被搞的页面,站内搜索页面,这里返回 404 不太合适。容易被搞 |
21
veike 2023-05-27 20:30:17 +08:00
这种东西都多少年前的事了,利用高权重网站给自己打广告。
|
22
mohumohu 2023-05-27 22:41:46 +08:00
我想起看过的一篇文章跟 OP 描述的有点像,简单来说就是构造带广告的 URL ,被搜索引擎爬了呗: [Wordpress 的搜索功能可能会被碰瓷]( https://blog.03k.org/post/wordpress-bad.html)
|
23
xiebruce 2023-05-27 23:43:38 +08:00 1
不存在的链接直接显示 404 ,你在我博客随便输: https://www.xiebruce.top/tag/vim ,会发现,不存在链接就会显示 404 ,这样它输什么 tag 就与我无法了
|
24
geelaw 2023-05-28 00:13:07 +08:00 via iPhone 3
用“输入框”的方式思考仅得其形,更好的理解是:一切来自于外界的输入都是脏的。
|
25
XEdge 2023-05-28 09:41:26 +08:00
|
26
busier 2023-05-28 13:00:41 +08:00
http Request head 也是输入!不光 url 可以玩! user-agent 、accept-language 、referer 等等各种 head 都可以玩!
|
27
liuqiongyu889 OP @oldshensheep 7 楼正解,不是 xss ,简单说就是如果 url params/path variables 没有经过后端检查就显示在页面上都有这个漏洞,攻击者不是为了嵌入 html 代码,而是嵌入简单文本,实现 SEO
|
28
cy18 2023-05-28 14:30:45 +08:00
这跟前端有啥关系,要注意也应该是后端注意吧?
感觉应该说,后端应该认为所有输入都是脏的。 |
29
liuqiongyu889 OP @cy18 显然你没看懂原理,这不是后端能解决的,也不是用 react/vue 过滤 xss 就能解决,是前端的一种安全漏洞
|