admin管理员组

文章数量:1616808

 

 token是类似于会话一串数字代表数据包的唯一性,数据包的编号,防止一些csrf,或者一些存放数据包的攻击;一般数据包里面有token,就会检验数据包的唯一性,就会造成提交数据包,被token拦截掉。

验证码,很多事情都需要验证码,如果可以绕过的话,就可以实现一些功能,比如密码修改绕过,后台登陆爆破账户密吗,经常次数过多会出现验证码。

这两个问题不是漏洞,是我们在测试的时候遇到会干扰我们,在对方没有考虑到绝对安全下我们是可以突破的。

绕过方式,主要还是看对面程序怎么验证

1.爆破,token通常跟上一副字符串,如果可以知道规律的话,就可能实现爆破,猜测它下一次的东西

2.回显,类似于讲过的本地回显,token值会在前端进行显示,我们只需要让token值和前端显示的一样,实现绕过数据包唯一性检测

3.固定,虽然有这个token,但可以通过上一次的token操作下一次的数据包,没有检测唯一性,表面上看着有,实际上没有, 

验证码呢绕过方式

1.爆破,之前讲过,主要手机或邮箱收到的验证码

2.识别,就是我们看到的图像的那种,可以进行简单的识别,主要是针对于网站的验证码,输入正确的验证码才能进行收到验证码短信那种,有这个识别就可以帮助爆破这样的网站。

3.复用,和固定有点类似,网站验证码是1234,他下一个数据包还是可以使用,这就是复用,

4.回显,验证码在浏览器的前端或者数据包里面可以看到,只需要数据包里面验证码保持一致就可以。

5.绕过,逻辑上问题。看着有检测实际上,可以通过一些手段绕过。

#验证码安全

分类:图片,手机或邮箱,语音,视频,操作(拉鼠标)等 ;图片里面的字符串可以识别,别的像操作就太复杂了。

原理:验证生成或验证过程中的逻辑问题

危害:账户权限泄漏,短信轰炸,遍历,任意用户操作等

漏洞(绕过手段):客户端回显(已讲),验证码复用,验证码爆破(已讲),绕过等 

讲他的原因,我们在测试或者利用的过程中,他会干扰我们,所以我们要绕过它才能进行下去。

##验证码识别插件及工具操作演示-实例

验证码识别插件工具使用

captcha-killer,Pkav_Http_Fuzz,reCAPTCHA等

打开网站

 

 而这个的使用方法,就是目标网站输入上去,然后图片的验证码的连接单独打开,抓住访问的的数据包,复制到这个工具上来,不复制cookie,然后就可以识别图中的字符串了,

这个已经不更新了,更推荐使用插件

插件下载好指甲应用到burp里面

 添加之后,找到插件存放的位置选中它之后下一个,之后就添加成功了。

演示一下怎么使用这个插件,

跟刚刚的同一个网站,抓住图片验证码的数据包, 

 发送到插件哪里去,到哪里还需要再配一个接口url,直接用免费的百度识别吧,因为另一个匹配度好的收费,五百一元钱  链接:http://api.ttshitu:80

 之后使用的时候,把验证码也变成变量字典,然后设置它的字典运用到插件就好了。网上有教程。仅限于图片类型。

验证码分为两种验证,一种是本地验证很方便绕过,第二种是远程绕过,他一些代码或者逻辑问题所造成的绕过思路,凡是绕过都能涉及到对方的验证情况,一种是本地验证,这种验证可以人他禁用或者跳过;后端验证,看对方逻辑是怎么验证有没有绕过的可能性。

##验证码绕过本地及远程验证-本地及实例

打开pikachu靶场

 对这个靶场有验证码,先登录一个错误的账户密码,输入正确的验证码看他的系统返回什么,返回的什么账户或密码不

在登陆一个正确的账户密码,输入一个错误的验证码,看看他返回的什么,返回的验证码错误。

所以想要开始爆破的话,要先进行验证码绕过,我们看一下他的验证码能不能复用,就是输入错误的账号密码,正确的验证码,然后抓住数据包,发送到重发器,在重发器里面看一下回显,回显里面有账户或密码错误。

这时候我们在重发器里面的数据包,修改一下账户密码,不管验证码,在发一次看看,返回的还是账户或密码不存在,就证明他没有复用验证,不是一个数据包一个验证码,可以使用复用

 为什么会出现这个漏洞,我们代码审计一下

 这里也有提示写的很明白了,应该销毁掉vcode,安全问题就是因为他没有销毁,你在输入验证码对方有一个s型的临时地方储存这个验证码,而没有销毁的话就表明这个验证码还在,下次提交只要和之前能比对上,就算正确。

解决办法就是验证码比对完之后,直接删除。这是一个逻辑问题造成的

#本地验证,就是客户端验证

 怎么区分是前端还是后端验证,如果对不是html,java混编的代码一般就是后端验证,如果你在里面看到了验证代码,验证过程那就是前端验证;后端语言是编译的,前端看到的和后端不一样,而前端语言代码都是一致的,

区分很简单的只需要看代码,看能不能在代码里面看到类似jsscript的代码是否有验证,有就是前端,没有就不是前端验证。还有一种情况是源代码看不到,加载了js文件,我可以把代码封装到创建的文件里面,假如墨者叫1.js,然后在代码里面一串的这样的文件

 就以jsscript调用这个文件,

 网站就会加载1.js这个文件,然后在1.js看他的相应过滤。

这就是判断文件,一般验证文件就是js文件,去看js就可以了。

本地验证,只要本地不拦截,后面就不会拦截,这就是本地验证,

这一关就写一个正确验证码提交上去,就可以了,和上一个不一样的原因,因为这个是前端验证,只要能从本地的接口,对方就会直接接受,所以这个如果一次就可以一直用这个数据包,因为他已经从本地验证通过了,能发出去了。

实例

 这个实例讲的是怎么信息轰炸,调用那个非法网站的短信接口,抓住这个发短信的数据包,写一个程序隔一分钟发一次短信。

##Token客户端回显绕过登录爆破演示-本地

token值,唯一性的编号,有这个的话,每一个数据包的token值都不一样,判断数据包的来源,同时检测数据包,

随便输入个账户登录抓一下数据包 

 绕过第一个方法,爆破,能识别出token值的加密,就能知道下一次会出现什么东西,看他的token的规律性能不能判断出,几率很小。

第二个方法,客户端回显,当前数据包里面有和token值一样的东西,

 这个token会在页面中有显示,这就是一个逻辑安全问题,

再有回显漏洞的基础该怎么去爆破

数据包发到测试器去

 在同一个页面往下滑,找到红色框住的字符串,然后添加里面找需要的token值,

 点ok

 

这时候就设置完了,开始攻击,z这是返回的结果,回显200就代表的尝试成功了。 

为什么选择那个token值呢,因为他是返回后的token值,就是数据包发过去之后,新的一个网站的生成的新token值,所以就要用到这个新产生的token值,就以新产生的token值,写在数据包里面,检测的时候就可以绕过token唯一性检测,刚好可以继续攻击。

##某URL下载接口ID值调用遍历测试-实例

这个意义:假如要找是否有水平越权的漏洞,比如xiaodi用户的uid是10,我们就要试着把uid从1跑到1000看看能不能得到其他编号的用户里面,获得信息,操作参数值看一下有没有水平越权这种肯定,这只是一种思路。

##Callback自定义返回调用安全-漏洞测试-实例

callback(回调),网站或app有涉及到调用别人接口的时候,就会涉及到callback,

举个例子;付款完之后,对方怎么判定付款的成功与失败,取的回调结果,回调的东西会有响应的解释操作,这个过程中又涉及到接受,callback统称为接口安全。

在这个接口调用的时候,对方判断标准会采用这个回调,我们看一下对方的回调,回调的数据能不能进行操作,实现一些操作。

 把回调值修改跨站注入语句,把前面闭合一下,操作操作不就是一个跨站漏洞,他接受回调值的话,

这个网站也有这个callback回调值,把回调值进行更改,页面里面的回调值也会更改。这个是百度的,理论是发现了跨站漏洞,但是万一他是固定值,或者严谨的过滤还是没有了。

更改之后他会不会接受,有没有严谨的过滤,网站是否还能正常打开,这都是考虑因素。

能指定网站我该怎么分析这个漏洞,做好一个爬虫的准备。等等

演示一些brup的使用

打开目标网站,抓一下数据包,然后发送爬虫攻击

 爬完之后这里就会展示网站的对应结构

 然后在这里还有很多爬虫请求的数据包

 里面就会有数据包请求和回显结果,

 

 就出现了搜索选项,

 就可以实现对网站的功能参数快速搜索,

 然后点那个全部显示就好了,就显示晒寻的数据包了

 用burp去帮你筛选可以操作的参数,东西,这个意思,接受可以大大帮助你缩短时间,寻找对应的数据包和参数点,保留找uid就是找编号型。

然后tburp自带扫描一般,他支持导出数据包,然后再用别的专业扫描工具取扫描数据包,扫描漏洞

本文标签: 验证码逻辑接口Token