新闻详情

渗透测试之登录点经验之谈

发表时间:2021-05-19 12:49

一个网站就可能存在不到一个登陆点,那么多个网站的登录点就更多,如何进入后台是一门相当有用的技术,登录后台能够发现更多的漏洞。

PS:本文仅用于技术讨论,严禁用于任何非法用途,违者后果自负。

一、逻辑问题

由于程序员设计出现逻辑性的问题,导致我们暴力破解可以绕过逻辑来进行暴力破解,碰到实例有登录失败连续5次锁定账号、登录验证码机制在输错第3次之后才出现、输错密码10次后页面锁定15分钟、爆破过程中多次返回503状态码等等。

1、登录失败连续5次锁定账号

本次爆破当时也是不知道还可以爆破用户名这回事,所以钻牛角尖的想去爆破admin账号,结果我成功了。现在回想起来是有借鉴的道理的,如果一个管理后台只有管理员账号,而我当时要是想着用户名枚举没成功的话,就不去爆破了,而错失这个经验了。所以这逻辑性漏洞很注重思维的扩散,以及平时的经验积累。

漏洞详细过程:

  • 在网站打开该端口发现是登陆页面,然后尝试弱密码登陆,发现页面提示连续输入5次密码错误则账号被禁止,当然验证码也未更新。

1606723381_5fc4a7356eae1b993813e.png!small?1606723382166

  • 抓取页面数据包,攻击类型选择Cluster bomb。

1606723440_5fc4a7701a8ed37633b5f.png!small?1606723440940

  • 发送到intruder模块,添加两个用户,开始交叉爆破。

1606723457_5fc4a78164654678a53b3.png!small?1606723458166

1606723463_5fc4a787e92c5f9da36c9.png!small?1606723464849

  • 成功登陆后台。

1606723521_5fc4a7c1c5703e92f2760.png!small?1606723522556

2、登录验证码机制在输错第3次之后才出现

这次测试也是一个突发奇想的尝试,然后就发现了这个漏洞。可能我还没形成固定的渗透过程,导致我想的会多一点,当时也是首先对登录点尝试弱密码登录,但是呢在第三登录失败验证码才迟迟来到。当时虽然验证码图片我可以靠pkav自动识别解决这个问题,但是我突然由于我是信息收集这个后台,并没有进行尝试爆破。再收集完信息之后,我再次登录这个页面的时候发现它登录界面还是没有验证码,我瞬间想到的是可能这个验证机制有问题,我直接抓包发现参数没有验证码变量,然后进行爆破尝试,成功绕过登陆点。所以逻辑性漏洞往往是在细心的发现,即使是一个爆破这样很常见的漏洞也要认真观察。

漏洞详细过程:

  • 在某次测试过程中,发现一个登陆点,刚登上去的时候是没有验证码机制的,在输错第三次的时候,验证码机制就出现在页面上。

1606723592_5fc4a808de96264b73a7b.png!small?1606723593667

1606723599_5fc4a80f4d5cf3b8d3972.png!small?1606723600127

抓取数据包,发现密码使用base64加密

1606723612_5fc4a81c45b3257e1c3d4.png!small?1606723612996

发送到intruder模块,添加变量,枚举密码为123456的用户账号,爆破错误显示账号密码错误。

1606723632_5fc4a830e1b15ecc33bb2.png!small?1606723633718

爆破成功了几个账号,经试验都可以成功登录。

3、输错密码10次后页面锁定15分钟

在登录页面输错后显示输错密码10次后页面锁定15分钟,可以尝试伪造ip来暴力破解,由于该漏洞忘记在哪发现,没有具体截图,以下仅为伪造ip方式的暴力破解其中之一。这个漏洞也是再使用pkav工具多了之后,立马想到的思路,虽然网站有限制,正是这种限制往往导致程序员懒得对ip和用户名这些做限制,所以我立马使用pkav伪造ip来爆破。

  • 打开pkav工具,点击左下角的重向选择。

1606723695_5fc4a86f869df36278a93.png!small?1606723696312

  • 在右上角有IP伪造选项。

1606723705_5fc4a879616f78fba45b1.png!small?1606723706144

4、 爆破过程中多次返回503状态码

因为pkav不能抓包,我通常会先使用burpsuite进行爆破,仔细观察了爆破结果才发现的,返回的结果有一半是200长度成功的,另外一半503长度只是服务器做的限制罢了,此时的我对于pkav的运用有一定的熟练度,立马想到使用pkav的重放功能绕过限制进行爆破。以前没接触这个工具的时候我可能就会放弃这个网站漏洞了,所以我认为不仅仅是局限于目前接触到的一套工具,要考虑每个工具的优缺点,将它们结合起来使用,可能你要花更多的时间去测试实践,但是实践过程也是一种心得,而不是仅仅依靠别人的分享。

  • 打开pkav,选择左下角的重放规则,在页面左下有重试规则。

1606723759_5fc4a8afacecec870403f.png!small?1606723760539

  • 由于当时爆破过程中,返回503页面出现服务器错误,然后在字符串匹配输入服务器错误,添加该匹配方式,勾上返回的数据中匹配如下表达式时重试选项。

1606723771_5fc4a8bb1f8c9b03b25f6.png!small?1606723771959

二、验证机制

由于程序员设计验证机制出现问题,导致攻击者可以进行暴力破解,碰到的实例有:无验证机制或验证码未更新、验证码较弱等。

1、无验证机制或验证码未更新

这个漏洞在测试过程中还是比较常见,不仅仅是去爆破admin用户的密码,也可以爆破用户名,枚举比较简单密码的用户名,以下为常见密码。对于密码这一块,我有一定的心得,如果密码是进行加密的,不过属于固定加密类型,虽然不知道加密规则,但是可以多次抓包收集弱密码字典进行枚举用户名。在其他项目过程中,不仅仅是提高其他技能,也可以提高渗透知识,将平时遇到的密码规则记录下来,即时运用到测试中就不会忘记。比如我就遇到好几个项目测试的时候,默认密码是888888或者88888888,这些默认密码都可以尝试,还有在巡检项目过程中,我进行弱口令扫描的时候,也知道了甲方是如何进行的密码设置规则的。因为系统的密码太多了,人是具有懒惰的天性的,虽然会按照密码复杂所需的英文、数字和符号结合起来,还是容易猜想。在8月8号我进行上线测试过程中,因为网站对于进行扫描测试的ip总会封禁,所以我手工注入密码尝试,突然想到了子域名加符号加数字的格式,类似于abc@123,然后直接登录了。可能有的人会想到就是偶然猜中了有什么用呢,不是的,这提供了思路,我会在之后的爆破中尝试自己生成字典进行爆破,类似这种格式组合,而不是再回到之前的一个常用字典爆破所有的登陆点。

1606723823_5fc4a8ef677500bb12ed4.png!small?1606723824342

2、验证码较弱

pkav是一个很不错的工具,可以识别比较简单的验证码图片,经过试验多次成功登录后台,但是要先对验证码图片进行自动识别测试,如果准确率可以在进行爆破,因为人眼容易识别的,机器未必可以正确识别。当然了,要结合重放功能使用,就是如果自动识别失败会返回验证码错误的字样,在重放功能添加返回包有验证码错误的字符串,pkav就会将自动识别验证码失败的进行再次识别爆破。

还有pkav线程不能开太大,不然会自动退出。

漏洞详细过程:

  • 登陆护网中某个网站,发现页面验证码简单,容易自动识别,开始尝试抓包。

  • 使用burpsuite抓包获取到密码也是明文,加大爆破力度,然后将数据包发送到pkav操作。

  • 尝试使用密码123456,然后爆破账户,爆破不成功的显示“用户名或密码输入不正确,登录失败!”,爆破成功的直接跳转了,这样得出密码为123456的一堆用户。

1606723994_5fc4a99a4bca0d46149e6.png!small?1606723995811

3、未验证用户名

漏洞详细过程:

  • 爆破过程中往字典失误添加了空账号,但是细心的发现爆破数据中空账号返回长度不一样,于是对返回数据包进行查看,发现返回结果含有true的字样,于是我尝试输入空账号登录页面,发现不行,再次进行抓包去掉账号,发送数据,当时我是选中截取返回包的选项,发现返回了true的响应包。当然我是事先知道正确密码的存在的,因为登录页面的默认密码是888888,我想到的是账号规则属于手机号哪一类型,那么我肯定枚举不了,但是我推测有人可能没有修改默认密码的,所以我选择使用该密码进行验证漏洞尝试。

  • 然后我一直forward,页面会未授权访问,自动跳转,登录成功。然后我又尝试了爆破用户名,发现账号!@#$%^和空账号返回的值一样。接着我尝试了使用!@#$%^绕过了登陆界面。在此次之后我每次都会尝试使用空账号绕过登陆界面,往用户名字典里添加空账号和!@#$%^。

4、任意用户登录

使用burpsutie抓包过程中,发现api接口出现参数仅有username=null,尝试修改null为admin,直接登陆管理员账号,尝试修改其他用户也可以成功。此处发现仅是偶然,因为接口自己出现了这个参数,不过下次可以尝试手动添加了,这个也算是接口没有对密码进行校验的。

漏洞详细过程:

  • 打开用户登录界面,对统一身份验证进行抓包

  • 然后forward,数据包会跳转到http://www.test.com/asset/main/logins.shtml,发现post表单数据带有username=null参数

  • 然后修改该参数,forward成功绕过