V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mikewang
V2EX  ›  信息安全

代理检测:在线检测您是否在使用 Clash

  •  7
     
  •   mikewang · 14 小时 36 分钟前 · 6120 次点击

    ClashScan

    (推荐使用最新 Chrome 内核浏览器) https://mikewang000000.github.io/ClashScan/

    代码开源在 GitHub ,页面部署在 GitHub Pages 上。


    Clash 是一个比较常见的代理软件,有很多衍生版本和 GUI 程序。
    不过我最近才发现它是允许 CORS (跨域)的,这带来了不小的安全隐患。

    再加上很多 GUI 默认不加 Secret 进行身份验证,即使运行在 127.0.0.1 ,也能被外部网站随时调用。

    如果您没有修改默认配置,值得检测一次。


    • 默认配置下容易检测的:Clash Verge / Clash Verge Rev / ClashX / ClashX Pro / ClashX Meta
    • 默认配置下相对安全的:最新的 Clash for Windows / Clash Nyanpasu
    69 条回复    2024-09-29 09:12:45 +08:00
    yyzh
        1
    yyzh  
       14 小时 31 分钟前 via Android
    在手机上不能用?没看见有按钮
    ByteCat
        2
    ByteCat  
       14 小时 26 分钟前
    好慢的扫描
    Configuration
        3
    Configuration  
       14 小时 21 分钟前
    探测 127.0.0.1 的,循环端口。。。scannedPorts++; 难怪这么慢
    GeekGao
        4
    GeekGao  
       14 小时 17 分钟前
    确实是个大问题
    yanyao233
        5
    yanyao233  
       14 小时 13 分钟前   ❤️ 1
    草,这确实有点危险了
    mikewang
        6
    mikewang  
    OP
       14 小时 11 分钟前
    @yyzh 手机端不用扫了(检测电脑端的

    @Configuration @ByteCat
    实际上常用端口排在最前面的,十秒内没扫到基本上是安全的。
    后面虽然会扫整个 65535 ,实际因为浏览器性能低,而且会漏,作用不大。只是作为理论参考。
    oneisall8955
        7
    oneisall8955  
       14 小时 9 分钟前
    openclash 透明代理没有检测到
    mikewang
        8
    mikewang  
    OP
       14 小时 7 分钟前
    @oneisall8955 透明代理等不在 127.0.0.1 上的不会检测到。本质是探测 Clash 在本机的 API 端口。
    lower
        9
    lower  
       14 小时 6 分钟前
    太慢了,懒得等了
    ffnil
        10
    ffnil  
       14 小时 6 分钟前
    这 Chrome 为啥不阻止网站访问 127.0.0.1
    chinni
        11
    chinni  
       14 小时 1 分钟前
    哦扫描本地端口啊 我代理都是在局域网的.. 电脑上啥都没装(
    leilinJune
        12
    leilinJune  
       14 小时 0 分钟前
    应该改什么配置
    yjxjn
        13
    yjxjn  
       13 小时 59 分钟前
    那怎么避免呢???如何修改默认配置?
    s4d
        14
    s4d  
       13 小时 56 分钟前
    有点吓人哦,怎么把我服务器的配置给读出来了?什么原理?
    epiphyllum
        15
    epiphyllum  
       13 小时 53 分钟前
    一个解决方法:使用 NoScript 浏览器扩展屏蔽网页对本地网络发起的请求
    asuraa
        16
    asuraa  
       13 小时 53 分钟前
    路由上跑的,检测不到
    mikewang
        17
    mikewang  
    OP
       13 小时 44 分钟前
    @leilinJune @yjxjn @s4d 原理是默认端口,并且 API 没有上密码,就被读了。

    在 yaml 里面,修改下面两个配置:

    external-controller: '127.0.0.1:9090'
    secret: 'xxxxxxx'

    把 7890 改成随机高位端口,避免扫描; secret 改为随机密码(如果没有这个配置手动加上)。

    ---

    如果被检测并读出服务器配置了,那么你之前可能一直在裸奔(
    gzlock
        18
    gzlock  
       13 小时 40 分钟前   ❤️ 3
    1 clash 核心默认打开外部控制功能
    2 clash 核心的外部控制功能就是允许跨域的(不然无法使用第三方的外部控制功能 GUI
    3 @ffnil 浏览器必然是允许第三方网站读取局域网 ip 资源的
    4 @s4d 设置外部控制功能的密钥

    其实让这些软件提供个开关切换 启用 / 禁用外部控制功能 即可解决这个问题,楼主的项目正好引发了这个需求
    mikewang
        19
    mikewang  
    OP
       13 小时 40 分钟前
    #10 @ffnil > 这 Chrome 为啥不阻止网站访问 127.0.0.1

    一个是本地调试很多都是在 127.0.0.1 ,另外就是向 QQ 一键登录等功能实际上也是在 127.0.0.1 上的,不过它的接口有鉴权。
    ewiglicht
        20
    ewiglicht  
       13 小时 34 分钟前
    不是很懂这个原理,不过我的没扫描出来。PC 本地跑 tun 模式。
    LandCruiser
        21
    LandCruiser  
       13 小时 32 分钟前
    @s4d clash 的 gui 你点击打开,相当于在本机运行了一个程序在 127.0.0.1 的某个端口,知道一些 clash 的内部接口,比如获取节点的,然后调用这个接口可以了。
    http://127.0.0.1:9097/proxies 比如这个接口,就可以获取 clash 的所有代理节点
    gzlock
        22
    gzlock  
       13 小时 32 分钟前
    诸君,刚刚实测把外部控制端口设置为 0 ,即可解决这个问题,clash verge rev 提供的第三方 webui 也无法访问到 clash 核心的数据了

    代理功能依然可用,但不确定这些 gui 软件是不是也使用外部控制来控制 clash 核心的,所以把这个信息发出来让大家参与找出 [把外部控制端口设置为 0] 会不会引起其它问题
    katsusan
        23
    katsusan  
       13 小时 31 分钟前
    我看了目前在用的机场给 clash 下发的配置都开了这个 external-controller 还是用的默认 9090 端口没加鉴权,
    这么大个漏洞居然现在才发现( ╯□╰ )
    gzlock
        24
    gzlock  
       13 小时 30 分钟前
    @gzlock #22 好吧,初始阶段没有找到后我就发表了以上回复,但是后续缓慢扫描阶段还是读取出在使用 clash ,上面那个回复当我没发😂😂
    gzlock
        25
    gzlock  
       13 小时 29 分钟前
    @gzlock #24 原因:设置 0 端口后,clash 核心就使用随机端口作为外部控制端口了
    Goooooos
        26
    Goooooos  
       13 小时 27 分钟前
    127.0.0.1 的还好
    openclash 那个如果不是 127.0.0.1 的才危险
    chesha1
        27
    chesha1  
       13 小时 26 分钟前
    这速度也太慢了
    ochatokori
        28
    ochatokori  
       13 小时 25 分钟前 via Android
    再加个把常见网关地址都扫了
    LandCruiser
        29
    LandCruiser  
       13 小时 24 分钟前
    其实我觉得问题不大,上上外网又不是什么杀头的罪,真要较真,运营商那什么都能查到。
    ewiglicht
        30
    ewiglicht  
       13 小时 23 分钟前
    貌似原理是循环请求?
    因为默认配置无加密,所以请求成功了就知道用户使用了代理软件,甚至根据 api 获取完整配置信息。
    因为我修改了控制台的密码,所以检测不出来。
    但是我记得如果有密码,HTTP 的响应好像是 403 还是什么来着,而不是无响应,能不能也根据这个判断是否使用了代理类软件。。。
    Ashore
        31
    Ashore  
       13 小时 20 分钟前 via Android
    用手机 chrome 请求电脑版网页,能检测出来。。
    mikewang
        32
    mikewang  
    OP
       13 小时 20 分钟前
    @ewiglicht 是的,加了密码也能扫出来。不过浏览器扫效率太低了,您看上面有很多说慢的(
    另外连接数高了也会失败(漏掉)。所以加密码和高端口算是安全的。
    mikewang
        33
    mikewang  
    OP
       13 小时 18 分钟前
    @Ashore 手机版 Clash 也能读出来吗(捂脸)
    出乎意料了。按钮问题是主题设计的,我有空改下。
    llsquaer
        34
    llsquaer  
       13 小时 14 分钟前
    这么说本机加个防火墙是不是就好了?
    lekai63
        35
    lekai63  
       13 小时 9 分钟前
    所以感觉不是改 7890 端口。而是 external 相关配置咯,端口和 secret
    mikewang
        36
    mikewang  
    OP
       13 小时 6 分钟前
    #17 @mikewang
    #23 @lekai63

    是的。我 #17 写的 external-controller 默认应该是 9090 。最好 7890 和 9090 两个一起改了。浏览器一定条件下也能检测 7890 端口的情况,不过读不到东西。
    czfy
        37
    czfy  
       12 小时 59 分钟前
    感觉和好久之前提过的这个情况类似?不过看起来是没什么人重视
    https://www.v2ex.com/t/946991
    nyxsonsleep
        38
    nyxsonsleep  
       12 小时 53 分钟前   ❤️ 1
    把 web 控制直接改成其他地址就行了,比如 127.0.0.2 ,关掉这个控制功能。

    没密钥的控制端口,来点漏洞都可以注入攻击了。
    mouyase
        39
    mouyase  
       12 小时 51 分钟前
    还以为是什么高端的骚操作,原来只是扫本机的 clash 的 webui 和 proxy 端口……
    jqtmviyu
        40
    jqtmviyu  
       12 小时 48 分钟前
    singbox 没扫出来.
    其实把常见的客户端端口 9090 9999 之类的扫一扫就行了
    crackidz
        41
    crackidz  
       12 小时 41 分钟前
    现在还有一个问题是 Clash Verge Rev 之类的 GUI 客户端覆写了这部分设置,secret 没有生效。你需要去 GUI 界面的设置里调整一下对应的 WebUI 设置。
    0o0O0o0O0o
        42
    0o0O0o0O0o  
       12 小时 41 分钟前
    1. 本站曾经有人提醒过 /t/946991 ,我可能也在一些回复里提醒过
    2. 想跑题联动一下近期的一个热门帖 /t/1075187 ,不知道有没有哪些朋友看那个帖子 OP 和 @4KMOMhIkocgLELMt 提到的安全隐患觉得不以为然,然而在这个帖子一测试又觉得有被吓到😂
    addenvex
        43
    addenvex  
       11 小时 52 分钟前
    我加了 secret ,接口是 401, 也认为我使用了吗

    wniming
        44
    wniming  
       11 小时 45 分钟前
    不准,我没用 clash 也能检测成 clash
    mikewang
        45
    mikewang  
    OP
       11 小时 36 分钟前
    #43 @addenvex 是的,即使有密码,返回 401 也能检测到。
    请求记录里这些接口会返回 401 ,然后你访问一些其他的路径会返回 404 。通过这些接口路径特征,能推断出 Clash 及其版本号。

    #44 @wniming 有一定的推断逻辑在里面,可能你的环境刚好命中特征了。会有误报的可能。
    loveqianool
        46
    loveqianool  
       11 小时 27 分钟前 via Android   ❤️ 1
    http://sing-box.sagernet.org/zh/configuration/experimental/clash-api

    access_control_allow_origin

    自 sing-box 1.10.0 起

    允许的 CORS 来源,默认使用 *。

    要从公共网站访问私有网络上的 Clash API ,必须在 access_control_allow_origin 中明确指定它而不是使用 *。
    access_control_allow_private_network

    自 sing-box 1.10.0 起

    允许从私有网络访问。

    要从公共网站访问私有网络上的 Clash API ,必须启用 access_control_allow_private_network 。
    ko20
        47
    ko20  
       11 小时 17 分钟前
    我用的局域网当中的某台机器部署的 clash 暴露出来的 http/https/socks5 代理,然后使用 switchy omega 插件添加 socks5 proxy profile 的。没有检测到 clash
    RyougiShiki
        48
    RyougiShiki  
       11 小时 11 分钟前   ❤️ 1
    检测到了,订阅信息都出来了。
    ziseyinzi
        49
    ziseyinzi  
       11 小时 4 分钟前
    再加几个常用的路由/旁路由网关地址
    shitshit666
        50
    shitshit666  
       10 小时 43 分钟前
    是时候写个蜜罐了,看看是谁偷偷检测了 clash
    TossPig
        51
    TossPig  
       10 小时 39 分钟前
    我还以为能扫到我旁路由上的 clash ,结果啥都没监测到
    proxytoworld
        52
    proxytoworld  
       10 小时 30 分钟前
    @shitshit666 蜜罐已经自动化利用 cfw 漏洞了...更别说扫描 clash 端口
    vvhy
        53
    vvhy  
       10 小时 13 分钟前
    firefox 上被 uBlock Origin 拦截了,关了 ub 之后也被 CORS 拦截了
    不会真有人不加密码跑在公网上吧 https://en.fofa.info/result?qbase64=ImV4dGVybmFsLWNvbnRyb2xsZXI6IDkwOTAi
    kenvix
        54
    kenvix  
       10 小时 9 分钟前
    TLDR:
    如果没开管理端口 secret ,会直接扫出正在打开的网站和节点名称和地址信息
    开了 secret 能知道你在用,但无法获取隐私信息
    hoofei
        55
    hoofei  
       10 小时 8 分钟前   ❤️ 1
    被检测到了
    shizhibuyu2023
        56
    shizhibuyu2023  
       9 小时 59 分钟前   ❤️ 1
    能不能用外行也能看懂的话来描述一下,到底有什么风险?
    YCCD
        57
    YCCD  
       9 小时 51 分钟前
    ![img]( )
    liuzimin
        58
    liuzimin  
       9 小时 46 分钟前 via Android
    你们说的什么外部控制端口?在哪里设置?我只知道 7890 那个。
    mikewang
        59
    mikewang  
    OP
       9 小时 32 分钟前   ❤️ 1
    #56 @shizhibuyu2023

    部分 clash 客户端,默认配置下(默认端口,无密码验证):

    1. 即使 clash 端口不暴露外部,运行在本地,外部网站也能通过网页调用,读取或者修改 clash 配置;
    2. 如果是老版本 clash 核心,利用这种方法,还可以配合( CVE-2023-24205 )漏洞,控制整台电脑。

    如果加了密码,但保持默认端口:

    1. 外部网站也能通过网页调用,根据不同的报错情况,推断出你在使用 clash 。

    ================

    #57 @YCCD

    好的反馈!我在 macOS Safari 上测试了一下,Safari 不允许从 https 页面上发起 http 请求。
    所以是检测不到的。但是如果 GitHub Pages 是 http 的,那就可以调用了。
    mikewang
        60
    mikewang  
    OP
       9 小时 30 分钟前
    #58 @liuzimin 说的是 9090 的 api 端口,verge 默认是 9097 。
    venompool88
        61
    venompool88  
       8 小时 39 分钟前
    配置文件里设置 secret 还没用,要在设置里添加才行,订阅拉取的配置文件被软件覆盖掉了
    adsltsee94
        62
    adsltsee94  
       7 小时 57 分钟前
    被检测到了,要怎么搞?
    WhatTheBridgeSay
        63
    WhatTheBridgeSay  
       3 小时 14 分钟前
    打开控制台发现全被 uBlock Orign 拦截了
    WhatTheBridgeSay
        64
    WhatTheBridgeSay  
       3 小时 1 分钟前
    建议在检测页上稍微写一点技术原理,比如这个页面仅仅是通过扫描 127.0.0.1 、遍历端口号的方式查找 clash 及其衍生分支所使用的 external-controller 来确认是否正在使用 clash 。

    而不是仅神秘兮兮一句”任何网站都能检测您是否正在使用 Clash 。“,这种表述只会给不明所以的吃瓜群众带来不必要恐慌。

    很多情况都会影响判断结果,并且也不一定会造成实际危害。比如 uBlock 之类的拦截器订阅了 Block Outsider Intrusion into LAN 之类的规则,或者干脆浏览器安全策略就直接禁止 FQDN 网站向私有 IP 发起网络请求,并且还有可能各种 GUI 面板给 external-controller 设置了随机密码等等等等实际完全没有危害的情况。
    y1y1
        65
    y1y1  
       2 小时 49 分钟前 via iPhone
    跨域不被挡吗?
    LeoAshton
        66
    LeoAshton  
       1 小时 12 分钟前
    算是挺恶性的漏洞了,clash-verge-rev 默认情况下不设置 secret 是没想到的,建议开个 issue 跟开发者反馈一下
    yjxjn
        67
    yjxjn  
       43 分钟前
    @gzlock #25 我改成 0 ,并且把密码设置了,貌似可以了。
    ltkun
        68
    ltkun  
       20 分钟前
    扫描了一个小时 50% 虽然我不用 clash 哈
    yexian
        69
    yexian  
       19 分钟前
    最新的 Clash for Windows ?什么时候更新了,我还在用很早的版本
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5136 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 01:32 · PVG 09:32 · LAX 18:32 · JFK 21:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.