API漏洞挖掘指北-APISandbox靶场通关.1

admin 2025年5月6日16:06:22评论1 views字数 3097阅读10分19秒阅读模式
  • APIKit
  • APISandbox
  • APISandbox靶场通关
    • 安装
    • OWASPApiTop10
    • 4ASystem

APIKit

APIKit是基于BurpSuite提供的JavaAPI开发的插件。

APIKit可以主动/被动扫描发现应用泄露的API文档,并将API文档解析成BurpSuite中的数据包用于API安全测试。

实际使用效果如图:

API漏洞挖掘指北-APISandbox靶场通关.1

APIKit v1.0支持的API技术的指纹有:

  • GraphQL

  • OpenAPI-Swagger

  • SpringbootActuator

  • SOAP-WSDL

  • REST-WADL

安装

打开BurpSuite页面,点击Extender然后选择Extensions,添加APIKit.jar。

API漏洞挖掘指北-APISandbox靶场通关.1

然后APIKit会对进入到BurpSuite的流量进行被动扫描。解析完成后可以在APIKit面板查看结果,同样Burpsuite的DashBoard也会有issue提示。

APISandbox

  • APISandbox是一个包含多个场景的API漏洞靶场。

  • 4ASystem: 4A认证系统下的API平行越权

  • APIVuln: 生产消费流水线中的API缓存投毒

  • GraphqlNotebook: 一个使用GraphQL的留言板以及经典API漏洞

  • InfoSystem: WSDL泄露API越权进后台Getshell

  • OASystem: SpringBoot微服务架构下的API Gateway配置问题

  • OWASPApiTop10: 使用go作为后端实现解释OWASP API Top 10的漏洞

安装

# 下载项目
wget https://github.com/API-Security/APISandbox/archive/refs/heads/main.zip -O APISandbox-main.zip
unzip APISandbox-main.zip
cd APISandbox-~~main

# 进入某一个漏洞/环境的目录
cd OWASPApiTop10

# 自动化编译环境
docker-compose build

# 启动整个环境
docker-compose up -d

APISandbox靶场通关

安装

下载靶场

API漏洞挖掘指北-APISandbox靶场通关.1

自动化编译环境

API漏洞挖掘指北-APISandbox靶场通关.1

启动环境

API漏洞挖掘指北-APISandbox靶场通关.1

看一下容器所在的端口

API漏洞挖掘指北-APISandbox靶场通关.1

访问对应的端口即可访问靶场

API漏洞挖掘指北-APISandbox靶场通关.1

OWASPApiTop10

使用脚本进行扫描

API漏洞挖掘指北-APISandbox靶场通关.1

可以看到所有端口

API漏洞挖掘指北-APISandbox靶场通关.1

/v2/register接口任意用户注册

API漏洞挖掘指北-APISandbox靶场通关.1

其实这里也存在用户名枚举

API漏洞挖掘指北-APISandbox靶场通关.1

用户名存在的时候会提示

{"code":1000,"msg":"Username has already been used!"}

/v1/getenv接口未授权

API漏洞挖掘指北-APISandbox靶场通关.1

/v2/user/getuserinfo/2 水平越权

首先需要使用/v2/login接口获取一个普通用户的cookie

API漏洞挖掘指北-APISandbox靶场通关.1

修改url中的数字即可越权获取其他用户的信息

API漏洞挖掘指北-APISandbox靶场通关.1
API漏洞挖掘指北-APISandbox靶场通关.1

/v2/user/getuserprofiles 垂直越权

getuserprofiles接口垂直越权可获取所有用户的信息

API漏洞挖掘指北-APISandbox靶场通关.1

/v2/login 暴力破解

该接口没有验证码,可以进行暴力破解

API漏洞挖掘指北-APISandbox靶场通关.1

4ASystem

安装

API漏洞挖掘指北-APISandbox靶场通关.1

安装完毕之后会有四个容器,我们先访问web1。

API漏洞挖掘指北-APISandbox靶场通关.1

弱口令登陆Web1应用

登录接口存在弱口令admin/admin888

API漏洞挖掘指北-APISandbox靶场通关.1

web1应用横向越权

web1登录之后发现没啥东西

API漏洞挖掘指北-APISandbox靶场通关.1

扫描目录发现www.zip存在源码s.php

发现两个接口

$loginapi = "http://192.168.10.10:8080/api/v1/sys_authenticate";
$resetapi = "http://192.168.10.10:8080/api/v1/sys_passwdreset";
API漏洞挖掘指北-APISandbox靶场通关.1

ChangePass函数用来修改web应用的密码。

function ChangePass($url1, $url, $username, $oldpassword, $newpassword){
    $cookie = Login($url1, $username, $oldpassword);
    //$cookie = "MTYyNzU1NTA5NHxOd3dBTkRaS1VWaFNVMGhZVjFFMFdFZFFTMFZCVWpkTlVrVllOa2hYTlZBM05qVkpTa2MzTWpOT1ZETkNOakpKUWxoU1JrRkRVa0U9fLekjnGbigV2zA4BL9IPyp7Q6lzJ53hzvmB2TnIyBsXp";
    //echo $cookie;
    $data = array(
        'username'    => $username,
        'newpasswd'   => $newpassword,
        'application' => 'web1'
    );
    $curl = curl_init(); // 启动一个CURL会话
    curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
    curl_setopt($curl, CURLOPT_POST, 1);             // 发送一个常规的Post请求
    curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));   // Post提交的数据包x
    curl_setopt($curl, CURLOPT_TIMEOUT, 30);         // 设置超时限制 防止死循环
    curl_setopt($curl, CURLOPT_HEADER, 1);           // 显示返回的Header区域内容
    curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-Type: application/json","Cookie: GOSESSID=$cookie;"));//设置请求头
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);   // 获取的信息以文件流的形式返回

    $res = curl_exec($curl); // 执行操作
    if(curl_errno($curl)) {
        header(500);//捕捉异常
    }
    $header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
    curl_close($curl);

    $header = substr($res, 0, $header_size);
    $body = substr($res, $header_size);
    if(preg_match('/200/',$body)){
        return "success";
    }elseif (preg_match('/400/',$body)){
        return "reset Fail";
    }else{
        return null;
    }
}

函数调用

echo ChangePass($loginapi,$resetapi, $username, $oldpassword, $newpassword);
$loginapi = "http://192.168.10.10:8080/api/v1/sys_authenticate";
$resetapi = "http://192.168.10.10:8080/api/v1/sys_passwdreset";

也就是最终通过resetapi进行密码修改,构造一下请求数据包。

首先使用loginapi获取api的凭证

API漏洞挖掘指北-APISandbox靶场通关.1

有了凭证访问resetapi即可越权修改web1、web2的应用密码。

这里我不知道为啥访问接口404。

原文始发于微信公众号(土拨鼠的安全屋):API漏洞挖掘指北-APISandbox靶场通关.1

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年5月6日16:06:22
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   API漏洞挖掘指北-APISandbox靶场通关.1https://cn-sec.com/archives/4033126.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息