代码审计(Java)——WebGoat_AuthenticationFlaws

 零、Secure Password

  这里没什么可审计的,经典的爆破,定期更换复杂度相当的密码吧……

一、Password reset

  1.level2

  这里题目给出的信息是登录自己的WebWolf,密码是从e-mail得到的,那就开始吧~

  这里我的WebWolf不能正常访问,但是所有功能以及运行是没问题的,就先不管了,反正主要是审计,问题大概出现在jar包里面,回头再看吧~

  这里可以看41行,题目通过的答案就是你的用户名@webgoat.org,密码是用户名的反转,下面找一下password~

  这里也能看到,WebWolf里面应该会显示这个内容,打不开就算了,随缘能运行就行……

  忽然发现这个题目WebWolf就是多此一举,根本不用回显一个邮件告诉你密码,直接反转用户名就好了……还得是代审,答案就在题目里的感觉真棒~

   2.level6

  说实话被这里的题目难住了,题目说有一个random token,要拿到它才可以成功修改密码。怎么拿到呢,这方面的经验确实不多(再次感叹,自己真的是太菜了……),直接审计吧,看看是个什么思路~

  其实这个level,与其说是积累经验,不如说是单纯为了这个题目而积累的方法,这里就是点击修改密码后,访问http://localhost:9090……/creat-password-reset-link路径,然后就可以触发fakeClickingEmail函数,从页面回显中拿到token……好吧,也可能是我确实积累的太少,这个方式都没想到过……

  所以这里感觉修复方式没什么特别的,改掉回显或者是修改if逻辑吧,感觉没什么可改的……

 

二、Authentication Bypasses

  随便输一个看看有没有明显有区别的回显,然后思路就模糊了,根据代审解题吧还是哈哈……上源码吧

  这里可以看到这样的逻辑——只要是键值中包含"secQuestion"字段,就会把值put进Map里

  然后跳转到进行判断的类,这里看的就很明显了,值判断了键值个数+secQuestion0+secQuestion1三中返回值为false的情况,其他都返回true。问题就是出现在这里了~

  修复思路其实就很明显了,这里之前的问题在于逻辑判断,这里只设置符合问题的答案返回true,其他均为false就行了~

 

posted @ 2022-08-20 09:27  wavesky  阅读(129)  评论(0编辑  收藏  举报