米斯特白帽培训讲义 漏洞篇 弱口令、爆破、遍历

    弱口令没有严格和准确的定义,通常认为容易被别人(它们有可能对你很了解)猜测或被破解工具破解的口令均为弱口令。弱口令指的是仅包含简单数字和字母的口令,例如”123”、”abc”等,因为这样的口令很容易被别人破解。

    通过爆破工具就可以很容易破解用户的弱口令。

    危害

    中石油的多个加油站的视频监控被入侵,我们可以通过它们看一些隐私。也可以通过它把监控器关掉,来进行一些非法活动。

    分类

    普通型弱口令就是常见的密码,比如,目前网络上也有人特地整理了常用的弱口令(Top 100):

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

    • admin
    • admin123
    • admin888
    • admin666

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

    • 数据库(phpmyadmin)
      • 账号:root
      • 密码:root、root123、123456
    • tomcat
      • 账号:admin、tomcat、manager
      • 密码:admin、tomcat、admin123、123456、manager
    • jboss
      • 账号:admin、jboss、manager
    • weblogic
      • 账号:weblogic、admin、manager
      • 密码:weblogic、admin、manager、123456

    条件型

    条件型弱口令就是和用户信息相关的密码,比如生日+手机号、姓名首字母+生日、爱人姓名首字母+生日+常用字母(520、1314 等)。

    我们可以使用这个来生成条件弱口令字典。

    漏洞篇 弱口令、爆破、遍历 - 图1

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

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

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

    漏洞篇 弱口令、爆破、遍历 - 图2

    点击“查看更多”之后还可以获取更多弱口令。

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

    第一行到第七行组成了一个 HTTP 表单。我们可以看到,这个表单使用 POST 方法向这个页面自己提交信息,表单域对应 PHP 的un变量,pw表单域对应 PHP 的pw变量。

    第九行和第十行从 HTTP 请求的主体中取出un参数和pw参数。

    第十一到第十八行对用户名和密码参数做判断,如果都为空,那么我们认为它仅仅是显示页面的请求,直接返回。如果unadmin,且pwadmin888,因为这是我们预设的正确用户名和密码,所以显示登陆成功,否则显示登录失败。

    真实代码的用户名和密码是从数据库里面取的,但是它仍然是确定的东西,而且如果存在弱口令,还是能破解出来,原理一致。

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

    首先输入和admin,尝试失败:

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

    漏洞篇 弱口令、爆破、遍历 - 图3

    可见,爆破破解的原理就是一个一个尝试,破解效果完全取决于你所使用的字典。如果密码碰巧在你的字典中,就一定能成功。

    Burp Suite 爆破

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

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

    漏洞篇 弱口令、爆破、遍历 - 图4

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

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

    漏洞篇 弱口令、爆破、遍历 - 图5

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

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

    漏洞篇 弱口令、爆破、遍历 - 图6

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

    漏洞篇 弱口令、爆破、遍历 - 图7

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

    PKAV Fuzzer

    我们可以在下载工具。

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

    漏洞篇 弱口令、爆破、遍历 - 图8

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

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

    漏洞篇 弱口令、爆破、遍历 - 图9

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

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

    漏洞篇 弱口令、爆破、遍历 - 图10

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

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

    比如这段代码,我们将其保存为info.php

    这段代码模拟了用户信息的查询页面,一共有五条记录。我们可以访问这个页面,并使用 Burp 来拦截。像之前一样,发送到Intruder,然后清除掉所有标记,只保留 ID 的标记:

    漏洞篇 弱口令、爆破、遍历 - 图11

    由于是纯数字,我们把上面的Payload Type调成Numbers。下面,我们把From设为1To设为10Step设为1

    之后点击Start Attack。我们可以看到结果,其中ID 1 ~ 5 的长度都是 224,6 ~ 10 都是 211。我们之前的测试中,2 是有效的,所以 224 应该是有效内容的长度。

    漏洞篇 弱口令、爆破、遍历 - 图12

    字典

    更多字典请见 Kali 系统的目录。

    附录