前言
靶机:hacksudo-2
攻击:kali
都是采用虚拟机,网卡为桥接模式
主机发现
使用arp-scan -l或者netdiscover -r 192.168.1.1/24或者nmap和masscan等可以扫描网段的扫描工具,不过建议使用前两个即可,因为靶机与攻击机都是在局域网内的

信息收集
使用nmap扫描端口

对全端口再进行扫描一下

rpc、nfs收集
发现有rpc,使用nmap脚本进一步收集
nmap --script=rpcinfo 192.168.1.51
 

再次对nfs进行收集
nmap --script=nfs-* 192.168.1.51
 

甚至从这里已经看到flag1.txt了,不过这里只做信息收集
网站收集
对80端口网站进行收集,访问默认界面,看到一个用户名vishal

查看页面源代码,发现一段话,下面翻译,然后可以发现是目录型网站

翻译上面的话

对网站进行目录扫描
使用gobuster、dirsearch、dirb、dirbuster、ffuf等工具进行扫描

访问README.md查看

访问readme.md查看

访问audio目录,一堆可能音频文件,可能存在音频隐写

访问呢file.php并查看页面源代码,这个只是有一个超链接

访问game.html,查看页面源代码,发现是从google请求

访问info.php,发现是phpinfo

访问test.html,发现大部分代码由js组成,不过收集到一些字符信息

访问test123.html,发现内容,查看源代码详细查看

访问tiles,发现图片

访问web目录,看到信息

漏洞寻找
反弹shell
根据之前的nfs寻找,尝试进行挂载
mkdir /tmp/nf
mount -t nfs 192.168.1.51:/mnt/nfs/ /tmp/nf	//挂载目标共享目录到kali本地
 
但是查看后,提示说当前系统是root

测试之前的几个php文件,测试有无参数接收,然后可以导致路径遍历的,这里先测试file.php
ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://192.168.1.51/file.php?FUZZ=../../../../../../etc/passwd -fs 238
//这里的-fs 238 是对返回数据大小进行过滤,238是指原界面的大小
 

在浏览器测试

但是经过测试,这里只能文件包含,且是本地文件包含,限制太多,很多东西看不了,或者使用一个好的字典去遍历,不过这里确定一个用户的存在hacksudo
不过突然想到,可以挂载的话,在其中上传一个php脚本,然后再通过这个文件包含,能否进行反弹呢
编辑/usr/share/webshells/php/php-reverse-shell.php脚本,修改地址为kali的地址

把该文件复制到之前挂载的地址/tmp/nf中,因为具有同步性,所有靶机上也会有这个脚本。
使用kali开启监听,然后浏览器访问,确实可以

然后使用python获得一个交互式界面
python3 -c 'import pty;pty.spawn("/bin/bash")'
 
提权
因为开启nfs服务,所有查看其主要的文件,查看

这里这个目录是有读写权限
no_root_squash: 客户端以 root 用户访问时,不映射为匿名用户。
也就是说,因为这里是挂载的,然后当在kali中对挂载的目录进行操作时,是可以进行一系列操作的。
避免两个机器的冲突,把kali中的bash脚本复制到挂载点,并改名称,然后在靶机上运行这个脚本

不过版本问题,无法运行,查看版本

这里需要安装对应版本的bash才行,但是这里kali中安装了高版本的bash,在进行编译安装时,总是不成功,可能需要一个新的虚拟机,我这里就不做演示了
或者编写c文件进行提取,不过也需要对应的库等,应为新的gcc编译与旧版本可能不兼容
#include<stdlib.h>
#include<unistd.h>int main()
{
setuid(0);
system("id");
system("/bin/bash");
}
 
说白了,这里的几个方法,都需要历史版本。。。。。
不过使用find寻找时,找到一个具有SUID权限的文件,可能存在漏洞

百度搜索,发现cve-2021-4034存在,并且系统对应的版本在影响范围
从项目地址下载poc,地址https://github.com/arthepsy/CVE-2021-4034

把编译好的exp复制到之前的挂载目录
执行后还是哈哈哈哈哈。不行,因为编译环境的问题

所以这里不再继续,太麻烦了,知道方法即可
总结
- 对于网站的
php文件,可能会有参数接收的,所以要进行fuzz测试 - 对于
rpcbind和nfs一般都是一起出现,可以使用rpcinfo以及一些命令来检测是否开启共享,showmount - 对于
nfs是配置文件/etc/exports中的配置简单了解,这里就是利用可写以及root执行 - 提权时候文件的版本问题
 
