Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions vulnerable_ssrf.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import requests
from flask import Flask, request
from flask import Flask, request, jsonify
import urllib.request

app = Flask(__name__)
Expand All @@ -8,15 +8,15 @@
def fetch_url():
url = request.args.get('url')

response = requests.get(url)

Check failure

Code scanning / CodeQL

Full server-side request forgery Critical

The full URL of this request depends on a
user-provided value
.

return response.text

Check failure

Code scanning / CodeQL

Reflected server-side cross-site scripting High

Cross-site scripting vulnerability due to a
user-provided value
.

@app.route('/proxy')
def proxy_request():
target_url = request.args.get('target')

data = urllib.request.urlopen(target_url).read()

Check failure

Code scanning / CodeQL

Full server-side request forgery Critical

The full URL of this request depends on a
user-provided value
.

return data

Expand All @@ -24,7 +24,7 @@
def webhook():
callback_url = request.json.get('callback_url')

response = requests.post(callback_url, json={'status': 'success'})

Check failure

Code scanning / CodeQL

Full server-side request forgery Critical

The full URL of this request depends on a
user-provided value
.

return f"Webhook sent: {response.status_code}"

Expand All @@ -32,9 +32,9 @@
def load_image():
image_url = request.args.get('url')

img_data = requests.get(image_url).content

Check failure

Code scanning / CodeQL

Full server-side request forgery Critical

The full URL of this request depends on a
user-provided value
.

return img_data

Check failure

Code scanning / CodeQL

Reflected server-side cross-site scripting High

Cross-site scripting vulnerability due to a
user-provided value
.

def fetch_remote_resource(resource_url):
with urllib.request.urlopen(resource_url) as response:
Expand All @@ -44,9 +44,9 @@
def fetch_metadata():
metadata_url = request.args.get('metadata_url')

metadata = requests.get(metadata_url, timeout=5).json()

Check failure

Code scanning / CodeQL

Full server-side request forgery Critical

The full URL of this request depends on a
user-provided value
.

return metadata
return jsonify(metadata)

def download_file(file_url):
response = requests.get(file_url, stream=True)
Expand Down
Loading