pikachu靶场练习
暴力破解
基于表单的暴力破解
随便输入一个用户名和密码,然后bp抓包
抓包送入intruder模块
选中第四个模式
为账号和密码分别导入自己的字典,就可以start attack开始爆破了
根据相应的长度判断是否登陆成功
爆破出一个简单的账号密码:admin/123456
验证码
验证码的生成:
前台点击图片时,后台生成验证码以及对应图片,并将图片响应给客户端
验证码的生成算法中一般包含随机函数,所以每次刷新都会改变
验证码的作用:
在每次登录时判断收到验证码与后台的验证码是否匹配
1、防止恶意爆破账号密码(例如上一个流程)
2、防止脚本的批量操作
验证码的认证流程:
1:客户端请求登录页面,后台生成验证码
2:客户端将认证信息和验证码一同提交,后台对提交的验证码与保存的验证码进行比较
3:客户端重新刷新页面,再次生成新的验证码
验证码绕过(on server)
随便输入账号密码以及正确的验证码后登录。
bp抓包,并转到repeater模块。
在该模块多次修改账号密码并发包时可以发现回显没有提示我们验证码错误,就说明此处的验证码在我们再次刷新之前应该都是有效的,或者说该验证码的存活时间比较长,而不是说每一次发包(登录)都会换一个验证码。
那这里就很简单了,输入一个正确的验证码,前台不刷新,intruder模块爆破即可。
验证码绕过(on client)
在客户端的验证码就更简单了,
抓包发现验证码对登录结果完全没有影响
你甚至可以直接删除输入框
删除源码
禁用js
等等都可以直接绕过客户端的验证码
token防爆破?
在这一步会生成一个隐藏的token
正常的登录是完全没有问题的,但是我们是来爆破的
每一次访问都会更改的token小小的加大了我们爆破的难度
不过这一点bp还是可以做到的
尝试了一下,同时爆破用户名、密码、token的方法行不通
pitchfork两个字段各自遍历各的,达不到爆破用户的要求
cluster bomb会吧token也算入笛卡尔积,那就完全废了
所以这里我们半自动自己改用户名
开始正题
老样子加上§§
在option界面,看到responses也能大致猜到这块内容是从页面回显拿东西
下面选中always(也就是让我们每爆破一次就要获取和发送一次token值)
设置为单线程,多线程的访问会相互影响token值
为了方便查看也可以直接将成功结果写入正则
账号密码分别导入字典后,token位选中grep,并写入初值
开始攻击,可以发现token成功的更换,我们也能成功的爆出账号密码
暴力破解小结
防爆破的一些手段
让验证机制不止局限在验证码,图形验证,滑动验证等都可以参考
对认证错误给出次数限制,超出次数就锁定账户一段时间
使用多因素认证
Cross-site scripting(跨站脚本攻击)
XSS简介(百度百科)
XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。
三种XSS类型(百度百科)
危害:存储型 > 反射型 > DOM型
(1)存储型:最直接的危害类型,跨站代码存储在服务器(数据库)。
(2)反射型 :反射型跨站脚本漏洞,最普遍的类型。用户访问服务器-跨站链接-返回跨站代码。
(3)DOM型:DOM(document object model文档对象模型),客户端脚本处理逻辑导致的安全问题。
基于DOM的XSS漏洞是指受害者端的网页脚本在修改本地页面DOM环境时未进行合理的处置,而使得攻击脚本被执行。在整个攻击过程中,服务器响应的页面并没有发生变化,引起客户端脚本执行结果差异的原因是对本地DOM的恶意篡改利用。
攻击流程
(1)找到恶意代码注入点,如输入框。
(2) 在测试网页过滤后,构造恶意代码。
(3)测试恶意代码是否能被网页正确解析,造成xss攻击。
反射型xss(get)
给了一个输入框,先试一下<script></script>
看源码可以发现代码嵌入网页了
尝试输入<script>alert('a')</script>
发现写不完,原因是次出最大长度限制,删除html代码或者直接写在url栏都可以绕过。
成功执行了alert(‘a’)
反射型xss(post)
既然他说要获取cookie,那我们就写一个
<script>alert(document.cookie)</script>