V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  mikewang  ›  全部回复第 2 页 / 共 30 页
回复总数  584
1  2  3  4  5  6  7  8  9  10 ... 30  
@ZeroDu
也不完全一样,做了一些加强。

这次想说明,即使改成 127.0.0.1 ,加密码不改端口号,也能通过路径探测到 clash (虽然获取不到节点信息,但是能知道你在用。)当然不加密码更是直接读配置。

———
@y1y1

之所以能成功跨域,是因为 clash 内核的 header 设置了 Access-Control-Allow-Origin: *,相当于解除浏览器跨域限制,欢迎大家来访问。
不过还有一些浏览器像 Safari 限制更严格,https 不能跨域到 http 被拦截,还有一些隐私插件会拦截,所以不是 100%保证成功。

这次做的比较匆忙,是一个粗糙的 demo ,没有太大技术含量。只是为了证明 CORS 的设置不合理,应有配置能默认关闭。

———
@WhatTheBridgeSay

网页“任何网站都能检测”是对 Access-Control-Allow-Origin: *的解释,通配符允许了所有网站。不过确实不够严谨,因为可能还会遇到其他限制。

时间原因,没法做到面面俱到。网页就在 GitHub 上,如果有好的建议欢迎直接提 PR ~

———
对于端口扫描,正常情况下浏览器前端是没法对本地端口扫描的。Access-Control-Allow-Origin: *导致有被扫到的风险。就是这样。
#58 @liuzimin 说的是 9090 的 api 端口,verge 默认是 9097 。
#56 @shizhibuyu2023

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

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

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

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

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

#57 @YCCD

好的反馈!我在 macOS Safari 上测试了一下,Safari 不允许从 https 页面上发起 http 请求。
所以是检测不到的。但是如果 GitHub Pages 是 http 的,那就可以调用了。
#43 @addenvex 是的,即使有密码,返回 401 也能检测到。
请求记录里这些接口会返回 401 ,然后你访问一些其他的路径会返回 404 。通过这些接口路径特征,能推断出 Clash 及其版本号。

#44 @wniming 有一定的推断逻辑在里面,可能你的环境刚好命中特征了。会有误报的可能。
#17 @mikewang
#23 @lekai63

是的。我 #17 写的 external-controller 默认应该是 9090 。最好 7890 和 9090 两个一起改了。浏览器一定条件下也能检测 7890 端口的情况,不过读不到东西。
@Ashore 手机版 Clash 也能读出来吗(捂脸)
出乎意料了。按钮问题是主题设计的,我有空改下。
@ewiglicht 是的,加了密码也能扫出来。不过浏览器扫效率太低了,您看上面有很多说慢的(
另外连接数高了也会失败(漏掉)。所以加密码和高端口算是安全的。
#10 @ffnil > 这 Chrome 为啥不阻止网站访问 127.0.0.1

一个是本地调试很多都是在 127.0.0.1 ,另外就是向 QQ 一键登录等功能实际上也是在 127.0.0.1 上的,不过它的接口有鉴权。
@leilinJune @yjxjn @s4d 原理是默认端口,并且 API 没有上密码,就被读了。

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

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

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

---

如果被检测并读出服务器配置了,那么你之前可能一直在裸奔(
@oneisall8955 透明代理等不在 127.0.0.1 上的不会检测到。本质是探测 Clash 在本机的 API 端口。
@yyzh 手机端不用扫了(检测电脑端的

@Configuration @ByteCat
实际上常用端口排在最前面的,十秒内没扫到基本上是安全的。
后面虽然会扫整个 65535 ,实际因为浏览器性能低,而且会漏,作用不大。只是作为理论参考。
79 天前
回复了 Autonomous 创建的主题 NAS 如何减少 NAS 端口暴露至公网
参考 https://v2ex.com/t/982608
端口处于打开状态,域名不正确选择直接关闭连接,可一定程度上避免基于 ip 的 http 扫描
不只是电信,移动也墙了。联通似乎还没有影响
#14 @aprilwei 据我所知,这方面与 Chromium 没有什么差异,使用 --headless 进入无头模式。

#15 @tool2dx 打开 chrome://flags/#keep-old-history 选项,可以保留 3 个月以上的记录。这个也是 ungoogled-chromium 特有的功能。

#17 @Biggoldfish 我个人觉得目的倒不是完全不用 Google ,而是一定程度上拒绝 Google 对 Chromium 的独裁。例如强制的自动更新可以去掉,旧历史记录我就是要保留,下载器隐藏了下载地址我再改回来。这些补丁由社区志愿者维护,没有商业公司的影响。

#20 @Shy07 可以的,我就是举个例子。在 ungoogled-chromium 上可以用 Google ,也可以不用。
@Shy07 去除 Google 遥测的一个兜底做法,就是从源代码里暴力替换掉所有 Google 域名,自然就没有 Google 搜索了(
@NoOneNoBody 插件可以通过 crx 安装。文中也提到了 chromium-web-store 。
以前用过 wkhtmltoimage ,不过现在看起来已经 archive 了
或者加上 --disable-features=DownloadsPageReferrerUrl
看了一下代码,应该是来自这个提交: https://chromium-review.googlesource.com/c/chromium/src/+/5589888
实际链接被隐藏了,写了个段代码恢复显示:

document.querySelector("body > downloads-manager").shadowRoot.querySelectorAll("downloads-item").forEach( dl_elem => {
let url_elem = dl_elem.shadowRoot.querySelector("#url");
url_elem.innerText = url_elem.href;
url_elem.removeAttribute("hidden");
url_elem.style.direction = "ltr";
});
1  2  3  4  5  6  7  8  9  10 ... 30  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6000 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 25ms · UTC 02:46 · PVG 10:46 · LAX 18:46 · JFK 21:46
Developed with CodeLauncher
♥ Do have faith in what you're doing.