- 靶机介绍:
https://www.vulnhub.com/entry/nullbyte-1,126/
查看靶机介绍,提示使用的是DHCP,自动分配的方式进行的
好的,安装好后,开始打靶!!
一、主机发现/端口扫描
-
下载好主机以后,将攻击机与我们的靶机设置到同一个网络环境下,这里,使用的是NAT模式,将靶机与kali置于同一个网络环境
-
主机发现,这里我是用for循环ping,因为当前NAT模式下,只有两台虚拟机开启,一台攻击机,一台目标机器(靶机)
for i in $(seq 128 140);do ping -c 1 192.168.52.$i | grep "ttl";done
当然,除了使用for循环外,我们还可以使用
arp-scan
的方式去查找 -
发现主机后,下一步进行端口扫描,因为靶机是在我们本地,所以线程可以开高一点,在探测TCP的时候,我们也可以探测一下UDP,在没有攻击面或攻击面较少的时候,探测一下UDP说不定会有意外发现
做完全端口扫描后,对扫描出的每个端口进行详细的探测,包括版本,操作系统,默认脚本探测等
简单分析一下上诉端口,对比可以发现777端口的服务是不同的,但实际第二张图更加准确
80想必大家都知道,这里就不过多赘述了;
111端口,则是rpc端口,此端口存在rpcbind漏洞,这里先不管他,优先级排后,不了解此端口的同学可以去学习一下
777端口则是ssh
42049端口也是提示是一个rpc端口
上诉端口中,rpc和ssh端口在红队行动中优先级是排后的,那我们这里从80端口开始入手
-
访问80端口,发现是一张图片,并且提示“如果你寻找和谐的规律,你就会找到知识”,这个看起来没有什么用,那我们查看源码,看看是否有可用信息
-
源码中也没有可利用的点,接下来使用
feroxbuster
尝试进行目录探测,并筛选状态为 200,301,302,403,401的文件写入result.txt
文件中,扫描完成后,cat
一下result.txt
文件即可feroxbuster -u http://192.168.52.137 -s 200,301,302,403,401 -o result.txt
-
扫描结果中发现可能存在phpmyadmin的后台,浏览器访问,发现phpmyadmin的登录页面,测试默认密码无果
-
这里我尝试过了nday,但是都是失败的,到这一步后,貌似没有其他路了,难道真的进不去了吗?最后想到了一个ctf的思路,那就是隐写,还记得我们最开始看见的那个图片吗?,就从他开始下手
二、隐写
-
重新访问最开始的页面,然后使用
wget
进行下载,将图片下载再来后使用exiftool
查看图片,发现果然存在隐写 -
这个隐写的语句像什么?貌似是一串密钥?不确定,尝试给到phpmyadmin,结果失败;再次尝试给到777端口,盲猜账号是root,结果还是失败
三、格局打开
-
想了很久,也没有想到这个是干嘛的,后来突然想到一个可能,这个东西会不会是一个文件或者文件夹的名称啊?尝试一下
-
真的是柳暗花明又一村啊,格局一下子就打开了,好好好,你要这么玩是吧!
-
接下来,我们的思路就是,猜测root,admin等字段;使用kzMb5nVYJw作为key看看行不行,或者我尝试注入,最后的办法就是爆破
-
使用root,admin和kzMb5nVYJw等字段均提示“invalid key”
-
那我们尝试注入,上sqlmap,使用F12,发现是POST请求,那么抓包,将包创建一个文件,用sqlmap读入该文件进行注入
-
结果sqlmap也没有跑出来东西,那就只能爆破了
-
我们使用hydra对其进行爆破,因为是POST请求没所以我们需要加上
http-form-post
,并且随机指定一个用户名hydra 192.168.52.137 http-form-post "/kzMb5nVYJw/index.php:key=^PASS^:invalid key" -l admin -P /usr/share/wordlists/rockyou.txt
-
成功爆破出密码,,在浏览器上输入后,再次出现一个框,盲猜root,提示成功
-
好的,那我们再次抓包尝试看看是否存在注入
-
发现是GET请求,那就不用像POST那样了,直接将url给到sqlmap即可
-
好家伙成功发现注入点,使用
--dbs
查看当前库,-tables
查看库中有哪些表,然后再使用-D
指定数据库,-T
指定表名,--dump
查看该表中的所有数据 -
发现数据中有一行密码,该密码为base64编码,使用如下命令解
echo -n YzZkNmJkN2ViZjgwNmY0M2M3NmFjYzM2ODE3MDNiODE | base64 -d
-
解码后得到MD5加密数据,使用MD5在线解密工具进行解密,得到密码
-
使用sqlmap弄出来的账号密码ssh登录,成功
但是上去后是一个低权限用户,这个时候怎么办?那就提权
四、提权
-
提权的方式有很多,这里我使用的是软链接提权
-
1)使用如下命令进行收集,看看哪些地方带有s权限
find / -perm -u=s -type f 2>/dev/null
-
2)发现一个很明显的点,进入到该路径下,创建超链接
-
3)使用一下命令进行超链接创建,然后添加环境变量,再去执行
procwatch
这个文件即可,如图:
图中,添加软链接的时候有报错,是因为我之前已经添加过了,所以有报错
-
4)cat一下root下的文件,成功拿到ssh密钥
至此,本文结束,因为时间太晚了,后面写的有些仓促,有不明白的地方,随时欢迎师傅私信联系