72
WEB 攻防-业务逻辑篇&水平越权&垂直越权&未授权访问&检测插件&SRC 项目

逻辑越权-检测原理-水平&垂直&未授权

1、水平越权:同级别的用户之间权限的跨越
2、垂直越权:低级别用户到高级别用户权限的跨越
3、未授权访问:通过低级别或无级别用户能访问到需验证应用
PHPStudy + Metinfo4.0 + 会员后台中心

逻辑越权-检测项目-BURP插件&对比项目

1、检测插件:
https://github.com/smxiaz/xia_Yue
https://github.com/VVeakee/auth-analyzer-plus
2、检测项目:
https://github.com/ztosec/secscan-authcheck
https://github.com/y1nglamore/IDOR_detect_tool

测试方式:观察数据包 修改数据包
实战:
关键:找到当前用户相关的参数名参数值,添加返回包的参数尝试
请求数据加密:JS中找逆向算法,还原算法重新修改发包
测试请求包带token:直接复用和删除测试

73天
WEB 攻防-支付逻辑篇&篡改属性值&并发签约&越权盗用&算法溢出&替换对冲

支付逻辑常见测试:

1、熟悉常见支付流程
选择商品和数量-选择支付及配送方式-生成订单编号-订单支付选择-完成支付
2、熟悉那些数据篡改
商品ID,购买价格,购买数量,订单属性,折扣属性,支付方式,支付状态等
3、熟悉那些修改方式
替换支付,重复支付,最小额支付,负数支付,溢出支付,优惠券支付等
4、熟悉那些另类方法
无限试用,越权支付,并发兑换,四舍五入半价购,循环利用优惠券,支付签约逻辑等

支付逻辑如何挖掘:

1、找到关键的数据包
可能一个支付操作有三四个数据包,我们要对数据包进行挑选。
2、分析数据包
支付数据包中会包含很多的敏感信息(账号,金额,余额,优惠等)
要尝试对数据包中的各个参数进行分析。
3、不按套路出牌
多去想想开发者没有想到的地方,如算法拼接,关闭开启返优惠券等
4、PC端尝试过,APP端也看看,小程序也试试

支付逻辑安全修复:

1、在后端检查订单的每一个值,包括支付状态;
2、校验价格、数量参数,比如产品数量只能为整数,并限制最大购买数量;
3、与第三方支付平台检查,实际支付的金额是否与订单金额一致;
4、如给用户退款,要使用原路、原订单退回。如:退押金,按用户原支付订单原路退回;
5、加密、解密、数字签名及验证,这个可以有效避免数据修改,重放攻击中的各种问题;
6、金额超过指定值,进行人工审核等。

74天
WEB 攻防-机制验证篇&重定向发送&响应状态码&跳过步骤&验证码回传&枚举

验证码突破-回传显示&规律爆破

演示:某APP验证码爆破 某目标回显显示
1、通过手机找回密码,响应包中包含短信验证码。
2、找回密码时使用位数较少的短信验证码,或者验证码没有设置有效时间限制,导致攻击者借助自动化工具在一定时间范围内爆破获得短信验证码,从而导致重置任意账号密码。

验证目标-重定向发送&重定向用户

演示:某CMS重定向用户 某CMS重定向发送
1、当我们输入正确的手机号和正确的短信验证码,然后进入重置密码的最后一步,也就是输入新的密码,输入密码后提交到服务端的post数据包需要包含当前用户的身份信息。
而一般网站是通过用户名或用户ID来标识用户身份的,如果这个用户名或用户ID没有和当前手机号、短信验证码进行绑定。也就是说服务端只验证用户名、ID是否存在,而不去验证用户和当前手机号是否匹配,那么我们就可以通过修改用户名、ID去修改其他用户的密码了。当然可以修改的地方不限于找回密码的数据包,比如修改资料的地方也可能存在这样的漏洞。
2、如果数据包存在发送验证邮箱或目标地址,尝试修改到自己接受地,实现拦截获取

验证逻辑-修改响应包&跳过步骤URL

演示:某APP 修改响应包 某APP 跳过步骤URL
1、通过手机找回密码一般需要短信验证码验证,服务端需要告诉客户端,输入的验证码是否正确,如果客户端收到true的信息,那么就会向带着true的信息向服务端请求进入下一步,而服务端收到true的信息,就会允许客户端进入下一步,反之,如果是false的信息,服务端就不会允许客户端进入下一步。也就是说我们进入下一步的关键是让服务端收到客户端的true信息,而借助burpsuite,我们可以修改服务端返回到客户端的信息,这样一来,我们就可以输入任意短信验证码,然后将服务端返回的false信息改为true 就可以绕过短信验证码的验证了。
2、找回密码流程一般需要四个步骤:
流程:验证用户名-验证短信验证码-输入新密码-重置成功
这四个步骤应该紧紧相连,互相相关,只有通过了第一个步骤验证才可以进入下一个步骤,如果每个步骤之间没有进行关联性验证,就可能导致跳过关键验证步骤,从而导致重置任意账号密码。

75天
WEB攻防-验证码安全篇&接口滥用&识别插件&复用绕过&宏命令填入&滑块类
验证码识别绕过等技术适用于:
口令存在爆破,接口枚举调用,任意用户注册等安全问题
1、验证码简单机制-验证码过于简单可爆破
2、验证码重复使用-验证码验证机制可绕过
3、验证码智能识别-验证码图形码被可识别
4、验证码接口调用-验证码触发接口可枚举

图片验证码-识别插件-登录爆破&接口枚举

自带白嫖版:https://github.com/smxiazi/NEW_xp_CAPTCHA
1、Burp 加载插件
2、运行监听 py 文件
3、设置插件-验证码地址
4、数据包验证码填入参数
5、发包线程设置 1 后开始

接口收费版:https://github.com/smxiazi/xp_CAPTCHA
1、Burp 加载插件
2、注册接口账号充值
3、设置插件-填入账号
4、数据包验证码填入参数
5、线程设置为1

图片验证码-重复使用-某APP短信接口滥用

删除验证码字段进行绕过或直接使用
Token sign 验证码等直接重复使用测试

滑块验证码-宏命令-某Token&Sign&滑块案例

https://blog.csdn.net/shuryuu/article/details/10457659
同理也可以适用在Token,sign在页面代码中自动获取自动填入后绕过验证

76天
WEB攻防-Fuzz模糊测试篇&JS算法口令&隐藏参数&盲Payload&未知文件目录
1、Fuzz
是一种基于黑盒的自动化软件模糊测试技术,简单的说一种懒惰且暴力的技术融合了常见的以及精心构建的数据文本进行网站、软件安全性测试。

2、Fuzz的核心思想:
口令 Fuzz(弱口令)
目录 Fuzz(漏洞点)
参数 Fuzz(利用参数)
PayloadFuzz(Bypass)

3、Fuzz 应用场景:
-爆破用户口令
-爆破敏感目录
-爆破文件地址
-爆破未知参数名
-Payload 测漏洞(绕过等也可以用)

在实战黑盒中 目标有很多不显示和常用工具扫面不到的文件或目录等 就需要用字典fuzz

4、Fuzz 项目:
https://github.com/fuzzdb-project/fuzzdb
https://github.com/TheKingOfDuck/fuzzDicts
https://github.com/danielmiessler/SecLists

Fuzz 技术-用户口令-常规&模块&JS 插件

https://github.com/c0ny1/jsEncrypter

第77天:
WEB攻防-业务设计篇&隐私合规检测&URL重定向&资源拒绝服务&配合项目

隐私合规-判断规则&检测项目

对象:APP 小程序等
具体:后续APP安全课程
-https://appscan.ly.com/
-https://github.com/bytedance/appshark
某SRC规则参考:https://mp.weixin.qq.com/s/tgEZth3TFyyis_EBrQ5PhQ
相关:mobsf

URL 重定向-检测判断&钓鱼配合

URL 重定向漏洞(URL redirection vulnerability),是一种常见的 Web 安全漏洞,由于网站 URL 重定向功能设计不当,没有验证跳转的目标 URL 是否合法,用户可通过此漏洞跳转到任意网站,这会导致可通过该网站跳转到存在木马、病毒的网站或者钓鱼网站,国外大厂的一个任意 URL 跳转都 500$、1000$了,国内看运气~

黑盒看业务:
用户登录、统一身份认证处,认证完后会跳转
用户分享、收藏内容过后,会跳转
跨站点认证、授权后,会跳转
站内点击其它网址链接时,会跳转

黑盒看业务:
用户登录、统一身份认证处,认证完后会跳转
用户分享、收藏内容过后,会跳转
跨站点认证、授权后,会跳转
站内点击其它网址链接时,会跳转

黑盒看参数名:
redirect
redirect_to
redirect_url
url
jump
jump_to
target
to
link
linkto
Domain

白盒看代码块:
Java: response.sendRedirect(request.getParameter("url"))
PHP:
$redirect_url = $_GET['url'];
header("Location: ".$redirect_url)
.NET:
string redirect_url = request.QueryString["url"];
Response.Redirect(redirect_url);
Django:
redirect_url = request.GET.get("url")
HttpResponseRedirect(redirect_url)
Flask:
redirect_url = request.form['url']
redirect(redirect_url)
Rails:
redirect_to params[:url]

网页下载工具teleport ultra

1.单斜线"/"绕过
https://www.landgrey.me/redirect.php?url=//www.evil.com
2.缺少协议绕过
https://www.landgrey.me/redirect.php?url=//www.evil.com

  1. 多斜线"//"前缀绕过
    https://www.landgrey.me/redirect.php?url=///www.evil.com
    https://www.landgrey.me/redirect.php?url=www.evil.com
  2. 利用"@"符号绕过
    https://www.landgrey.me/redirect.php?url=https://www.landgrey.me@www.evil.com
  3. 利用反斜线"\"绕过
    https://www.landgrey.me/redirect.php?url=https://www.evil.com\www.landgrey.me
  4. 利用"#"符号绕过
    https://www.landgrey.me/redirect.php?url=https://www.evil.com#www.landgrey.me
  5. 利用"?"号绕过
    https://www.landgrey.me/redirect.php?url=https://www.evil.com?www.landgrey.me
  6. 利用"\"绕过
    https://www.landgrey.me/redirect.php?url=https://www.evil.com\www.landgrey.me
  7. 利用"."绕过
    https://www.landgrey.me/redirect.php?url=.evil (可能会跳转到 www.landgrey.me.evil 域名)
    https://www.landgrey.me/redirect.php?url=.evil.com (可能会跳转到 evil.com 域名)
  8. 重复特殊字符绕过
    https://www.landgrey.me/redirect.php?url=///www.evil.com//..
    https://www.landgrey.me/redirect.php?url=www.evil.com//..

资源拒绝服务-加载受控&处理受控

功能 1:验证码或图片显示自定义大小
功能 2:上传压缩包解压循环资源占用(压缩包炸弹)