【COVFEFE】缓冲区溢出提权

admin 2022年10月1日11:16:05评论140 views字数 1731阅读5分46秒阅读模式

靶机描述

靶机地址:https://www.vulnhub.com/entry/covfefe-1,199/

Description

Covfefe is my Debian 9 based B2R VM, originally created as a CTF for SecTalks_BNE. It has three flags.

It is intended for beginners and requires enumeration then [spoiler]!

一、信息搜集

利用arp-scan -l命令扫描靶机IP

arp-scan -l

【COVFEFE】缓冲区溢出提权

nmap扫描靶机

nmap -sV 192.168.75.168 

-sV #服务器指纹识别

【COVFEFE】缓冲区溢出提权

靶机开放22/ssh、80/http、31337/http端口服务

访问80端口,只是一个nginx服务搭建好之后的默认主页,没有任何页面提示

【COVFEFE】缓冲区溢出提权

突破点应该是31337端口的http服务,访问端口提示URL不对

【COVFEFE】缓冲区溢出提权

之后考虑31337端口尝试使用dirb扫描

dirb是一个基于字典的web目录扫描工具,是信息搜集常用的工具

dirb http://192.168.75.168:31337/

【COVFEFE】缓冲区溢出提权

发现robots.txt并且访问

【COVFEFE】缓冲区溢出提权

访问taxes,获得第一个flag

【COVFEFE】缓冲区溢出提权

之后再访问.ssh,能访问到.ssh说明可能存在密钥泄露,访问后页面上回显了ssh连接的私钥和公钥

【COVFEFE】缓冲区溢出提权

id_rsa(私钥),authorized_keys(公钥,认证密钥),id_rsa.pub(公钥),访问可以把它们下载到本地

【COVFEFE】缓冲区溢出提权

二、ssh私钥登录

查看已接受的认证公钥(authorized_keys)和公钥(id_rsa.pub)内容,发现用户为simon

【COVFEFE】缓冲区溢出提权

现在只需要知道私钥就可以达到不需要密码就可以使用ssh登入,查看私钥(id_rsa)内容,发现私钥被加密了

【COVFEFE】缓冲区溢出提权

使用john进行爆破,但是john貌似只能破解hash,所以要先将这个密文转成hash,使用ssh2john.py将私钥进行转换

python /usr/share/john/ssh2john.py id_rsa > key

现在使用john工具进行密钥密码的爆破

john key

【COVFEFE】缓冲区溢出提权

拿到密码之后进行ssh连接

chmod 700 id_rsa
ssh -i id_rsa [email protected]
user:simon
pass:starwars

【COVFEFE】缓冲区溢出提权

三、提权

直接进入root目录下,得到flag文件,不过没有权限直接读取,查看read_message.c文件,得到第二个flag

【COVFEFE】缓冲区溢出提权

查看一下当前用户的sudo命令

【COVFEFE】缓冲区溢出提权

没有sudo命令,接下来就需要find命令寻找权限,利用suid权限(4000代表suid权限)查找能够用root权限去执行哪些东西

find / -perm -4000 2>/dev/null

【COVFEFE】缓冲区溢出提权

想到root目录下有read_message.c文件,接下来审计read_message.c这个文件

溢出漏洞提权(缓冲区溢出)

代码中只匹配前五个字符,并且前五个字符为Simon用户名,超过20个字符就会执行溢出漏洞在if语句里考虑输入的值超过20个,20个之后的就会被execve调用,其缺陷就在于执行字符串判断操作时未将目的字符串大小进行判断导致了缓冲区溢出攻击的发生,此例使用了缓冲区溢出攻击将具有root执行权限的read_message程序调用了外部shell,从而获得了root权限

Simonqqqqqqqqqqqqqqq/bin/sh

【COVFEFE】缓冲区溢出提权

获取最后一个flag

【COVFEFE】缓冲区溢出提权

实验总结

代码原理

当我们输入一个字符串时,它将与Simon 一起检查字符串的前5字符,如果匹配,它将会运行程序/usr/local/bin/read_message。

现在它被分配为20字节,所以我们溢出堆栈进入超过20个字节的数据就可执行溢出漏洞。

使用前5个字符是 “Simon”, 然后添加15 个任意字符, 最后加入 “/bin/sh” 在第21字节,溢出提权。


本次实验中,在前期信息收集时,robots.txt敏感文件以及得到ssh公钥私钥的文件是实验的关键,在得到ssh私钥时,使用john爆破出私钥密码,拿到密码之后进行ssh连接。

在提权中,本次漏洞的利用方法为超过缓冲区20字符限制。



原文始发于微信公众号(NGC660安全实验室):【COVFEFE】缓冲区溢出提权

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年10月1日11:16:05
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【COVFEFE】缓冲区溢出提权http://cn-sec.com/archives/1308766.html

发表评论

匿名网友 填写信息