Dist conflicts resolve
This commit is contained in:
parent
8e33934951
commit
dcd0343569
4 changed files with 224 additions and 105 deletions
225
.gitignore
vendored
225
.gitignore
vendored
|
|
@ -1 +1,224 @@
|
||||||
node_modules
|
# Created by https://www.toptal.com/developers/gitignore/api/node,macos,windows,linux
|
||||||
|
# Edit at https://www.toptal.com/developers/gitignore?templates=node,macos,windows,linux
|
||||||
|
|
||||||
|
### Linux ###
|
||||||
|
*~
|
||||||
|
|
||||||
|
# temporary files which can be created if a process still has a handle open of a deleted file
|
||||||
|
.fuse_hidden*
|
||||||
|
|
||||||
|
# KDE directory preferences
|
||||||
|
.directory
|
||||||
|
|
||||||
|
# Linux trash folder which might appear on any partition or disk
|
||||||
|
.Trash-*
|
||||||
|
|
||||||
|
# .nfs files are created when an open file is removed but is still being accessed
|
||||||
|
.nfs*
|
||||||
|
|
||||||
|
### macOS ###
|
||||||
|
# General
|
||||||
|
.DS_Store
|
||||||
|
.AppleDouble
|
||||||
|
.LSOverride
|
||||||
|
|
||||||
|
# Icon must end with two \r
|
||||||
|
Icon
|
||||||
|
|
||||||
|
|
||||||
|
# Thumbnails
|
||||||
|
._*
|
||||||
|
|
||||||
|
# Files that might appear in the root of a volume
|
||||||
|
.DocumentRevisions-V100
|
||||||
|
.fseventsd
|
||||||
|
.Spotlight-V100
|
||||||
|
.TemporaryItems
|
||||||
|
.Trashes
|
||||||
|
.VolumeIcon.icns
|
||||||
|
.com.apple.timemachine.donotpresent
|
||||||
|
|
||||||
|
# Directories potentially created on remote AFP share
|
||||||
|
.AppleDB
|
||||||
|
.AppleDesktop
|
||||||
|
Network Trash Folder
|
||||||
|
Temporary Items
|
||||||
|
.apdisk
|
||||||
|
|
||||||
|
### macOS Patch ###
|
||||||
|
# iCloud generated files
|
||||||
|
*.icloud
|
||||||
|
|
||||||
|
### Node ###
|
||||||
|
# Logs
|
||||||
|
logs
|
||||||
|
*.log
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
lerna-debug.log*
|
||||||
|
.pnpm-debug.log*
|
||||||
|
|
||||||
|
# Diagnostic reports (https://nodejs.org/api/report.html)
|
||||||
|
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
|
||||||
|
|
||||||
|
# Runtime data
|
||||||
|
pids
|
||||||
|
*.pid
|
||||||
|
*.seed
|
||||||
|
*.pid.lock
|
||||||
|
|
||||||
|
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||||
|
lib-cov
|
||||||
|
|
||||||
|
# Coverage directory used by tools like istanbul
|
||||||
|
coverage
|
||||||
|
*.lcov
|
||||||
|
|
||||||
|
# nyc test coverage
|
||||||
|
.nyc_output
|
||||||
|
|
||||||
|
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
|
||||||
|
.grunt
|
||||||
|
|
||||||
|
# Bower dependency directory (https://bower.io/)
|
||||||
|
bower_components
|
||||||
|
|
||||||
|
# node-waf configuration
|
||||||
|
.lock-wscript
|
||||||
|
|
||||||
|
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
||||||
|
build/Release
|
||||||
|
|
||||||
|
# Dependency directories
|
||||||
|
node_modules/
|
||||||
|
jspm_packages/
|
||||||
|
|
||||||
|
# Snowpack dependency directory (https://snowpack.dev/)
|
||||||
|
web_modules/
|
||||||
|
|
||||||
|
# TypeScript cache
|
||||||
|
*.tsbuildinfo
|
||||||
|
|
||||||
|
# Optional npm cache directory
|
||||||
|
.npm
|
||||||
|
|
||||||
|
# Optional eslint cache
|
||||||
|
.eslintcache
|
||||||
|
|
||||||
|
# Optional stylelint cache
|
||||||
|
.stylelintcache
|
||||||
|
|
||||||
|
# Microbundle cache
|
||||||
|
.rpt2_cache/
|
||||||
|
.rts2_cache_cjs/
|
||||||
|
.rts2_cache_es/
|
||||||
|
.rts2_cache_umd/
|
||||||
|
|
||||||
|
# Optional REPL history
|
||||||
|
.node_repl_history
|
||||||
|
|
||||||
|
# Output of 'npm pack'
|
||||||
|
*.tgz
|
||||||
|
|
||||||
|
# Yarn Integrity file
|
||||||
|
.yarn-integrity
|
||||||
|
|
||||||
|
# dotenv environment variable files
|
||||||
|
.env
|
||||||
|
.env.development.local
|
||||||
|
.env.test.local
|
||||||
|
.env.production.local
|
||||||
|
.env.local
|
||||||
|
|
||||||
|
# parcel-bundler cache (https://parceljs.org/)
|
||||||
|
.cache
|
||||||
|
.parcel-cache
|
||||||
|
|
||||||
|
# Next.js build output
|
||||||
|
.next
|
||||||
|
out
|
||||||
|
|
||||||
|
# Nuxt.js build / generate output
|
||||||
|
.nuxt
|
||||||
|
dist
|
||||||
|
|
||||||
|
# Gatsby files
|
||||||
|
.cache/
|
||||||
|
# Comment in the public line in if your project uses Gatsby and not Next.js
|
||||||
|
# https://nextjs.org/blog/next-9-1#public-directory-support
|
||||||
|
# public
|
||||||
|
|
||||||
|
# vuepress build output
|
||||||
|
.vuepress/dist
|
||||||
|
|
||||||
|
# vuepress v2.x temp and cache directory
|
||||||
|
.temp
|
||||||
|
|
||||||
|
# Docusaurus cache and generated files
|
||||||
|
.docusaurus
|
||||||
|
|
||||||
|
# Serverless directories
|
||||||
|
.serverless/
|
||||||
|
|
||||||
|
# FuseBox cache
|
||||||
|
.fusebox/
|
||||||
|
|
||||||
|
# DynamoDB Local files
|
||||||
|
.dynamodb/
|
||||||
|
|
||||||
|
# TernJS port file
|
||||||
|
.tern-port
|
||||||
|
|
||||||
|
# Stores VSCode versions used for testing VSCode extensions
|
||||||
|
.vscode-test
|
||||||
|
|
||||||
|
# yarn v2
|
||||||
|
.yarn/cache
|
||||||
|
.yarn/unplugged
|
||||||
|
.yarn/build-state.yml
|
||||||
|
.yarn/install-state.gz
|
||||||
|
.pnp.*
|
||||||
|
|
||||||
|
### Node Patch ###
|
||||||
|
# Serverless Webpack directories
|
||||||
|
.webpack/
|
||||||
|
|
||||||
|
# Optional stylelint cache
|
||||||
|
|
||||||
|
# SvelteKit build / generate output
|
||||||
|
.svelte-kit
|
||||||
|
|
||||||
|
### Windows ###
|
||||||
|
# Windows thumbnail cache files
|
||||||
|
Thumbs.db
|
||||||
|
Thumbs.db:encryptable
|
||||||
|
ehthumbs.db
|
||||||
|
ehthumbs_vista.db
|
||||||
|
|
||||||
|
# Dump file
|
||||||
|
*.stackdump
|
||||||
|
|
||||||
|
# Folder config file
|
||||||
|
[Dd]esktop.ini
|
||||||
|
|
||||||
|
# Recycle Bin used on file shares
|
||||||
|
$RECYCLE.BIN/
|
||||||
|
|
||||||
|
# Windows Installer files
|
||||||
|
*.cab
|
||||||
|
*.msi
|
||||||
|
*.msix
|
||||||
|
*.msm
|
||||||
|
*.msp
|
||||||
|
|
||||||
|
# Windows shortcuts
|
||||||
|
*.lnk
|
||||||
|
|
||||||
|
#!dist/
|
||||||
|
dist/*
|
||||||
|
packages/frontend/dist
|
||||||
|
packages/backend/dist
|
||||||
|
#!dist/*.zip
|
||||||
|
|
||||||
|
# End of https://www.toptal.com/developers/gitignore/api/node,macos,windows,linux
|
||||||
BIN
dist/plugin_package.zip
vendored
BIN
dist/plugin_package.zip
vendored
Binary file not shown.
21
dist/plugin_package/manifest.json
vendored
21
dist/plugin_package/manifest.json
vendored
|
|
@ -1,21 +0,0 @@
|
||||||
{
|
|
||||||
"id": "oauth-vuln-detector",
|
|
||||||
"name": "OAuth Vuln Detector",
|
|
||||||
"version": "0.0.1",
|
|
||||||
"description": "Detects OAuth misconfiguration.",
|
|
||||||
"author": {
|
|
||||||
"name": "caterpii",
|
|
||||||
"email": "dlaha171@gmail.com",
|
|
||||||
"url": "https://github.com/katerpii"
|
|
||||||
},
|
|
||||||
"links": {},
|
|
||||||
"plugins": [
|
|
||||||
{
|
|
||||||
"id": "oauth-backend",
|
|
||||||
"kind": "backend",
|
|
||||||
"name": "backend",
|
|
||||||
"entrypoint": "oauth-backend/index.js",
|
|
||||||
"runtime": "javascript"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
83
dist/plugin_package/oauth-backend/index.js
vendored
83
dist/plugin_package/oauth-backend/index.js
vendored
|
|
@ -1,83 +0,0 @@
|
||||||
// packages/backend/src/index.ts
|
|
||||||
import { promises as fs } from "fs";
|
|
||||||
import * as path from "path";
|
|
||||||
import os from "os";
|
|
||||||
var requestMap = /* @__PURE__ */ new Map();
|
|
||||||
function init(sdk) {
|
|
||||||
sdk.events.onInterceptRequest(async (sdk2, req) => {
|
|
||||||
try {
|
|
||||||
const urlString = req.getUrl();
|
|
||||||
const url = new URL(urlString);
|
|
||||||
sdk2.console.log(`[OAuthPlugin] Intercepted request: ${urlString}`);
|
|
||||||
if (!url.pathname.includes("/authorize") && !url.pathname.includes("/auth")) return;
|
|
||||||
const params = new URLSearchParams(url.search);
|
|
||||||
const redirectUri = params.get("redirect_uri");
|
|
||||||
if (!redirectUri) return;
|
|
||||||
const reqId = req.getId();
|
|
||||||
requestMap.set(reqId, redirectUri);
|
|
||||||
const clientId = params.get("client_id") ?? "(missing)";
|
|
||||||
const responseType = params.get("response_type") ?? "(missing)";
|
|
||||||
const isScan = params.has("scan");
|
|
||||||
if (isScan) return;
|
|
||||||
const output = {
|
|
||||||
original_url: urlString,
|
|
||||||
client_id: clientId,
|
|
||||||
redirect_uri: redirectUri,
|
|
||||||
response_type: responseType
|
|
||||||
};
|
|
||||||
try {
|
|
||||||
const filePath = path.join(os.tmpdir(), "oauth-fuzz-input.json");
|
|
||||||
await fs.writeFile(filePath, JSON.stringify(output, null, 2));
|
|
||||||
} catch (err) {
|
|
||||||
await sdk2.findings.create({
|
|
||||||
title: "[fs] Write Failed",
|
|
||||||
description: `Could not write to file: ${err}`,
|
|
||||||
request: req,
|
|
||||||
reporter: "oauth-open-redirect-detector"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
await sdk2.findings.create({
|
|
||||||
title: "[ ] OAuth2 Authorization Request Collected",
|
|
||||||
description: `client_id: ${clientId}
|
|
||||||
redirect_uri: ${redirectUri}
|
|
||||||
response_type: ${responseType}`,
|
|
||||||
request: req,
|
|
||||||
reporter: "oauth-open-redirect-detector"
|
|
||||||
});
|
|
||||||
} catch (err) {
|
|
||||||
sdk2.console.error(`Error in onInterceptRequest: ${err}`);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
sdk.events.onInterceptResponse(async (sdk2, req, resp) => {
|
|
||||||
try {
|
|
||||||
const reqId = req.getId();
|
|
||||||
const url = new URL(req.getUrl());
|
|
||||||
const status = resp.getCode();
|
|
||||||
const location = resp.getHeader("location")?.[0];
|
|
||||||
const params = new URLSearchParams(url.search);
|
|
||||||
const isScan = params.has("scan");
|
|
||||||
if (!isScan) {
|
|
||||||
requestMap.delete(reqId);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (status >= 300 && status < 400 && location) {
|
|
||||||
const redirectUri = requestMap.get(reqId) ?? "(unknown)";
|
|
||||||
await sdk2.findings.create({
|
|
||||||
title: "[+] Redirect URI Misconfiguration Detected",
|
|
||||||
description: `Status: ${status}
|
|
||||||
Location: ${location}
|
|
||||||
Original Redirect URI: ${redirectUri}
|
|
||||||
Request URL: ${url.href}`,
|
|
||||||
request: req,
|
|
||||||
reporter: "oauth-open-redirect-detector"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
requestMap.delete(reqId);
|
|
||||||
} catch (err) {
|
|
||||||
sdk2.console.error(`Error in onInterceptResponse: ${err}`);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
export {
|
|
||||||
init
|
|
||||||
};
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue