Skip to content

Latest commit

 

History

History
667 lines (478 loc) · 26.8 KB

File metadata and controls

667 lines (478 loc) · 26.8 KB

IDOR

整个部分结构大部分基于乌云的几篇密码找回、逻辑漏洞类文章,在其基础上记录和归纳


免责声明

本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.


大纲


文章 & Reference

案例

相关工具


实战渗透测试中,web 的攻防一直是重中之重,而无论是对于富有经验的老手黑客和新手脚本小子来说,相比 SQL 注入、XSS 漏洞等传统安全漏洞,逻辑漏洞都是最具价值的。这类漏洞往往危害巨大,可能造成企业的资产损失和名誉受损,并且传统的 WAF 设备和防护措施收效甚微。


认证绕过

相关文章

未授权访问

非授权访问是指用户在没有通过认证授权的情况下能够直接访问需要通过认证才能访问到的页面或文本信息.可以尝试在登录某网站前台或后台之后,将相关的页面链接复制于其他浏览器或其他电脑上进行访问,看是否能访问成功.


身份认证绕过

相关文章

Cookie & Session

加密测试

  • 前端加密,用密文去后台校验

    1. 可以使用 burpsuite 的 payload processing 功能,把字典按照加密方式先加密再发包
    2. 用字典生成工具生成加密好的字典,pydictor 内置 encode 功能可以支持

调式代码 00000 null %00

修改返回值

  • 思路
    HTTP/1.1 404 Not Found
    ...
    {"code": false}
    
    HTTP/1.1 404 Not Found
    ...
    {"code": true}
    

修改状态码

  • 思路
    HTTP/1.1 404 Not Found
    ...
    {"code": false}
    
    HTTP/1.1 200 OK
    ...
    {"code": false}
    

密码重置

相关文章

参数污染

用户凭证暴力破解

像是四位或者六位纯数字的验证码,对验证码进行暴破,未作限制的情况下,很快就会得到结果了

返回凭证

邮箱弱token

用户凭证有效性

重新绑定

服务器验证

用户身份验证

找回步骤

本地验证

注入

Token生成

注册覆盖

Session覆盖


验证码突破

相关文章

验证码暴力破解

验证码不刷新

在一段时间内只要不刷新页面,无论登录失败多少次都不刷新验证码,这个时候就可以使用同一个验证码根据上面的方式进行暴力破解

验证码失效

不管在验证码表单输入什么样的数据,都会判断通过,但这种情况很少见

验证码绕过测试

当第一步向第二步跳转时,抓取数据包,对验证码进行篡改清空测试,验证该步骤验证码是否可以绕过.对于 request 数据: user=admin&pass=1234&vcode=brln,有两种绕过方法:

  1. 一是验证码空值绕过,改成 user=admin&pass=1234&vcode=;
  2. 一是直接删除验证码参数,改成 user=admin&pass=1234.

验证码 js 绕过

短信验证码验证程序逻辑存在缺陷,业务流程的第一步、第二部、第三步都是放在同一个页面里,验证第一步验证码是通过 js 来判断的,可以修改验证码在没有获取验证码的情况下可以填写实名信息,并且提交成功.

万能验证码

渗透测试的过程中,有时候会出现这种情况,系统存在一个万能验证码,如 0000、9999,只要输入万能验证码,就可以无视验证码进行暴力破解.


Ticket_Trick

相关案例


授权绕过

越权测试

越权漏洞的成因主要是因为开发人员在对数据进行增、删、改、查询时对客户端请求的数据过分相信而遗漏了权限的判定.

Tips

相关文章

垂直越权(垂直越权是指使用权限低的用户可以访问权限较高的用户)

水平越权(水平越权是指相同权限的不同用户可以互相访问)


执行顺序绕过

  1. 部分网站逻辑可能是先 A 过程后 B 过程然后 C 过程最后 D 过程.

  2. 用户控制着他们给应用程序发送的每一个请求,因此能够按照任何顺序进行访问.于是,用户就从 B 直接进入了 D 过程,就绕过了 C.如果 C 是支付过程,那么用户就绕过了支付过程而买到了一件商品.如果C是验证过程,就会绕过验证直接进入网站程序了.


race_condition

相关文章


限制绕过

IP限制绕过

如果登录系统设置了 IP 地址白名单,我们可以通过修改 http 头字段伪造 IP 地址

或者直接修改 host 头

curl -v -H "Host: localhost" https://target/
wget -d --header="Host: localhost" https://target/

时间限制绕过

时间刷新缺陷

时间范围测试

针对某些带有时间限制的业务,修改其时间限制范围,例如在某项时间限制范围内查询的业务,修改含有时间明文字段的请求并提交,查看能否绕过时间限制完成业务流程.例如通过更改查询手机网厅的受理记录的 month 范围,可以突破默认只能查询六个月的记录.


JS绕过

相关案例

最大数限制突破

很多商品限制用户购买数量时,服务器仅在页面通过 js 脚本限制,未在服务器端校验用户提交的数量,通过抓包修改商品最大数限制,将请求中的商品数量改为大于最大数限制的值,查看能否以修改后的数量完成业务流程.

本地 js 参数修改

部分应用程序通过 Javascript 处理用户提交的请求,通过修改 Javascript 脚本,测试修改后的数据是否影响到用户.


接口利用

相关文章

相关案例

学习资源

BOLA

Broken Object Level Authorization

这个是 OWASP API Security Project 中的一种漏洞,和 IDOR 很像,我的理解就是 API 渗透中的越权

相关文章

相关案例

Tips

部分内容来自 [A Deep Dive On The Most Critical API Vulnerability — BOLA (Broken Object Level Authorization]、[31 Days of API Security]

  • FUZZ 接口路径、接口名
  • 大小写替换
    • userinfo/view
    • userINFO/VIew
  • 测试不同版本的 API 接口
    • /v1/userinfo/view
    • /v2/userinfo/view
  • 添加后缀
    • userinfo/view.json
    • userinfo/view.action
  • 内容注入
    • userinfo/view?id=123
    • userinfo/view?id=*
    • userinfo/view?id=ABC
    • userinfo/view?id=123ABC
    • userinfo/view?id=123ABC!@#
    • userinfo/view?id=1+2+3
    • userinfo/view?id=1%203
  • 添加参数
    • userinfo/view
    • userinfo/view?id=xxx
  • 数组
    • {"id":xxx}
    • {"id":[xxx]}
  • JSON 对象
    • {"id":xxx}
    • {"id":{"id":xxx}}
    • {"id":{"id":[xxx]}}
  • 去 JSON
    • {"id":xxx}
    • id=xxx
  • 更改请求内容类型
    • Content-type: application/xml
    • Content-type: application/json
  • 通配符
    • {""id"":""*""}
  • 尝试执行 JSON 参数污染
    POST api / get_profile
    {"user_id":<legit_id>"user_id":<victim's_id>}
    {"id":2,"id":1}
    POST api / get_profile
    {"user_id":<victim's_id>,"user_id":<legit_id>}
  • 尝试执行 HTTP 参数污染:
    • userinfo/view?id=xxx
    • userinfo/view?id=xxx&id=yyy
    • userinfo/view?id=xxx&id=yyy,zzz
  • 查找未启用授权机制的 API 主机、或 API 节点
  • 测试不同平台的 API 点、如 APP、微信公众号
  • 尝试使用 GET/POST/OPTIONS/PUT/TRACE 等方法
  • DOS
    • limit=999999999
  • 测试该 API 是否支持 SOAP,将内容类型更改为 application/xml ,在请求正文中添加简单的 XML,然后查看 API 如何处理它。

数据篡改

商品编号更改

例如积分兑换处,100 个积分只能换商品编号为 001,1000 个积分只能换商品编号 005,在 100 积分换商品的时候抓包把换商品的编号修改为 005,用低积分换区高积分商品.

金额数据篡改

抓包修改金额等字段,例如在支付页面抓取请求中商品的金额字段,修改成任意数额的金额并提交,查看能否以修改后的金额数据完成业务流程.

商品数量篡改

抓包修改商品数量等字段,将请求中的商品数量修改成任意数额,如负数并提交,查看能否以修改后的数量完成业务流程.


重放攻击

在短信、邮件调用业务或生成业务数据环节中(类:短信验证码,邮件验证码,订单生成,评论提交等),对其业务环节进行调用(重放)测试.如果业务经过调用(重放)后被多次生成有效的业务或数据结果.

相关文章

恶意注册

目标业务注册流程不规范,使用抓包工具抓包可捕获创建用户的请求包,修改发包可以直接注册用户

短信炸弹

在测试的过程中,我们发现众多的金融交易平台仅在前端通过 JS 校验时间来控制短信发送按钮,但后台并未对发送做任何限制,导致可通过重放包的方式大量发送恶意短信.

内容编辑

点击"获取短信验证码",并抓取数据包内容,通过分析数据包,可以发现参数的内容有客户端控制,可以修改为攻击者想要发送的内容


DoS

相关文章

资源生成大小可控

当遇到请求验证码或二维码请求参数可控时,可以尝试修改图片尺寸参数,例如将原本长宽 20x20 尺寸的请求,改为 2000x2000 查看返回的图片尺寸是否修改.

Zip 炸弹

当遇到相应业务允许上传模板文件时,可以尝试上传 zip,当存在自动解压条件时,可通过非递归 zip 炸弹文件耗尽服务器资源.

Xml DoS

在 XXE 漏洞中常见的一种攻击方式,当服务端解析 xml文档,通过迭代解析和远程解析巨大文件,造成服务器资源的占用.

  • Denial-of-Service
  • External Entity
  • Internal Entity

reDOS

Regular expression Denial of Service

实际上开发人员使用了正则表达式来对用户输入的数据进行有效性校验, 当编写校验的正则表达式存在缺陷或者不严谨时, 攻击者可以构造特殊的字符串来大量消耗服务器的系统资源,造成服务器的服务中断或停止。常见的点如注册时检查密码是否包含用户名。

API参数可控

当查询请求或插入请求参数可控时,一般我们会认为存在数据泄露、批量XXX漏洞,但这里也存在占用服务器资源的利用点,当无法实际越权时,可以尝试加大参数,或缩短时间间隔,耗尽服务器资源。

Infinite loop

通过控制参数,让服务器无限循环某个请求处理,从而消耗服务器资源.