环境准备
本次环境使用的是vulnhub靶场里面的covfefe
靶场下载地址:https://www.vulnhub.com/entry/covfefe-1,199/
靶机:192.168.0.103
攻击机:parrot 192.168.146.129
一、信息搜集
nmap扫描靶机
nmap -sV 192.168.0.103
-sV是服务器指纹识别
发现80端口和22号的ssh服务,以及31337端口开放
先访问了80端口并没有发现什么
之后考虑31337端口尝试使用dirb扫描
dirb是一个基于字典的web目录扫描工具,是信息搜集常用的工具
dirb http://192.168.0.103:31337
发现robots.txt并且访问
很简单的在/taxes里找到flag1
之后再访问./ssh(之前dirb也扫出来的)
能访问到/.ssh——说明可能存在密钥泄露
逐一下载到Downloads里
【至此本靶机的信息搜集基本完成】
二、ssh私钥登录
然后在authorized_keys里发现这个服务器上有个叫simon的用户
设置拥有者对id_rsa可读写,其他人不可读、写、执行
chmod 600 id_rsa
使用ssh登录simon
ssh -i id_rsa simon@192.168.0.103
但需要输入密码
三、john破解ssh秘钥信息
利用ssh2john将id_rsa秘钥信息转换为john可以识别的信息并且破解
python /usr/share/john/ssh2john.py id_rsa > rsacrack
zcat /usr/share/wordlists/rockyou.txt.gz | john --pipe --rules rsacrack
获取到密码👇
登录ssh
ssh -i id_rsa simon@192.168.0.103
成功登录😄
四、提权
cd /root
ls
cat flag.txt
我们在root目录下发现有flag.txt,但是无法读取,因此需要提权
接下来就需要find命令寻找权限,利用suid权限(4000代表suid权限)
查找能够用root权限去执行哪些东西
find / -perm -4000 2>/dev/null
联系到root里面有个read_message.c文件——两个文件可能有关系
接下来审计read_message.c这个文件
发现注释中的flag2
考虑缓冲区溢出漏洞
审计c语言的代码
发现输入的值是保存在buf里,如果这个值的前5个字是Simon,就返回正确
在if语句里考虑输入的值超过20个,20个之后的就会被execve调用,就可以实现缓冲区溢出
read_message
Simonqqqqqqqqqqqqqqq/bin/sh
提权成功
获得flag3👌,收工