靶机下载地址:DarkHole: 1 ~ VulnHub
Kali ip:192.168.174.128
靶机ip:192.168.174.135
靶机ip发现
sudo arp-scan -l
开放端口扫描
nmap -p- -sV -A 192.168.174.135
发现开启了22端口和80端口
目录扫描
gobuster dir -u http://192.168.174.135/ -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt
这个地点有点问题,我用dirsearch进行扫描,字典比较全,扫描多出来几个文件
扫描到几个目录 查看一下config,发现数据库文件
发现是个空文档,什么都没有
Dashboard虽然返回200但是输出的信息是无法访问
漏洞利用
进入login页面进行查看
既然有注册的地方,那就先去注册一下,中间白色的框是邮箱(这个颜色搭配真的费眼睛)
注册好了就进行登录,这里发现还存在一个id字段
尝试访问一下id=1的,不能访问
那就在id=2页面进行测试,这里有修改密码,抓包查看,这里尝试把id=1的用户的密码改为666,这里存在的问题是对用户的身份缺少验证。
应该是修改成功了,现在密码有了,然后我们尝试对账号进行爆破。
爆破账号
使用hydra进行破解
hydra -L /usr/share/seclists/Usernames/cirt-default-usernames.txt -p 666 192.168.174.135 http-post-form "/login.php:username=^USER^&password=^PASS^:username or password is incorrect"
这里对命令进行说明一下
-L后面加字典,这里是代表的账号
-p代表密码(小p是单独的一个密码)如果是大P则跟一个字典
192.168.174.135是代表ip
http-post-form表示破解是采用http的post方式提交的表单密码破解,双引号里面是目录:变量&变量:登录不成功时会出现的字段其中的变量必须按照上面的写:username=^USER^&password=^PASS^
破解出的密码是admin,使用admin进行登录查看
文件上传
这里的id值变成了1
而且存在一个上传文件的地方
那就上传个木马进行反弹shell吧
上传php反弹shell的脚本,发现有后端验证,说只允许png,jpg,gif,看着像是白名单,但是上传后发现是个黑名单验证
上传的后缀改为phtml(也可以使用phar),我这里还修改了content-type为image/png
成功上传,且此处的file看着像个链接,鼠标右击file复制链接,然后进行访问
成功接收到shell
权限提升
开启交互模式
SHELL=bash script -q /dev/null
我们在var/www目录下发现了数据库的信息,其中发现之前的admin密码,果然是强密码
使用find查找具有suid权限的命令,这里发现一个特殊的toto
find / -perm -u=s -type f 2>/dev/null
切换到home下发现两个用户,darkhole和john,其中john好像存在有用的信息
其中的toto是root权限的,且是可执行文件,执行一下看看结果
这里输出了id的信息
但是通过cat和strings都没有看到很多可用的信息
这里尝试替换id和修改环境变量进行提权
说明一下这几条命令
创建名为id的文件,将bash文件的位置写入id当中,然后使用export修改环境变量,优先加载tmp下的id文件,echo输出path查看是否修改成功
chmod赋予id可执行权限
这里切换到john目录,执行toto,发现成功切换到了john的用户下
切换到用户john下,那他的一些文件也就可以查看了
密码为root123
有了密码使用sudo -l查看当前用户的权限
发现python3,当前文件夹下又有file.py那就在file中写入内容,使用python进行提权
echo ‘import os;os.system(“/bin/bash”)’ > file.py
使用python3执行,这里的命令要和sudo -l中的一致不能修改的
切换目录,查看root文件,靶机成功结束