WEB漏洞—逻辑越权之验证码与Token及接口

WEB漏洞—逻辑越权之验证码与Token及接口

Snipaste_2022-05-20_18-07-27

1.验证码安全

分类:图片,手机或邮箱,语音,视频,操作等

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

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

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

—验证码爆破:没有次数限制,验证码有效时间内不变

—验证码识别:用工具识别验证码

—复用:用上一次的验证码来绕过下一次的验证

—回显:验证码在前端数据包显示

—绕过:逻辑上的绕过,直接跳过验证码

2.token 安全

#基本上述同理,主要是验证中可存在绕过可继续后续测试

—token 爆破—token后面会跟上一个字符串,如果知道规律可以进行爆破

—token 客户端回显—token的数据会在前端数据包(request)里面显示

—token固定—虽然有token,但是可以通过上一次的token操作下一次的数据包(表面上有,实际没有)

1
2
3
1、Token的引入:Token是在客户端频繁向服务端请求数据,服务端频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否,并作出相应提示,在这样的背景下,Token便应运而生。

2、Token的定义:Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。

逻辑漏洞

工具介绍

Snipaste_2022-05-21_10-17-18

优点:简单易懂,操作方便

缺点:这个不可以和那个burp之类的工具进行联动,还有就是这个不可以安装一些插件,扩展性不太可

这里建议用这个亦思的引擎,这个的准度比另一个高一点,但是还是误报很多

burp安装两个插件

Snipaste_2022-05-21_10-33-54

后续操作,这个接口调用的需要充一下钱,就不演示了

pikachu靶场演示

第一个服务端验证

抓包分析,之后发现存在验证码复用的问题,及抓包一个正确的验证码,然后进行爆破,就可以了。

第二个客户端验证

前端验证和后端验证之前说过,后端验证就是看不到源代码,因为抓到的代码是执行之后的代码,前端验证就是将验证代码写在了js中,但是也有一种情况就是引用的js文件,这样的话就需要在抓包的时候留意一下js的文件

摩根金控(网站已经打不开了)

随便给一个变量,然后用burp的模块,使其多次发包

Snipaste_2022-05-22_19-53-33

这里只能成功一个包的原因,是因为同一个手机号的只能隔60秒的时间才可以再次发送一个验证码。

Snipaste_2022-05-22_19-57-55

pikachu靶场token验证

Snipaste_2022-05-22_20-08-40

可以看到这里是有一个token的值的

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

类似枚举遍历

遇到以上这类请求接口时,可以尝试配合intruder模块,枚举ID值,看能否获取其他编号对应的用户信息

造成这类问题的原因是水平越权

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

callback安全

简要说明:

  • 1.由于浏览器的同源策略(域名,协议,ip端口相同),非同源域名之间传递会存在限制。
  • 2.JSONP(用于解决跨域数据传输的问题,利用了HTML里元素标签的开放策略src引入Js文件,远程调用动态生成JSON文件来实现数据传递,并以任意javascript的形式传递,一般使用 Callback(回调函数返回,由于没有使用白名单的方法进行限制Callback的函数名,导致攻击者可以自定义Callback内容,从而触发XSS等漏洞)由浏览器的javascript引擎负责解释运行。

原理分析:

  • 1.接口开发时,接收回调函数的参数值在进行拼接前未对恶意数据进行合理化处理,导致攻击者插入恶意的HTML标签并在返回的JSON数据格式原样输出;
  • 2.同时服务端未**正确设置响应头content-type,**导致返回的json数据被浏览器当做Html内容进行解析,就可能造成xss等漏洞。

测试切入点:

  • 1.一个使用jsonp技术的接口,参数中包含回调函数的名称(jasonp,callback,);
  • 2.服务端返回的json数据时,响应头为 content-type: text/html;
  • 3.服务端未对回调函数参数进行过滤净化。

测试步骤:

  • 1.设置代理到burpsuite;
  • 2.网站根目录开始爬取,重点关注Ajax异步(一般页面只会局部刷新)处理的网页,关注重点业务;
  • 3.在HTTP history 标签页过滤功能过滤关键词 Callback,jasonp,等请求,找到URL带有Callback参数的链接。勾选Filder by file extension中的Hider,隐藏js、gif等后缀的URL);
  • 4.查看URL对应得HTTP Response的Content-Type类型是否为text/html且内容是否为json形式(带有json数据的函数调用),如果是我们输入的HTML标签才会被浏览器解析;
  • 5.将对应的请求发送到Repeater。在callback参数值的前面加一些类似HTML的标签,如,如callback=Testjsonp1,Go之后发现Response的内容有无影响(HTML有无被转义,没有转义则存在漏洞)。也可将callback参数换为有恶意行为的HTML标签,如callback=<img οnerrοr=alert(document.cookie) src=x />jsonp1

防御修复方案:

  • 1.定义HTTP响应中content-type为json数据格式,即Content-type:application/json;
  • 2.建立callback白名单,如果传入的callback参数值不在名单内就阻止继续输出,跳转到异常页面;
  • 3.对callback参数进行净化,包括不限于html实体编码,过滤特殊字符< > 等。

原文链接:https://blog.csdn.net/weixin_42519551/article/details/104578440

上述在实战中如何做到漏洞发现-bp功能点

爬虫整个网站–>搜索特定关键字(比如cheackcode,id,callback等)–>快速精准找到有逻辑漏洞的点–>针对性测试

1
2
3
4
5
6
7
https://www.lanzous.com/i1z2s3e 或者 https://sec.kim/wp-content/uploads/2021/01/PKAV-HTTP-Fuzzer-1.5.6.zip

https://www.cnblogs.com/nul1/p/12071115.html

https://github.com/c0ny1/captcha-killer/releases/tag/0.1.2

https://github.com/bit4woo/reCAPTCHA/releases/tag/v1.0