【VulnHub系列】COVFEFE_ 1
靶机描述
靶机地址: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
nmap
扫描靶机
nmap -sV 192.168.75.168
-sV #服务器指纹识别
靶机开放22/ssh、80/http、31337/http端口服务
访问80端口,只是一个nginx服务搭建好之后的默认主页,没有任何页面提示
突破点应该是31337端口的http服务,访问端口提示URL不对
之后考虑31337端口尝试使用dirb扫描
dirb是一个基于字典的web目录扫描工具,是信息搜集常用的工具
dirb http://192.168.75.168:31337/
发现robots.txt并且访问
访问taxes,获得第一个flag
之后再访问.ssh
,能访问到.ssh
说明可能存在密钥泄露,访问后页面上回显了ssh连接的私钥和公钥
id_rsa(私钥),authorized_keys(公钥,认证密钥),id_rsa.pub(公钥),访问可以把它们下载到本地
二、ssh私钥登录
查看已接受的认证公钥(authorized_keys)和公钥(id_rsa.pub)内容,发现用户为simon
现在只需要知道私钥就可以达到不需要密码就可以使用ssh登入,查看私钥(id_rsa)内容,发现私钥被加密了
使用john进行爆破,但是john貌似只能破解hash,所以要先将这个密文转成hash,使用ssh2john.py将私钥进行转换
python /usr/share/john/ssh2john.py id_rsa > key
现在使用john工具进行密钥密码的爆破
john key
拿到密码之后进行ssh连接
chmod 700 id_rsa
ssh -i id_rsa simon@192.168.75.168
user:simon
pass:starwars
三、提权
直接进入root目录下,得到flag文件,不过没有权限直接读取,查看read_message.c文件,得到第二个flag
查看一下当前用户的sudo命令
没有sudo命令,接下来就需要find命令寻找权限,利用suid权限(4000代表suid权限)查找能够用root权限去执行哪些东西
find / -perm -4000 2>/dev/null
想到root目录下有read_message.c文件,接下来审计read_message.c这个文件
溢出漏洞提权(缓冲区溢出)
代码中只匹配前五个字符,并且前五个字符为Simon用户名,超过20个字符就会执行溢出漏洞
在if语句里考虑输入的值超过20个,20个之后的就会被execve调用,其缺陷就在于执行字符串判断操作时未将目的字符串大小进行判断导致了缓冲区溢出攻击的发生,此例使用了缓冲区溢出攻击将具有root执行权限的read_message程序调用了外部shell,从而获得了root权限
Simonqqqqqqqqqqqqqqq/bin/sh
获取最后一个flag
实验总结
代码原理
当我们输入一个字符串时,它将与Simon 一起检查字符串的前5字符,如果匹配,它将会运行程序/usr/local/bin/read_message。
现在它被分配为20字节,所以我们溢出堆栈进入超过20个字节的数据就可执行溢出漏洞。
使用前5个字符是 “Simon”, 然后添加15 个任意字符, 最后加入 “/bin/sh” 在第21字节,溢出提权。
本次实验中,在前期信息收集时,robots.txt敏感文件以及得到ssh公钥私钥的文件是实验的关键,在得到ssh私钥时,使用john爆破出私钥密码,拿到密码之后进行ssh连接。
在提权中,本次漏洞的利用方法为超过缓冲区20字符限制。
本文来自博客园,作者:NoCirc1e,转载请注明原文链接:https://www.cnblogs.com/NoCirc1e/p/18173097