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

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

  •  
  •   liuqiongyu889 · 306 天前 · 5207 次点击
    这是一个创建于 306 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

    而他这个显示查询参数是不存在 XSS 漏洞的,因为现代框架都会处理的,除非你用 Vue 中的 v-html 或者 React 中的 dangerouslySetInnerHTML ,但是楼主显然不会这么傻。
    leonshaw
        8
    leonshaw  
       306 天前
    这难道不是搜索引擎的算法问题?
    1521815837
        9
    1521815837  
       306 天前
    外链自动 nf 不就可以了?
    vivipure
        10
    vivipure  
       306 天前   ❤️ 3
    就是反射 XSS, 不过攻击的不是普通用户,而是污染 SEO.
    oldshensheep
        11
    oldshensheep  
       306 天前   ❤️ 1
    @leonshaw
    不是,楼主的网站在进入网址 https://hackertalk.net/tags/********是会显示一个 tag 为********的页面,然后发起查询,如果查询不到这个 tag 就不显示内容。但是页面上显示了********,而这个********会是任意的可能。所以页面上也就会显示任意的内容,然后就被别人用来做 SEO 。

    黑产通过在其他网站上构造 [https://hackertalk.net/tags/读博网站地址等广告信息] ,然后搜索引擎就会索引到
    https://hackertalk.net/上有这个 [读博网站地址等广告信息] 的内容
    huijiewei
        12
    huijiewei  
       306 天前
    tag 不存在不应该是 404 页面么,搜索引擎会索引 404 页面么
    tin3w5
        13
    tin3w5  
       306 天前 via iPhone
    这不就是最典型的 get 请求的 inject 吗?无论是通过 api 拼接 sql 还是 js ,亦或者是系统命令……
    leonshaw
        14
    leonshaw  
       306 天前
    @oldshensheep
    搜索引擎不应该识别这种页面内容与 URL 相关情况么?比如说由于 caidu.com 本身是一个没有审查的搜索引擎,[https://caidu.com/读博] 大概率有读博网站信息,那么用同样的攻击方法就能使得其它搜索引擎降低 caidu.com 的 rank ?
    oldshensheep
        15
    oldshensheep  
       306 天前
    @leonshaw 搜索引擎为什么会索引搜索引擎?
    @huijiewei 他这个没处理,他用的是 SSR 返回的是 HTTP 200
    leonshaw
        16
    leonshaw  
       306 天前
    @oldshensheep 搜索引擎怎么知道它是搜索引擎?
    oldshensheep
        17
    oldshensheep  
       306 天前
    @leonshaw 建议你了解一下 robots.txt
    leonshaw
        18
    leonshaw  
       306 天前
    @oldshensheep 本来觉得 op 的情况等效于一个搜索引擎,想了一下确实不对,合法的 tag 是希望被索引的。
    x86
        19
    x86  
       306 天前
    想起了早期 asp 时代有的垃圾站可以这样插个小马的
    huijiewei
        20
    huijiewei  
       306 天前
    @oldshensheep 所以这和输入框没什么关系。就是开发人员对 HTTP 协议不了解,以为一切都 200 就 OK

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