弱口令漏洞详解

###弱口令的定义

  弱口令(weak password) 没有严格和准确的定义,通常认为容易被别人(他们有可能对你很了解)猜测到或被破解工具破解的口令均为弱口令。弱口令指的是仅包含简单数字和字母的口令,例如“123”、“abc”等,因为这样的口令很容易被别人破解,从而使用户的互联网账号受到他人控制,因此不推荐用户使用

###弱口令产生原因

  这个应该是与个人习惯相关与意识相关,为了避免忘记密码,使用一个非常容易记住的密码,或者是直接采用系统的默认密码等。相关的安全意识不够,总认为不会有人会猜到我这个弱口令的,相关的安全意识不够,总认为不会有人会猜到我这个弱口令的。

###弱口令的危害

通过系统弱口令,可被黑客直接获得系统控制权限。

###弱口令解决办法

强制对所有的管理系统账号密码强度必须达到一定的级别。不可在使用简单的admin123456等弱密码了,修改密码为复杂密码并加密保存,建议密码包含大小写字母,数据和特殊符号,密码长度不低于八位,如果网站存在数据泄漏漏洞(如sql注入漏洞),务必修复漏洞。。

设置密码通常遵循以下原则:

1)不使用空口令或系统缺省的口令,这些口令众所周之,为典型的弱口令。

2)口令长度不小于8 个字符。

3)口令不应该为连续的某个字符(例如:AAAAAAAA)或重复某些字符的组合(例如:tzf.tzf.)。

4)口令应该为以下四类字符的组合,大写字母(A-Z)、小写字母(a-z)、数字(0-9)和特殊字符。每类字符至少包含一个。如果某类字符只包含一个,那么该字符不应为首字符或尾字符。

5)口令中不应包含本人、父母、子女和配偶的姓名和出生日期、纪念日期、登录名、E-mail 地址等等与本人有关的信息,以及字典中的单词。

6)口令不应该为用数字或符号代替某些字母的单词。

7)口令应该易记且可以快速输入,防止他人从你身后很容易看到你的输入。

8)至少90 天内更换一次口令,防止未被发现的入侵者继续使用该口令。

###弱口令分类

公共弱口令

公共弱口令就是常见的密码,公共弱口令也就是根据大量的密码数据统计得出的出现频率较高弱口令,关于这方面的弱口令统计结果有很多,在此我就列举一些出现频率比较高的公共弱口令:

Top 100):

123456 a123456 123456a 5201314 111111 woaini1314 qq123456 123123 000000 1qaz2wsx 1q2w3e4r

qwe123 7758521 123qwe a123123 123456aa woaini520 woaini 100200 1314520 woaini123 123321

q123456 123456789 123456789a 5211314 asd123 a123456789 z123456 asd123456 a5201314 aa123456

zhang123 aptx4869 123123a 1q2w3e4r5t 1qazxsw2 5201314a 1q2w3e aini1314 31415926 q1w2e3r4

123456qq woaini521 1234qwer a111111 520520 iloveyou abc123 110110 111111a 123456abc w123456

7758258 123qweasd 159753 qwer1234 a000000 qq123123 zxc123 123654 abc123456 123456q qq5201314

12345678 000000a 456852 as123456 1314521 112233 521521 qazwsx123 zxc123456 abcd1234 asdasd

666666 love1314 QAZ123 aaa123 q1w2e3 aaaaaa a123321 123000 11111111 12qwaszx 5845201314

s123456 nihao123 caonima123 zxcvbnm123 wang123 159357 1A2B3C4D asdasd123 584520 753951 147258

1123581321 110120 qq1314520

对于网站后台而言,一般为:

admin

manager

admin123

admin888

admin666

具体来说,不同的后台类型拥有不同的弱密码:

数据库(phpmyadmin):账号:root,密码:rootroot123123456

tomcat:账号:admintomcatmanager,密码:admintomcatadmin123123456manager

jboss:账号:adminjbossmanager,密码:adminjbossmanager123456

weblogic:账号:weblogicadminmanager,密码:weblogicadminmanager123456

条件型

个人弱口令往往与这个人的个人信息(姓名,生日,手机号,特殊昵称,爱好,社交软件账号,常用username,邮箱...),关系成员(家庭成员,男女朋友...),所处环境(车牌号,公司信息比如公司名称,公司成立时间或地点,公司domain...),还有特殊的指定字符(数字,单词...),在这里我也列举一些经常出现的组合:我们可以使用这个猜密码的网站来生成条件弱口令字典。

比如我们知道一个人,他的信息如下:

姓名:王小二      邮箱:412391882@qq.com

英文名:twowang   手机号:110

那我们就可以在这个网站上输入这些信息,然后点击下方的提交

然后我们就得到了这个最有可能的密码:

另提示一点:当系统要求密码组合必须包含大写字母时候,根据中国人密码设定习惯,会有83%的人将大写字母,且是唯一存在的大写字母放在第一位

###弱口令实列

普通的弱口令猜测

比如说,我们使用这样一段代码来演示弱口令漏洞,它模拟了某个系统的后台。

<?php

function showForm() { ?>

<form method="POST" action="./lesspass.php">

    <input type="text" name="un" />

    <input type="password" name="pw" />

    <input type="submit" value="登录" />

</form> <?php

}

$un = @$_POST['un'];

$pw = @$_POST['pw'];

if($un == '' && $pw == '')

    showForm();

else if($un == 'admin' && $pw == 'admin888')

    echo '登录成功';

else {

    showForm();

    echo '登录失败';

}

把它保存为lesspass.php,将其部署后访问http://localhost/lesspass.php

接下来我们假装不知道真实密码,开始尝试。对于管理员账户,用户名一般是admin,密码可能为adminadmin123admin888123456123abcadmin等等。首先输入adminadmin,尝试失败:

之后是adminadmin123,还是失败。最后尝试adminadmin888,成功。

Burp Suite 爆破

首先我们需要把浏览器和 Burp 的代理配置好,打开 Burp 的拦截模式。之后我们在lesspass.php页面中随便输入什么东西并提交,在 Burp 中就可以看到拦截的封包:

为了爆破密码,我们需要使用它的 Intruder 功能,右键弹出菜单并选择"Send to Intruder"

之后访问 Intruder 标签页,在 Position 子标签页中我们可以看到封包。

我们需要点击右边的Clear按钮把所有标记清除掉,由于我们需要破解密码,我们选中密码参数值点击Add

之后我们切换到旁边的 Payloads 标签页,点击中间的load按钮,加载字典。我们选择之前的top100.txt

不要忘了要将admin888插入进去。在下面的输入框中输入admin888,并点击旁边的Add

点击右上角的Start Attack来开始爆破(老版本是Intruder -> Start Attack菜单栏),我们会看到结果列表。

我们点击Length表头,让它按照长度来排序。可以发现有一个项目的长度与其它明显不同,那么它就是正确的结果。

PKAV Fuzze爆破

双击Pkav HTTP Fuzzer 1.5.6.exe来打开它。另外目录下还有一份使用手册,Pkav HTTP Fuzzer使用手册 Ver 1.0.pdf,大家可以参考这个手册。这个教程只会讲用到的功能

它的主界面是这样的:



左边是请求包输入框,我们需要填写整个 HTTP 封包(就是 Burp 中的Proxy -> Intercept选项卡中的内容),我们将其复制过来。然后我们选中pw位置的admin,点击下面的添加标记

我们再来看看右边的重放设置重放模式变体赋值都不用改动,我们点击下方的导入按钮,选择之前的top100.txt

之后再添加按钮右边的输入框中输入admin888,然后点击添加

然后我们点击下方的发包器选项卡,在新的界面中直接点启动

然后我们点击长度表头,让它按照长度排序。

我们可以看到,仅当密码为admin888时长度为 6,其它都是其它数值,那么它就是正确密码

###弱口令漏洞描述

通常认为容易被别人(他们有可能对你很了解)猜测到或被破解工具破解的口令均为弱口令,常见弱口令有:
1
、数字或字母连排或混排,键盘字母连排(如:123456abcdef123abcqwerty1qaz2wsx等)
2
、生日,姓名+生日(利用社工非常容易被破解)
3
、短语密码(如:5201314woaini1314等)



###弱口令生成

关于弱口令生成可以利用相关工具或者脚本,工具的话网上有很多,可以自行搜索下载,在这里我提供自己写的python小脚本,如果有需要请自行修改,仅作参考:

 

# -*- coding: utf-8 -*-

weak_password=['000000','0000000','111111','11111111','112233','123123','123321','123456','12345678','87654321','123456789','987654321','1234567890','0123456789','654321','666666','888888','666888','66668888','abcdef','147258369','abcabc','abc123','a1b2c3','aaa111','123qwe','qweasd','admin','root','pass123','p@ssword','password','passwd','iloveyou','woaini','5201314','qq123456','taobao','wang1234']

    

foreign_weak_password=['password','123456','12345678','qwerty','abc123','monkey','1234567','letmein','trustno1','dragon','baseball','111111','iloveyou','master','sunshine','ashley','bailey','passw0rd','shadow','123123','654321','superman','qazwsx','michael','football','qwerty','welcome','ninja','hello','happy','anything','abcabcabc','qwert123','system','command','adminstrator','mouse','harddisk']

    

name=['xiaoming','Xiaoming','xiaoMing','xiao_ming','xiaoM','XMing','Xming','xl','XM']

    

birth=['1995','_1995','09','9','23','199509','_950923','_199509','9509','0923','19950925']

    

specialnum=['1314','520','000','111','123','168','1234','123456','5201314','888','666','123123']

    

id=['mingxiaozi','xiaolifeidao']

    

companyinfo=['jingdong','JongDong','jd','JD']

#自行添加更多信息

f=open('weakpasswords.txt','w')

for a in weak_password:

    f.write(a+'\n')

    for b in foreign_weak_password:

   f.write(b+'\n')

    for c in name:

   for d in birth:

   f.write(c+d+'\n')

   f.write(d+c+'\n')

    for e in name:

   for f in specialnum:

   f.write(e+f+'\n')

   f.write(f+e+'\n')

    

    for i1 in id:

   for b1 in birth:

   f.write(i1+b1+'\n')

   f.write(b1+i1+'\n')

    

    for i2 in id:

   for s1 in specialnum:

   f.write(i2+s1+'\n')

   f.write(s1+i2+'\n')

    

    for n1 in name:

   for b1 in birth:

   for s2 in specialnum:

 f.write(n1+s2+b1+'\n')

 f.write(s2+n1+b1+'\n')

 f.write(s2+b1+n1+'\n')

#自行添加更多组合

###弱口令的tips

1.遵循某种规律,读起来朗朗上口,或者是我们小时候最先接触的一些数字或者字母。
  123456
123abcabc123123456abcdef!@#这些弱口令也有人戏称是滚键盘,例如admin!@#看起来并不简单,但它确实是滚键盘,属于弱密码,我在实际渗透中,曾许多次碰到这个弱口令admin!@#
防御策略:
 
对企业员工进行安全培训,提高安全意识,安全中没有侥幸,只有万一。滚键盘类的密码还是少用,尽量使用难以猜解的密码。

2.无意间的信息泄漏,导致密码泄漏或者可能易于被猜测
永远都不要质疑白帽子们的脑洞,他们做CTF的时候,脑洞大着呢。中国网某子网站后台弱口令:lujiaji(漏洞作者:blast)
https://www.secpulse.com/archives/14056.html
简单一看,这个密码并不是很典型的弱密码,如果纯粹靠猜测,或许并不能尝试成功。但重点是,在一个新闻中,显示出了新闻作者lujiaji,管理后台账户密码均为lujiaji。所以,被攻破有两点原因:用户名的部分或者全部是对外开放的,管理员:lujiaji用户名密码是相同的。
京东的一些敏感信息在GitHub上泄漏(漏洞作者:匿名)

https://www.secpulse.com/archives/22828.html
开发人员托管代码时,没有对敏感信息进行删除,导致泄露了用户名密码root/JD123,还有一种就是密码本身并不弱,但是开发人员对于自己的网站或者系统过于热爱,而导致用户名或密码可猜测。如,某网站为www.p1a2s3s4word.com,开发人员或者管理人员就可能将系统的用户名设置的与网站域名有关,或者与公司名称有关。如:p1a2s3s4wordp1a2s3s4word123
小米内网漫游记(一个弱口令导致各种内部系统泄露)Xiaomi11(漏洞作者:临时工)

http://cb.drops.wiki/bugs/wooyun-2014-076453.html

应对策略:
(1).登录名和用户名应进行区分
(2).
实行有效的密码策略,杜绝密码中包含用户名,甚至是完全相同的情况存在
(3)
记住GitHub是安全隐含一大来源
(4).
不要使用易于从企业名称或者域名中得到密码信息的口令。

3.虽然密码强度可靠,但大量系统使用同一密码

  只要基数过大,那么一定会有例外,也一定会存在漏洞,任意一个系统遭到入侵后,其它的系统都会受到影响,这样的例子数不胜数,例如内网渗透很大程度上就是根据这一点进行的。

4.还有就是默认密码,虽然许多系统坚不可摧,但如果其不强制其用户修改密码,有些人还真的就会用默认密码。
简单漫游深信服内网:(楼主作者:fuckadmin)
https://www.secpulse.com/archives/35096.html
听说你们的设备都存在一个默认的sangfor/sangfor,咱也手贱来试试。
大量学校/政府CMS 默认后台账号密码:admin admin888(漏洞作者:exploits)

https://www.secpulse.com/archives/10477.html
学校和政府网站安全性一般来说都很差,在本示例中,大量的网站就未对cms默认密码进行修改。
应对策略:
永远不要使用默认密码,密码默认即为密码公开。


5..虽然系统采用了默认密码,但是用户对其进行了修改,这就足够了吗?no!系统中还有系统。
该问题多见于一些大型集成软件或者系统,由于系统过于庞大,存在默认密码的地方不止一处,甚至管理员本身都不知道存在某些功能。
比如某cms中集成了ewebeditor编辑器,但管理员可能并不会注意到。
九思软件iThink OA系统编辑器上传漏洞:(漏洞作者:Lee)

http://www.wooyun.org/bugs/wooyun-2010-04913

九思iThink使用的是ewebeditor的编辑器,且密码使用的默认密码(admin/admin),导致系统存在被入侵的风险。
应对策略:
(1).
对于集成软件或系统,使用前应对其进行详尽的了解,避免因设置问题而存在弱口令。
(2).
集成软件或系统的厂商应在使用说明中,着重指出此问题。


6.网站存在撞库风险
严格意义上来讲,并不能归在弱口令安全,但是还是与其相关的。由于登陆功能或者一些接口设计不当,导致可以无限制尝试登录,从而导致撞库。
凤凰网某接口设计不当可暴力破解可撞库:(漏洞作者:匿名)

https://www.secpulse.com/archives/29717.html
作者发现凤凰网存在德州扑克的登陆接口,且无任何登陆限制,从而间接对其进行撞库测试,并成功。
阿里巴巴某系统设计缺陷可造成淘宝无限制撞库(漏洞作者:bing)

https://www.secpulse.com/archives/22460.html
其手机端接口无次数和验证码限制,导致可以进行撞库,作者称利用互联网上公开的数据库,每天可以跑出24万个淘宝账号和密码。
应对策略:
撞库问题,其实并不只是企业或者网站的问题,这也需要我们每一位用户提高自己的安全意识。
(1).
作为我们用户,我们应定期修改密码,不同的网站或账户不应该使用相同的密码
(2).
作为企业或网站主,我们应对登录进行有效验证限制,不只是明显的登陆处,对于各个功能接口也不例外



posted @ 2018-05-08 11:32 渗透测试中心 阅读(...) 评论(...) 编辑 收藏