V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
liuqiongyu889
V2EX  ›  程序员

各位前端注意浏览器地址栏也是一个输入框

  •  
  •   liuqiongyu889 · 2023-05-27 16:46:56 +08:00 · 5508 次点击
    这是一个创建于 538 天前的主题,其中的信息可能已经有所发展或是发生改变。

    做前端的都知道不要相信每个输入框的内容,我真没想到浏览器地址栏也是一个输入框,然后就被搞了。 记录下整个过程:

    没想到我也被黑产摆了一道

    29 条回复    2023-05-31 14:18:23 +08:00
    shansing
        1
    shansing  
       2023-05-27 16:57:07 +08:00   ❤️ 7
    我还以为有啥浏览器 API 可以直接拿地址栏的参数。像这种 url param 难道不本来就要防范 XSS 注入吗?
    binaryify
        2
    binaryify  
       2023-05-27 17:01:36 +08:00   ❤️ 2
    这跟输入框啥关系,不就是 url params 防范 XSS
    xmumiffy
        3
    xmumiffy  
       2023-05-27 17:01:52 +08:00 via Android
    我还以为你要说直接在地址栏输入 JavaScript 命令呢
    Exdui
        4
    Exdui  
       2023-05-27 17:10:02 +08:00
    @shansing #1 是需要防范 XSS ,但这些广告信息看起来不像 XSS
    vevlins
        5
    vevlins  
       2023-05-27 17:22:17 +08:00
    url xss 注入,shopify 外贸站重灾区,黑产 seo 常见套路。
    IvanLi127
        6
    IvanLi127  
       2023-05-27 17:46:42 +08:00 via Android
    这。。。你这好像和前端没关系呐?
    oldshensheep
        7
    oldshensheep  
       2023-05-27 18:03:20 +08:00   ❤️ 5
    可能很多人没看懂楼主发的东西,这其实不是 XSS ,我一开始也没看懂,后来懂了。
    他是把 URL 里面的查询参数先显示在页面上再去查询的,然后页面上就多了很多无关的东西。

    后来他改造了一下,先去用参数查询,然后再显示结果,如果没有结果就显示 404 而不是先显示查询参数。

    但是其实没改造好,我去网站看了一下,查询一个存在的 tag 会先显示 404 然后再显示正常的结果

    而他这个显示查询参数是不存在 XSS 漏洞的,因为现代框架都会处理的,除非你用 Vue 中的 v-html 或者 React 中的 dangerouslySetInnerHTML ,但是楼主显然不会这么傻。
    leonshaw
        8
    leonshaw  
       2023-05-27 19:01:59 +08:00
    这难道不是搜索引擎的算法问题?
    1521815837
        9
    1521815837  
       2023-05-27 19:17:31 +08:00
    外链自动 nf 不就可以了?
    vivipure
        10
    vivipure  
       2023-05-27 19:18:39 +08:00   ❤️ 3
    就是反射 XSS, 不过攻击的不是普通用户,而是污染 SEO.
    oldshensheep
        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/上有这个 [读博网站地址等广告信息] 的内容
    huijiewei
        12
    huijiewei  
       2023-05-27 19:26:13 +08:00
    tag 不存在不应该是 404 页面么,搜索引擎会索引 404 页面么
    tin3w5
        13
    tin3w5  
       2023-05-27 19:30:42 +08:00 via iPhone
    这不就是最典型的 get 请求的 inject 吗?无论是通过 api 拼接 sql 还是 js ,亦或者是系统命令……
    leonshaw
        14
    leonshaw  
       2023-05-27 19:33:29 +08:00
    @oldshensheep
    搜索引擎不应该识别这种页面内容与 URL 相关情况么?比如说由于 caidu.com 本身是一个没有审查的搜索引擎,[https://caidu.com/读博] 大概率有读博网站信息,那么用同样的攻击方法就能使得其它搜索引擎降低 caidu.com 的 rank ?
    oldshensheep
        15
    oldshensheep  
       2023-05-27 19:47:25 +08:00
    @leonshaw 搜索引擎为什么会索引搜索引擎?
    @huijiewei 他这个没处理,他用的是 SSR 返回的是 HTTP 200
    leonshaw
        16
    leonshaw  
       2023-05-27 19:48:45 +08:00
    @oldshensheep 搜索引擎怎么知道它是搜索引擎?
    oldshensheep
        17
    oldshensheep  
       2023-05-27 19:50:44 +08:00
    @leonshaw 建议你了解一下 robots.txt
    leonshaw
        18
    leonshaw  
       2023-05-27 19:58:55 +08:00
    @oldshensheep 本来觉得 op 的情况等效于一个搜索引擎,想了一下确实不对,合法的 tag 是希望被索引的。
    x86
        19
    x86  
       2023-05-27 20:04:35 +08:00
    想起了早期 asp 时代有的垃圾站可以这样插个小马的
    huijiewei
        20
    huijiewei  
       2023-05-27 20:22:54 +08:00
    @oldshensheep 所以这和输入框没什么关系。就是开发人员对 HTTP 协议不了解,以为一切都 200 就 OK

    倒是让我想起一个比较容易被搞的页面,站内搜索页面,这里返回 404 不太合适。容易被搞
    veike
        21
    veike  
       2023-05-27 20:30:17 +08:00
    这种东西都多少年前的事了,利用高权重网站给自己打广告。
    mohumohu
        22
    mohumohu  
       2023-05-27 22:41:46 +08:00
    我想起看过的一篇文章跟 OP 描述的有点像,简单来说就是构造带广告的 URL ,被搜索引擎爬了呗: [Wordpress 的搜索功能可能会被碰瓷]( https://blog.03k.org/post/wordpress-bad.html)
    xiebruce
        23
    xiebruce  
       2023-05-27 23:43:38 +08:00   ❤️ 1
    不存在的链接直接显示 404 ,你在我博客随便输: https://www.xiebruce.top/tag/vim ,会发现,不存在链接就会显示 404 ,这样它输什么 tag 就与我无法了
    geelaw
        24
    geelaw  
       2023-05-28 00:13:07 +08:00 via iPhone   ❤️ 3
    用“输入框”的方式思考仅得其形,更好的理解是:一切来自于外界的输入都是脏的。
    XEdge
        25
    XEdge  
       2023-05-28 09:41:26 +08:00
    如图
    busier
        26
    busier  
       2023-05-28 13:00:41 +08:00
    http Request head 也是输入!不光 url 可以玩! user-agent 、accept-language 、referer 等等各种 head 都可以玩!
    liuqiongyu889
        27
    liuqiongyu889  
    OP
       2023-05-28 13:28:21 +08:00
    @oldshensheep 7 楼正解,不是 xss ,简单说就是如果 url params/path variables 没有经过后端检查就显示在页面上都有这个漏洞,攻击者不是为了嵌入 html 代码,而是嵌入简单文本,实现 SEO
    cy18
        28
    cy18  
       2023-05-28 14:30:45 +08:00
    这跟前端有啥关系,要注意也应该是后端注意吧?
    感觉应该说,后端应该认为所有输入都是脏的。
    liuqiongyu889
        29
    liuqiongyu889  
    OP
       2023-05-31 14:18:23 +08:00
    @cy18 显然你没看懂原理,这不是后端能解决的,也不是用 react/vue 过滤 xss 就能解决,是前端的一种安全漏洞
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   994 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 22:33 · PVG 06:33 · LAX 14:33 · JFK 17:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.