前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >vulnhub靶场venus通关笔记

vulnhub靶场venus通关笔记

作者头像
曈曈too
发布2024-02-20 10:04:18
1990
发布2024-02-20 10:04:18
举报
文章被收录于专栏:瞳瞳too的学习笔记

AI摘要:本文详细介绍了使用Kali Linux对Vulnhub靶场Venus进行渗透测试的过程。首先,使用nmap工具进行信息收集,发现靶机开放的端口和运行的服务。然后,通过观察登录提示信息,使用hydra工具进行用户名爆破。接着,通过构造cookie进行绕过,获取到三个线索。最后,通过rot13解码得到密码,成功登录SSH,并利用CVE-2021-4034漏洞提权,最终获取到root权限和flag文件。

前言

在本次测试中,我们将使用Kali Linux对靶机进行渗透测试。我们的目标是理解并利用各种工具和技术,以获取对靶机的最大权限。下图展示了靶机的初步概览:

信息收集
信息收集

一、信息收集

我们首先使用nmap工具对靶机进行基本的信息收集。在这个阶段,我们的目标是找出靶机上开放的端口以及运行的服务。nmap命令如下:nmap -sS -sV -A -T4 -p- 靶机IP

代码语言:javascript
复制
┌──(root㉿kali)-[~]
└─# nmap -sS -sV -A -T4 -p- 192.168.2.9
Nmap scan report for 192.168.2.9
Host is up (0.00083s latency).
Not shown: 65394 filtered tcp ports (no-response), 139 filtered tcp ports (admin-prohibited)
PORT     STATE SERVICE    VERSION
22/tcp   open  ssh        OpenSSH 8.5 (protocol 2.0)
| ssh-hostkey: 
|   256 b0:3e:1c:68:4a:31:32:77:53:e3:10:89:d6:29:78:50 (ECDSA)
|_  256 fd:b4:20:d0:d8:da:02:67:a4:a5:48:f3:46:e2:b9:0f (ED25519)
8080/tcp open  http-proxy WSGIServer/0.2 CPython/3.9.5
|_http-server-header: WSGIServer/0.2 CPython/3.9.5
|_http-title: Venus Monitoring Login
| fingerprint-strings: 
|   GetRequest, HTTPOptions: 
|     HTTP/1.1 200 OK
|     Date: Mon, 05 Feb 2024 08:59:57 GMT
|     Server: WSGIServer/0.2 CPython/3.9.5
|     Content-Type: text/html; charset=utf-8
|     X-Frame-Options: DENY
|     Content-Length: 626
|     X-Content-Type-Options: nosniff
|     Referrer-Policy: same-origin
|     <html>
|     <head>
|     <title>Venus Monitoring Login</title>
|     <style>
|     .aligncenter {
|     text-align: center;
|     label {
|     display:block;
|     position:relative;
|     </style>
|     </head>
|     <body>
|     <h1> Venus Monitoring Login </h1>
|     <h2>Please login: </h2>
|     Credentials guest:guest can be used to access the guest account.
|     <form action="/" method="post">
|     <label for="username">Username:</label>
|     <input id="username" type="text" name="username">
|     <label for="password">Password:</label>
|     <input id="username" type="text" name="password">
|     <input type="submit" value="Login">
|     </form>
|     </body>
|_    </html>
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :
SF-Port8080-TCP:V=7.94%I=7%D=2/5%Time=65C0A38E%P=x86_64-pc-linux-gnu%r(Get
SF:Request,363,"HTTP/1\.1\x20200\x20OK\r\nDate:\x20Mon,\x2005\x20Feb\x2020
SF:24\x2008:59:57\x20GMT\r\nServer:\x20WSGIServer/0\.2\x20CPython/3\.9\.5\
SF:r\nContent-Type:\x20text/html;\x20charset=utf-8\r\nX-Frame-Options:\x20
SF:DENY\r\nContent-Length:\x20626\r\nX-Content-Type-Options:\x20nosniff\r\
SF:nReferrer-Policy:\x20same-origin\r\n\r\n<html>\n<head>\n<title>Venus\x2
SF:0Monitoring\x20Login</title>\n<style>\n\.aligncenter\x20{\n\x20\x20\x20
SF:\x20text-align:\x20center;\n}\nlabel\x20{\n\x20\x20\x20\x20display:bloc
SF:k;\n\x20\x20\x20\x20position:relative;\n}\n</style>\n</head>\n<body>\n<
SF:h1>\x20Venus\x20Monitoring\x20Login\x20</h1>\n<h2>Please\x20login:\x20<
SF:/h2>\nCredentials\x20guest:guest\x20can\x20be\x20used\x20to\x20access\x
SF:20the\x20guest\x20account\.\n<form\x20action=\"/\"\x20method=\"post\">\
SF:n\x20\x20\x20\x20<br\x20/>\n\x20\x20\x20\x20<label\x20for=\"username\">
SF:Username:</label>\n\x20\x20\x20\x20<input\x20id=\"username\"\x20type=\"
SF:text\"\x20name=\"username\">\n\x20\x20\x20\x20<br\x20/>\n\x20\x20\x20\x
SF:20<label\x20for=\"password\">Password:</label>\n\x20\x20\x20\x20<input\
SF:x20id=\"username\"\x20type=\"text\"\x20name=\"password\">\n\x20\x20\x20
SF:\x20<br\x20/>\n\x20\x20\x20\x20<input\x20type=\"submit\"\x20value=\"Log
SF:in\">\n</form>\n\n</body>\n</html>\n")%r(HTTPOptions,363,"HTTP/1\.1\x20
SF:200\x20OK\r\nDate:\x20Mon,\x2005\x20Feb\x202024\x2008:59:57\x20GMT\r\nS
SF:erver:\x20WSGIServer/0\.2\x20CPython/3\.9\.5\r\nContent-Type:\x20text/h
SF:tml;\x20charset=utf-8\r\nX-Frame-Options:\x20DENY\r\nContent-Length:\x2
SF:0626\r\nX-Content-Type-Options:\x20nosniff\r\nReferrer-Policy:\x20same-
SF:origin\r\n\r\n<html>\n<head>\n<title>Venus\x20Monitoring\x20Login</titl
SF:e>\n<style>\n\.aligncenter\x20{\n\x20\x20\x20\x20text-align:\x20center;
SF:\n}\nlabel\x20{\n\x20\x20\x20\x20display:block;\n\x20\x20\x20\x20positi
SF:on:relative;\n}\n</style>\n</head>\n<body>\n<h1>\x20Venus\x20Monitoring
SF:\x20Login\x20</h1>\n<h2>Please\x20login:\x20</h2>\nCredentials\x20guest
SF::guest\x20can\x20be\x20used\x20to\x20access\x20the\x20guest\x20account\
SF:.\n<form\x20action=\"/\"\x20method=\"post\">\n\x20\x20\x20\x20<br\x20/>
SF:\n\x20\x20\x20\x20<label\x20for=\"username\">Username:</label>\n\x20\x2
SF:0\x20\x20<input\x20id=\"username\"\x20type=\"text\"\x20name=\"username\
SF:">\n\x20\x20\x20\x20<br\x20/>\n\x20\x20\x20\x20<label\x20for=\"password
SF:\">Password:</label>\n\x20\x20\x20\x20<input\x20id=\"username\"\x20type
SF:=\"text\"\x20name=\"password\">\n\x20\x20\x20\x20<br\x20/>\n\x20\x20\x2
SF:0\x20<input\x20type=\"submit\"\x20value=\"Login\">\n</form>\n\n</body>\
SF:n</html>\n");
MAC Address: 08:00:27:18:54:5E (Oracle VirtualBox virtual NIC)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose|storage-misc
Running (JUST GUESSING): Linux 4.X|5.X|2.6.X|3.X (97%), Synology DiskStation Manager 5.X (90%), Netgear RAIDiator 4.X (87%)
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 cpe:/o:linux:linux_kernel:2.6.32 cpe:/o:linux:linux_kernel:3 cpe:/a:synology:diskstation_manager:5.2 cpe:/o:netgear:raidiator:4.2.28
Aggressive OS guesses: Linux 4.15 - 5.8 (97%), Linux 5.0 - 5.4 (97%), Linux 5.0 - 5.5 (95%), Linux 2.6.32 (91%), Linux 3.10 - 4.11 (91%), Linux 3.2 - 4.9 (91%), Linux 3.4 - 3.10 (91%), Linux 5.1 (91%), Linux 2.6.32 - 3.10 (91%), Linux 2.6.32 - 3.13 (91%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 1 hop

TRACEROUTE
HOP RTT     ADDRESS
1   0.83 ms 192.168.2.9

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 244.26 seconds

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101

从nmap的扫描结果中,我们发现了靶机开放的两个端口:22/ssh8080/http-proxy

8080/http-proxy 端口运行着一个HTTP的代理服务。让我们用浏览器访问一下这个端口的服务。结果显示,这是一个登录页面,并提示我们可以使用guest:guest的账户密码访问来宾用户。

登录界面
登录界面

我们尝试使用提供的来宾账户guest:guest登录,如下图所示,这是我们使用来宾用户的登录页面。

来宾用户登录页面
来宾用户登录页面

二、用户名爆破

接下来,我们删除cookie并刷新页面,发现需要重新登录。这意味着服务器端可能在cookie中存储了某种会话状态。我们可以利用这个特性进行用户名爆破。

首先,我们注意到当我们输入正确的用户名但错误的密码时,系统会返回“密码错误”的提示信息。

密码错误提示
密码错误提示

然后,我们尝试输入一个不存在的用户名,系统返回了“无效的用户名”的提示。

无效用户名提示
无效用户名提示

这就给了我们一个很好的思路:我们可以通过这两个不同的提示信息,使用hydra工具配合directory-list-2.3-medium.txt进行基于表单的爆破,尝试找出所有有效的用户名。

hydra是一款强大的网络登录破解工具,它支持多种协议进行破解,包括但不限于FTP、HTTP、IMAP、MSSQL、MySQL、RDP、SSH、Telnet等。它的破解方式主要基于字典攻击,可以进行用户名和密码的爆破。 Hydra的基本用法 Hydra的基本命令格式如下: hydra [选项] [服务://]目标主机 [模块选项] 这里有几个主要的选项:

  • -l LOGIN-L FILE:指定单一登录名或登录名列表文件。
  • -p PASS-P FILE:指定单一密码或密码列表文件。
  • -s PORT:如果目标服务不使用默认端口,使用此选项指定服务端口。
  • -e nsr:尝试空密码、登录名作为密码或反转登录名作为密码。
  • -C FILE:指定登录名和密码列表文件,文件中的格式为:用户 密码。
  • -t TASKS:并发任务数,默认为16。
  • -w TIME:连接超时时间,默认为30秒。
  • -f:发现成功的登录/密码对后停止。
  • -M FILE:并行攻击多个主机。

Hydra的使用示例 以下是一些Hydra的使用示例: SSH爆破: hydra -l root -P password.txt -vV -t 10 -u 192.168.1.108 ssh 这个命令尝试使用root作为登录名,从password.txt文件读取密码,对IP地址为192.168.1.108的主机进行SSH服务的爆破。 FTP爆破: hydra -l user -P pass.txt -vV -f 192.168.1.108 ftp 这个命令尝试使用user作为登录名,从pass.txt文件读取密码,对IP地址为192.168.1.108的主机进行FTP服务的爆破。 HTTP POST表单爆破: hydra -L user.txt -P pass.txt -f -vV 192.168.1.108 http-post-form "/login.php:username=^USER^&password=^PASS^:F=wrong" 这个命令从user.txt文件读取登录名,从pass.txt文件读取密码,对IP地址为192.168.1.108的主机进行HTTP POST表单的爆破。

代码语言:javascript
复制
hydra -L /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -p test -s 8080 192.168.2.9 http-post-form "/:username=^USER^&password^PASS^:Invalid username."

爆破结果如下,我们得到了三个用户名:guestvenusmagellan

爆破结果
爆破结果

三、构造cookie进行绕过

我们已经获取了guest用户的线索,现在就测试另外两个。这两个账户的密码我们并不知道,但是我们可以尝试绕过。我们知道guest用户的密码是guest,我们可以使用Burpsuite抓取登录后的数据包,查看其中的cookie信息。

登录后的数据包
登录后的数据包

如下图所示,cookie处有一个base64的编码字符串,对其解码后的结果为guest:thrfg

cookie信息
cookie信息

这个发现让我们可以尝试构造cookie,将guest用户名替换为venusmagellan,然后再进行base64编码,通过Burpsuite修改cookie后再发送给靶机web服务,看看会发生什么。

我们开始构造cookie:

  • 构造第一个cookie:我们将venus:thrfg进行base64编码,得到dmVudXM6dGhyZmc=
  • 构造第二个cookie:我们将magellan:thrfg进行base64编码,得到bWFnZWxsYW46dGhyZmc=

我们把上一步抓取的数据包发送给BurpsuiteRepeater模块,修改cookie为我们构造的第一个cookie,得到了第二个线索字符串dmVudXM6aXJhaGY=

第二个线索
第二个线索

继续上一步的操作,修改cookie为我们构造的第二个cookie,得到了第三个线索字符串bWFnZWxsYW46aXJhaGZ2bmF0cmJ5YnRsMTk4OQ==

第三个线索
第三个线索

四、rot13解码

我们现在汇总我们获取的三个线索,并对它们进行base64解码:

  • 第一个:Z3Vlc3Q6dGhyZmc=的base64解码为guest:thrfg
  • 第二个:dmVudXM6aXJhaGY=的base64解码为venus:irahf
  • 第三个:bWFnZWxsYW46aXJhaGZ2bmF0cmJ5YnRsMTk4OQ==的base64解码为magellan:irahfvnatrbybtl1989

尝试使用这些信息登录SSH,但是都失败了。通过不断地尝试,我们发现密码部分可能被rot13进行编码过。我们通过rot13进行解码,就可以得到如下结果(注意,数字1989不变):

  • guest:guest
  • venus:venus
  • magellan:venusiangeology1989

通过尝试,我们发现只有magellan:venusiangeology1989 可以正常登录。

SSH登录成功
SSH登录成功

五、提权

成功登录后,我们需要尝试提升权限。我们使用命令find / -perm -u=s -exec ls -al {} \; 2>/dev/null查找具有suid权限的可执行文件,发现了我们熟悉的polkit-agent-helper-1,这是一个有漏洞的文件,可以直接利用CVE-2021-4034漏洞来提权。

提权成功
提权成功

使用命令cd /root切换到root目录,发现最终的flag文件root_flag.txt。使用cat命令显示该flag文件即可完成该靶机的渗透。

获取flag
获取flag

以上就是我们本次的渗透测试过程。通过这个过程,我们学习了如何使用各种工具和技术进行信息收集、用户名爆破、cookie构造、rot13解码以及利用已知漏洞进行提权。这些技术在实际的网络安全防御中都是非常重要的。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-02-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
    • 一、信息收集
      • 二、用户名爆破
        • 三、构造cookie进行绕过
          • 四、rot13解码
            • 五、提权
            相关产品与服务
            网站渗透测试
            网站渗透测试(Website Penetration Test,WPT)是完全模拟黑客可能使用的攻击技术和漏洞发现技术,对目标系统的安全做深入的探测,发现系统最脆弱的环节。渗透测试和黑客入侵最大区别在于渗透测试是经过客户授权,采用可控制、非破坏性质的方法和手段发现目标和网络设备中存在弱点,帮助管理者知道自己网络所面临的问题,同时提供安全加固意见帮助客户提升系统的安全性。腾讯云网站渗透测试由腾讯安全实验室安全专家进行,我们提供黑盒、白盒、灰盒多种测试方案,更全面更深入的发现客户的潜在风险。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档