covfefe 靶机/缓冲区溢出

covfefe

信息搜集

存活检测

covfefe 靶机/缓冲区溢出_第1张图片

详细扫描

covfefe 靶机/缓冲区溢出_第2张图片

后台网页扫描

80 端口

covfefe 靶机/缓冲区溢出_第3张图片

31337 端口

covfefe 靶机/缓冲区溢出_第4张图片

网页信息搜集

  • 分别访问扫描出的网页

  • 说有三个不允许看的内容

    covfefe 靶机/缓冲区溢出_第5张图片

  • 尝试访问

  • 第一个 flag

    covfefe 靶机/缓冲区溢出_第6张图片

  • 访问 .ssh 文件

    covfefe 靶机/缓冲区溢出_第7张图片

    继续根据提示访问

    covfefe 靶机/缓冲区溢出_第8张图片

  • 获取了三个 ssh 文件

ssh 登录

  • 在下载的 id_rsa_pub 公钥文件中发现了用户名

    covfefe 靶机/缓冲区溢出_第9张图片

  • 尝试利用 id_rsa 私钥文件免密登录

    ssh -i id_rsa [email protected]
    

    提示权限太高

    covfefe 靶机/缓冲区溢出_第10张图片

  • 修改权限

    chmod 600 id_rsa
    
  • 再次登录

    提示需要密码

    image-20231018174451099

  • john 解密

    ssh2john id_rsa > pas
    
    john pas
    

    covfefe 靶机/缓冲区溢出_第11张图片

提权

  • sudo -l

    image-20231018203723906

    没权限

  • 查找敏感文件

    covfefe 靶机/缓冲区溢出_第12张图片

  • 查找 suid 权限

    find / -perm -u=s -type f 2>/dev/null
    

    covfefe 靶机/缓冲区溢出_第13张图片

  • 缓冲区溢出漏洞

    此程序中

    1. 定义了一个长度为20的字符数组buf作为输入缓冲区。
    2. 使用gets函数来读取用户的输入,并将输入存储到buf中。gets函数没有对输入的长度进行检查,如果用户输入的字符数超过了buf的容量,就会发生缓冲区溢出。
    3. 之后,程序通过strncmp函数将buf中的前5个字符与authorized数组中的内容进行比较。如果相等,则认为用户输入的是"Simon",程序会执行execve函数来执行/usr/local/sbin/message程序。
    4. 如果输入的字符数超过20个,并且第20个字符以后的字符是合法的可执行命令,那么缓冲区溢出会导致程序执行第20个字符以后的命令。

    这种缓冲区溢出漏洞的原理是,当用户输入的字符数超过了缓冲区的容量时,多余的字符会覆盖到缓冲区之外的内存区域。在这段代码中,覆盖到的内存区域包括了函数返回地址以及其他重要的数据。

    由于execve函数的调用是通过函数返回地址实现的,如果覆盖到的内存区域中的内容是合法的可执行命令,那么程序就会执行这段命令。

    运行程序,输入

    SimonAAAAAAAAAAAAAAA/bin/bash
    

    covfefe 靶机/缓冲区溢出_第14张图片

    提权成功

总结

  • ssh 私钥登录
  • 缓冲区溢出提权

你可能感兴趣的:(网络,服务器,linux)