渗透测试之暴力破解及验证码安全

暴力破解及验证码安全(逻辑漏洞)

1.暴力破解注意事项

破解前一定要有一个有效的字典(top100 top2000 csdn QQ 163等字典)     判断用户是否设置了复杂密码,网站是否存在验证码 尝试登陆的行为是否有限制,网站是否双因素验证 token值等。

对目标网站进行注册,搞清楚账号密码的一些限制,比如目标站点要求密码必须是8位以上,字母数字组合,则可以按照此优化字典,比如去掉不符合要求的密码。

如果破解的是管理后台密码,可使用admin/administrator/root/test账号几率较高,可以使用这三个账号+随便一个密码字典进行暴力破解,是破解过程中一定要观察提示,如‘用户名或密码错误’,‘用户名错误’,‘密码错误’



账号注册问题   查看注册账号时是否有验证码  账号是否可以无限注册



2.暴力破解分类 b/s c/s

2.1 基于表单的暴力破解

基于pikachu漏洞演示平台

先打开pikachu    选暴力破解->基于表单的暴力破解   随便输入账号和密码 用burp抓包

抓取下来数据包 发送给测试器


选择位置 然后清除burp自己设置的所有标记



手动将username改成admin并将password这个参数设置好标记(需要先知道账号才可以爆破密码否则两个一起爆破难度大大提高)

设置好之后选择有效载荷添加字典



点击粘贴可以将字典直接粘贴过来  点击下面的按钮可以导入一个文本格式的子字典



导入好自己的字典后点击开始攻击



密码是123456

2.2 基于验证码的暴力破解

on client常见问题:不安全的将验证码在cookie中泄露,不安全的将验证码在前端源代码中泄露

还是用pikachu  和之前一样 账号admin随便输入一个密码  正确的验证码

继续发送给测试器   将所有标记清除


因为是前端JS效验验证码是否正确  现在提交过来说明已经效验完成  直接删除掉vcode  将password标记好


设置好后 添加字典  设置一下线程 开始攻击



on server常见问题:验证码在后台不过期 导致长期会用(PHP默认session是24分钟后过期),校验码效验不严格,逻辑出现问题。验证码设计的泰国简单和有规律的被猜解

还是继续抓包  因为验证码是后端验证  但是session是在24分钟后过期所以不需要删除验证码  直接将密码设置好标记  直接导入字典开始攻击就可以


设置好后导入字典开始爆破



基于token破解

由于token值输出在前端源代码中,容易被获取,因此也就失去了方暴力破解的意义,一般token在防止CSRF上会有比较好的功效。

注意:破解方式为音叉;线程数设为1;Grep-Extract设置好开始token" value=" 结束为" /> ;有郊载荷设为递归搜索

"token" value="

还是和之前一样  抓包发送到测试器 

但是攻击类型选择音叉 将password和token设置标记



选择有效载荷



有效载荷比之前多了一个  1是password  2是token

password还是和之前一样导入密码字典  2选择递归搜索


点击选项  选择在响应中提取以下项目




点击获取回复



直接将token值位置定义好  点OK



点击开始攻击




弹出上面错误  直接将线程调成1就好了



验证码识别

先抓取一个数据包   把抓取到的包复制下来

打开验证码爆破工具Pkav HTTP Fuzzer 1.0.2.1

将抓取到的数据包复制进来

开始配置软件   还是将password和验证码设置标记



导入一个字典

开始验证码识别项设置


验证码地址需要去需要爆破的网站复制验证码图片的地址



因为验证码是存数字的   在识别范围改成0--9就可以了 可以加快验证码识别速度


这里调用的第三方验证码识别库



上面设置好验证码的长度 如果验证码是固定的 直接输入固定数字就可以

下面是验证码错误重试 因为每个密码都要测试一遍 有可能验证码错误  导致密码没有真正的提交到服务器  所以这里要设置一下重试规则



进入发包器选项 启动爆破

速度很快



验证码分类

GIF动画验证码

手机短信验证码

手机语音验证码

视频验证码




验证码绕过思路

验证码由客户端JS生成并仅仅由js验证(只需要手动输入对一次 用burp抓包删除掉验证码即可绕过)

验证码存放在HTML或cookie里(token方法可以绕过)

账号密码输入错误一定次数出现验证码(有可能错误次数在cookie内 每次输入错误cookie某个参数值加一 让该参数值一直为未错误的状态 验证码就会一直不出来)

验证码不过期(抓包抓到一个正确的验证码 在有效期内一直使用该验证码)

没有进行非空判断(直接不输入验证码)

验证码安全修改

1.强制要求输入验证码,否则,必须实施IP策略, 不要被X-Forwaded-For绕过

2.验证码只能用一次,用完立即过期,不能再次使用

3.验证码不要太弱,扭曲,变形,干扰线条,干扰背景色,变换字体等

4.大网站最好使用同一验证码,各处使用同一个验证码接口



3.暴力破解C/S

主要工具 Hydra Bruter

第一个爆破工具Bruter


全部设置好之后就可以开始破解

工具需要放在英文目录下 否则会找不到文件



瞬间出账号密码

第二个爆破工具是kali平台下的hydra

hydra是著名黑客组织thc的一款开源的暴力密码破解工具,可以在线破解多种密码。官网:http://www.thc.org/thc-hydra,可支持AFP, Cisco

AAA, Cisco auth, Cisco enable, CVS, Firebird, FTP, HTTP-FORM-GET,

HTTP-FORM-POST, HTTP-GET, HTTP-HEAD, HTTP-PROXY, HTTPS-FORM-GET,

HTTPS-FORM-POST, HTTPS-GET, HTTPS-HEAD, HTTP-Proxy, ICQ, IMAP, IRC, LDAP,

MS-SQL, MYSQL, NCP, NNTP, Oracle Listener, Oracle SID, Oracle, PC-Anywhere,

PCNFS, POP3, POSTGRES, RDP, Rexec, Rlogin, Rsh, SAP/R3, SIP, SMB, SMTP, SMTP

Enum, SNMP, SOCKS5, SSH (v1 and v2), Subversion, Teamspeak (TS2), Telnet,

VMware-Auth, VNC and XMPP等类型密码。



安装:

1.yum安装相应依赖包

# yum install openssl-devel pcre-devel ncpfs-devel postgresql-devel libssh-devel subversion-devel libncurses-devel

2.hydra编译安装

# cd /usr/local/src

# wget http://freeworld.thc.org/releases/hydra-6.3-src.tar.gz

# tar zxf hydra-6.3-src.tar.gz

# cd hydra-6.3-src

# ./configure# make

# make install

# ./configure会检测当前系统一些组件配置,主要是对于破解支持模块的检测,可根据需要安装对应的支持库和依赖包

hydra [[[-l LOGIN|-L FILE] [-p PASS|-P FILE]] | [-C FILE]] [-e ns]

[-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-f] [-s PORT] [-S] [-vV] server service [OPT]

-R 继续从上一次进度接着破解。

-S 采用SSL链接。

-s PORT 可通过这个参数指定非默认端口。

-l LOGIN 指定破解的用户,对特定用户破解。

-L FILE 指定用户名字典。

-p PASS 小写,指定密码破解,少用,一般是采用密码字典。

-P FILE 大写,指定密码字典。

-e ns 可选选项,n:空密码试探,s:使用指定用户和密码试探。

-C FILE 使用冒号分割格式,例如“登录名:密码”来代替-L/-P参数。

-M FILE 指定目标列表文件一行一条。

-o FILE 指定结果输出文件。

-f 在使用-M参数以后,找到第一对登录名或者密码的时候中止破解。

-t TASKS 同时运行的线程数,默认为16。

-w TIME 设置最大超时的时间,单位秒,默认是30s。

-v / -V 显示详细过程。

server 目标ip

service 指定服务名,支持的服务和协议:telnet ftp pop3[-ntlm] imap[-ntlm] smb smbnt http-{head|get} http-{get|post}-form http-proxy cisco cisco-enable vnc ldap2 ldap3 mssql mysql oracle-listener postgres nntp socks5 rexec rlogin pcnfs snmp rsh cvs svn icq sapr3 ssh smtp-auth[-ntlm] pcanywhere teamspeak sip vmauthd firebird ncp afp等等。

OPT 可选项

其它实例:

1.破解ssh:

# hydra -l 用户名 -p 密码字典 -t 线程-vV -e ns ip ssh

# hydra -l 用户名 -p 密码字典 -t 线程-o save.log -vV ip ssh

2.

破解ftp:

# hydra ip ftp -l 用户名 -P 密码字典 -t 线程(默认16) -vV

# hydra ip ftp -l 用户名 -P 密码字典-e ns -vV

3.get

方式提交,破解web登录:

# hydra -l 用户名 -p 密码字典 -t 线程-vV -e ns ip http-get /admin/

# hydra -l 用户名 -p 密码字典 -t 线程-vV -e ns -f ip http-get /admin/index.php

4.post

方式提交,破解web登录:

# hydra -l 用户名 -P 密码字典-s 80 ip http-post-form "/admin/login.php:username=^USER^&password=^PASS^&submit=login:sorry password"

# hydra -t 3 -l admin -P pass.txt -o out.txt -f 10.36.16.18 http-post-form "login.php:id=^USER^&passwd=^PASS^:wrong username or password"

(参数说明:-t同时线程数3,-l用户名是admin,字典pass.txt,保存为out.txt,-f 当破解了一个密码就停止, 10.36.16.18目标ip,http-post-form表示破解是采用http的post方式提交的表单密码破解,<title>中的内容是表示错误猜解的返回信息提示。)

5.

破解https:

# hydra -m /index.php -l muts -P pass.txt 10.36.16.18 https

6.

破解teamspeak:

# hydra -l 用户名 -P 密码字典 -s 端口号-vV ip teamspeak

7.

破解cisco:

# hydra -P pass.txt 10.36.16.18 cisco

# hydra -m cloud -P pass.txt 10.36.16.18 cisco-enable

8.

破解smb:

# hydra -l administrator -P top100.txt 192.168.0.102 smb

9.

破解pop3:

# hydra -l muts -P pass.txt my.pop3.mail pop3

10.

破解rdp:

# hydra 192.168.0.102 rdp -l administrator -P top100.txt -V

11.

破解http-proxy:

# hydra -l admin -P pass.txt http-proxy://10.36.16.18

12.

破解imap:

# hydra -L user.txt -p secret 10.36.16.18 imap PLAIN

# hydra -C defaults.txt -6 imap://[fe80::2c:31ff:fe12:ac11]:143/PLAIN

此工具强大之处远多于以上测试,其密码能否破解关键在于强大的字典,对于社工型渗透来说,有时能够得到事半功倍的效果



以上是工具安装教程及使用说明

下面开始实战  还是爆破之前的FTP






4.防暴力猜解

防止暴力破解是非常简单的,无论是B/S架构或者是C/S架构,下面总结出以下几点。


   1、密码的复杂性

 毫无疑问,密码设置一定要复杂,这是最基本的,最低层的防线,密码设定一定要有策略:


    ①对于重要的应用,密码长度最低位8位数以上,尽量在8位数之16位数之间。


    ②绝不允许以自己的手机号码,邮箱等关键“特征”为密码。


    ③用户名与密码不能有任何联系,如用户名为“admin”,密码为“admin888”。


    ④仅仅以上三点是不够的,比如说“12345678”、“222222222”、“11111111”这样的密码,长度够了,但是也极为危险,因为这些即为弱口令。这些密码一般都已经被收录到了攻击者的字典之中。所以就必须要增加密码的复杂性。比如以下方案:

    ·至少一个小写字母(a-z)

    ·至少一个大写字母(A-Z)

    ·至少一个数字(0-9)

    ·至少一个特殊字符(*&^%$#@!)


    如果你感觉你的密码足够强大,就让攻击者去攻击几年吧,虽然这只是句玩笑,也说明了密码策略的重要性,密码复杂,不单单是对暴力破解有防范,也对其他的攻击有防范,例如MD5密码破解,你的密码足够复杂,CMD5解密也是比较难的。


2、验证码措施


    验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans

Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机和人的公共全自动程序。


使用验证码可以有效的防止:恶意破解密码、刷票、论坛灌水等。可以说验证码最主要的是防范“机器人”,如图12-12所示,是一个用户注册页面,嵌入验证码之后可以有效的防止机器人注册(机器人在注册后通常会发布一些广告帖,违法贴)。

                          图12-12   验证码


    至今验证码不单单可以有效的防止暴力破解,刷票,网络水军,也可以要用来防护CSRF等其他一些不安全的因素。


虽然说验证码简单,有效,但是也看什么类型的验证码,至今验证码可以分为很多种,有图片验证码,有手机验证码,有邮箱验证码,还有答题验证码,这里以图片验证码为例解说。


    图片验证码有非常多的种类,有的比较复杂,“机器人”很难识别,可能人都很难识别,但有的比较简单,很容易被“机器人”识别出来,如图12-13所示,有各类的验证码。


                图12-13   各式各样的验证码


有时候站长朋友可能会感觉到奇怪,自己明明开启了验证码,为什么还有那么多的垃圾用户注册?答案是验证码被“机器人识别了”!验证码也能被识别出来?对,你没有听错,很多验证码都可以被识别,像国内的知名的“discuz”论坛的验证码,就经常被识别,好在“discuz”官方团队一直在更新,不然国内一大批论坛可就“中招”了。


    这里的识别验证码大概的原理是分析背景和文字的颜色,还原出字母部分的字样,与样板进行匹配,找出相似度高的结果。至今,有些专门识别验证码的团队,开发出云识别接口,在识别验证码的时候只需要调用接口就可以了,这让不少没有验证码识别经验的程序员也可以快速快发出来验证码识别程序,有利也有弊。


    另外一种验证码破解,不可以叫做识别,而是由于程序的错误导致了验证码“失效”。验证码在验证的流程一般为由服务端生成字符串,保存在SESSION之中,然后经过程序转换为图片验证码发向客户端,客户端接受之后,使用<img>标签显示,当用户输入验证码之后,与SESSION之中的字符串相比较,如果验证相等的话,证明是正确的验证码,否则是错误的。而有些程序员,在写验证码比较时候,在比较之后,没有在服务端去生成新的验证码,而返回到服务端之后,由<img>标签发起访问,生成验证码,这样就导致了客户端如果不去解析<img>表现,验证码就不会发生改变,从而造成了验证码“无效”。这样的例子不在少数。


    在使用验证码的时候,现在单纯的图片验证码正在逐渐变少,而采用问题提问,汉字,这样验证码却原来越多,但是却是依然是可以识别的,只不过增加了识别的成本而已。所以在使用验证码方面一定要注意,验证码一定要复杂度,在复杂的同时并且尽量不降低用户体验,如果人都不能识别出验证码,那么网站就没有存在的意义了。


注:本节的验证码为防止爆力破解的验证码,而非是作为身份标识的验证码。


3、登陆日志(限制登录次数)


    使用登陆日志可以有效的方式暴力破解,登陆日志意为:当用户登录时,不是直接进行登陆,而是去登陆日志里面去查找,用户时候不是已经登陆错误了,还有登陆错误的次数,时间。如果连续是连续错误,将采取某种措施。


例如Oracle数据库就有一种机制,当密码输入错误三次之后,每次登陆时间间隔为10秒钟,这样就大大减少了被破解的风险,我们完全可以做到登陆第三次错误后延时10秒登陆,第四五延时15秒,这样也是一种有效的解决暴力破解的方案。


    有些朋友可能会问,当登陆错误几次之后,我们直接封锁账户24小时,这样不就更方便了吗?显然这样做是可以,但是不要忘记,攻击者是不能在破解了,但是你还能登陆吗?所以,不要直接进行封锁账户,详细描述请参照第十章,逻辑漏洞章节。


    暴力破解防范还有其他很多种方法,读者可以根据自身的需求去寻找合适自己的方案。



 

 

 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,440评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,814评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,427评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,710评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,625评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,014评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,511评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,162评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,311评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,262评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,278评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,989评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,583评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,664评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,904评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,274评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,856评论 2 339