Mita 发表于 2025-1-4 21:43:54

VPS的IPv6一给就是一个/64子网,想搞一个随机后缀出站功能

本帖最后由 Mita 于 2025-1-5 00:13 编辑

起因是给女同学拉票,结果投票页面不用登录,每个IP记一票,但是网站还支持ipv6,而且测试发现判断ipv6仍然是按单个地址/128来的,而不是把相同前缀的视为同一个人,也就是说可以轻易利用ipv6的海量地址特性刷票。

于是想利用curl+批量生成的公网IPv6出站去刷票。

curl+随机v6出站的信息,参考某大佬的博客:
https://zu1k.com/posts/tutorials/http-proxy-ipv6-pool/

演示中,博主的VPS提供商是Vultr,分配的IP是 2001:19f0:6001:48e4::1,子网长度64位,即2001:19f0:6001:48e4::/64下后缀随便改都能出站。全段路由,不需要NDP通告。
命令:
VPS独吞整个子网网段下所有的IP,都绑定到本机网卡,但无需一个个ip addr add。
ip route add local 2001:19f0:6001:48e4::/64 dev enp1s0

开启内核的 ip_nonlocal_bind 特性。不过我用HE隧道的时候,只执行上一条就已经把/64内任意IP都PING通(绑定成功)了,但VPS出站默认还是网卡上绑的那个。
sysctl net.ipv6.ip_nonlocal_bind=1

用 curl --interface 指定出口 IP成功:
$ curl --interface 2001:19f0:6001:48e4::1 ipv6.ip.sb
2001:19f0:6001:48e4::1
$ curl --interface 2001:19f0:6001:48e4::2 ipv6.ip.sb
2001:19f0:6001:48e4::2

分隔符static/image/hrline/line2.png

更新:靠,原来还有这种神器 sipcalc
不用费心思展开IPv6了,这软件全给搞定了。


apt install sipcalc
sipcalc 240e:326::1/32 #一条命令全给算出来了,不用自己考虑展开缩写和判断格式了,刚才白忙活半天!
- - 0


Expanded Address      - 240e:0326:0000:0000:0000:0000:0000:0001
Compressed address      - 240e:326::1
Subnet prefix (masked)- 240e:326:0:0:0:0:0:0/32
Address ID (masked)   - 0:0:0:0:0:0:0:1/32
Prefix address          - ffff:ffff:0:0:0:0:0:0
Prefix length         - 32
Address type            - Aggregatable Global Unicast Addresses
Network range         - 240e:0326:0000:0000:0000:0000:0000:0000 -
                        240e:0326:ffff:ffff:ffff:ffff:ffff:ffff



我搞一个半(划去)成品的脚本,先随机生成合法的v6后缀,并拼接到从系统中读取的前缀中。生成多个本机子网内的v6地址。


本机IPv6地址:2408:8226:4e:3850:1234:5678:90ab:cdef
完整IPv6地址:2408:8226:004e:3850:1234:5678:90ab:cdef
前缀:2408:8226:004e:3850
IPv6 地址:2408:8226:4e:3850:1234:5678:90ab:cdef
IPv6 前缀:2408:8226:004e:3850

固定前缀:2408:8226:004e:3850 | 随机后缀: 2adb:5f0a:743:593a
第 1 个随机IPv6地址:2408:8226:004e:3850:2adb:5f0a:743:593a

固定前缀:2408:8226:004e:3850 | 随机后缀: 336a:67d:2d:3c6c
第 2 个随机IPv6地址:2408:8226:004e:3850:336a:67d:2d:3c6c

固定前缀:2408:8226:004e:3850 | 随机后缀: 7eea:4d68:1d39:2ac2
第 3 个随机IPv6地址:2408:8226:004e:3850:7eea:4d68:1d39:2ac2

固定前缀:2408:8226:004e:3850 | 随机后缀: 4378:5be:6b08:4600
第 4 个随机IPv6地址:2408:8226:004e:3850:4378:5be:6b08:4600

固定前缀:2408:8226:004e:3850 | 随机后缀: 6d69:239e:276d:6e80
第 5 个随机IPv6地址:2408:8226:004e:3850:6d69:239e:276d:6e80

固定前缀:2408:8226:004e:3850 | 随机后缀: 4a98:49a3:3724:5aa1
第 6 个随机IPv6地址:2408:8226:004e:3850:4a98:49a3:3724:5aa1

固定前缀:2408:8226:004e:3850 | 随机后缀: 44b8:54f9:7fe4:7461
第 7 个随机IPv6地址:2408:8226:004e:3850:44b8:54f9:7fe4:7461

固定前缀:2408:8226:004e:3850 | 随机后缀: 16b3:7a42:c44:3ac9
第 8 个随机IPv6地址:2408:8226:004e:3850:16b3:7a42:c44:3ac9

固定前缀:2408:8226:004e:3850 | 随机后缀: 6277:6d6b:1326:7d36
第 9 个随机IPv6地址:2408:8226:004e:3850:6277:6d6b:1326:7d36

固定前缀:2408:8226:004e:3850 | 随机后缀: 17d5:6856:47a5:8bb
第 10 个随机IPv6地址:2408:8226:004e:3850:17d5:6856:47a5:8bb




然后把随机IPv6地址作为curl的接口变量,连接测试

curl --interface "$random_ipv6" "ipv6.ip.sb"

最后把网址换成投票URL,VPS挂机开刷。

还好那妹子性格很好啊,要是有讨厌鬼找我刷票,我也会给她们刷,简单刷个4294967295票,把全球IPv4穷举一遍给刷上。到时候明眼人都能看出来是刷的,直接取消成绩,比不帮忙的杀伤力还大。当然这样的机会很少就是了。


关键部分相关代码(函数),先写好逻辑,最后在需要调用的地方直接加载:


# 依赖:sipcalc

# 指定检测网卡(IPv6出站网卡)
iface6="eth0"
# 文本颜色
RED='\033[31m'
GREEN='\033[32m'
BLUE='\033[36m'
YELLOW='\033[33m'
NC='\033[0m' # 无色

# 检测本机网卡IPv6地址
# 指定前缀长度目标32~64
ipv6_address=$(ip -6 addr show dev "$iface6" scope global | grep inet6 | awk '{print $2}' | grep -E '/(32|64)$' | cut -d'/' -f1)
# 使用 sipcalc 展开,并取前四段
expanded_ipv6=$(sipcalc "$ipv6_address" | grep "Expanded Address" | awk '{print $4}')
# 提取前四段作为前缀
ipv6_prefix=$(echo "$expanded_ipv6" | cut -d':' -f1-4)
echo " 本机IPv6地址:$ipv6_address"
echo " 完整IPv6地址:$expanded_ipv6"
echo " 前缀:$ipv6_prefix"


# 添加LOCAL路由,本机独吞整个网段V6
add_ipv6_route() {
    ip route add local "$ipv6_prefix"/64 dev "$iface6"
    echo -e "${GREEN} 已为 $iface6 添加本地路由:$ipv6_prefix/64${NC}"
}

# 删除LOCAL路由,退出时执行
remove_ipv6_route() {
    ip route del local "$ipv6_prefix"/64 dev "$iface6"
    echo -e "${GREEN} 已删除 $iface6 的本地路由:$ipv6_prefix/64${NC}"


# 生成随机IPv4地址
generate_random_ip() {
    echo "$((RANDOM % 256)).$((RANDOM % 256)).$((RANDOM % 256)).$((RANDOM % 256))"
}

# 生成随机IPv6地址/64后缀
generate_random_ipv6_suffix() {
    printf "%x:%x:%x:%x" \
      $((RANDOM % 65536)) $((RANDOM % 65536)) $((RANDOM % 65536)) $((RANDOM % 65536))
}

#连通性测试
debug() {
for i in {1..10}; do
      random_suffix=$(generate_random_ipv6_suffix)
      random_ipv6="${ipv6_prefix}:${random_suffix}"
      echo -e "${BLUE} 使用随机IPv6 ${YELLOW}${random_ipv6}${BLUE}进行第 ${YELLOW}${i}${BLUE} 次连接测试...${NC}"
      curl --interface "$random_ipv6" "ipv6.ip.sb"
    done}

#正式用到的地方省略

搞定,大功告成!

Mita 发表于 2025-1-4 22:40:25

HelloWorld 发表于 2025-1-4 22:04
看来搞机是你的最大爱好

hhh,起因是给女同学拉票,结果投票页面不用登录,每个IP记一票,但是网站还支持ipv6,而且测试发现判断ipv6仍然是按单个地址/128来的,而不是把相同前缀的视为同一个人,也就是说可以轻易利用ipv6的海量地址特性刷票:lol 脚本名字叫 uwpc.sh,uwpc就是双拼“shua piao”的按键:lol

ps,一般情况下,约定俗成一个ipv4地址和一个ipv6 /64子网视为同一个人;ipv4一个c段(/24)成本对应的是ipv6的/48。GFW和一般防火墙自动封起v6来据说也是按照/64封的,谷歌是一个v4=/48 v6,VPS邻居有人乱搞的话,自己用v4可能还好点,但v6就蹦验证码了。

HelloWorld 发表于 2025-1-4 22:04:25

看来搞机是你的最大爱好

潇湘妃子 发表于 2025-1-4 22:42:00

有人利用这个特性污染GEOIP数据库搞出来了朝鲜、南极落地鸡。

Mita 发表于 2025-1-4 22:48:04

潇湘妃子 发表于 2025-1-4 22:42
有人利用这个特性污染GEOIP数据库搞出来了朝鲜、南极落地鸡。

和这个没关系,如果是利用warp落地的话,让cf认为连接ip归属地是朝鲜南极就行,cf用的是maxmind的库,maxmind起步按/64判断,不像ipip那样一个个判断。自己直接落地的话用Geofeed和ripe数据库字段来骗,但是没几个库会承认。

Mita 发表于 2025-1-4 23:03:36

本帖最后由 Mita 于 2025-1-4 23:09 编辑

潇湘妃子 发表于 2025-1-4 22:42
有人利用这个特性污染GEOIP数据库搞出来了朝鲜、南极落地鸡。

说起来我也查过不少IP,用过不少裤子(都是免费的),感受:

国内的,
ipip最认真,最准,完全有自己的判断方法,并非IP主人说哪就是哪。但也有错误的。
纯真看着准,ipv4一堆能精确到网吧,但是谁能去查证呢?网上流行的免费库数据大概在一几年左右,后来那些IP出售啥的换了国家就跟不上了。国内精确到省级正确率大概100%,市级大概90%正确。
百度之流说啥信啥,还全是广告,卖那么贵,不过貌似通过百度IP可以白嫖查询?
zxinc只有v6的库,v4用的纯真。v6是真泥马准,就没见犯过错。可惜现在不更新了。

国外的,
ipinfo和ip2location最认真,ipinfo会看持有者通告信息加自己判断,ip2完全自己判断。付费的没用过所以不知道更多细节,但相对来说ipinfo反而更准。ipinfo注册个账号,每个月就有50k次数免费查询,很良心,ipinfo的v6按单个地址来。,ip2不知道。使用类型(家宽,机房),ipinfo准,ip2基本全打成机房。ipinfo可能会信朝鲜,ip2完全不会。
综合看来ip2像是个外国版ipip。

maxmind非常单纯,持有者说啥信啥,朝鲜南极也信,cf唯一使用的库。更新慢。使用类型没付费不知道。

ipregistry更新快,单纯。v6从/64起步。
db-ip比较单纯,偶尔会有自己判断,大部分时候说啥信啥。使用类型只有一半准,v6单个地址判断。更新速度一般。
别的没怎么查过,但是国外的基本都犯过低级错误,比如“湖南省西安市”这类省市对不上的。

laoziwo 发表于 2025-1-5 18:37:47

HelloWorld 发表于 2025-1-4 22:04
看来搞机是你的最大爱好

女同学才是最大爱好

M-Team 发表于 2025-1-5 23:48:29

广播到朝鲜的1个月就生效了, 南极洲的半年了 数据库还没更新
页: [1]
查看完整版本: VPS的IPv6一给就是一个/64子网,想搞一个随机后缀出站功能