准备工作
靶机基本信息
靶机名称:Kioptrix Level 1.1(#2)
操作系统:Linux
虚拟机软件:VMware Workstation
网络连接方式:桥接至物理网络
渗透测试目标:获取靶机root权限和交互式Shell
下载地址: Kioptrix: Level 1.1 (#2) ~ VulnHub
下载
- 打开下载链接,将RAR格式的压缩包解压至指定目录。
- 点击VMware Workstation中的 File -> Scan for Virtual Machines 按钮,在弹出的对话框中选择正确的目录,扫描虚拟机添加即可。
信息收集
主机发现
由于靶机的网络类型为桥接至物理网络,所以将攻击机也置于物理网络下,网段为:192.168.2.0/24
,攻击机IP地址为192.168.2.104
。使用netdiscover工具进行网络扫描:
# netdiscover带上-r参数可以只在指定的网段中扫描
netdiscover -r 192.168.2.0/24
其中MAC Vendor/Hostname这一项为VMware, Inc.
的就是靶机。(IP:192.168.2.114)
目标扫描
目标IP地址已经锁定,接下来可以扫描靶机的开放端口。先进行ICMP连通性测试:
# Ping四次靶机
ping -c 4 192.168.2.114
很好,看来目标靶机大概率没有ICMP防火墙之类的东西。接下来使用nmap探测靶机开放端口:
可以看到目标靶机开放了6个TCP端口:22
、80
、111
、443
、631
、3306
。加上其它参数对其进行详细扫描:
# -sC 使用默认脚本探测目标所有TCP端口
# -A 探测目标操作系统和软件版本
nmap -sC -A 192.168.2.114
可以详细的看到主机开放端口信息:
端口号 | 传输层协议 | 应用层协议 | 详细信息 |
---|---|---|---|
22 |
TCP |
SSH |
OpenSSH 3.9p1 (protocol 1.99) |
80 |
TCP |
HTTP |
Apache httpd 2.0.52 (CentOS) |
111 |
TCP |
RPC |
2 (RPC #100000) |
443 |
TCP |
HTTPS |
Apache httpd 2.0.52 (CentOS) |
631 |
TCP |
IPP |
CUPS 1.1 |
3306 |
TCP |
mysql |
MySQL (unauthorized) |
同时确定靶机操作系统为CentOS Linux
,内核版本在2.6.9至2.6.30之间。
服务探测
互联网打印服务(631)
首先使用BurpSuite访问一下该服务端口,发现提示拒绝访问:
于是尝试修改请求包中的X-Forwarded-For
和Host
字段数据:
GET / HTTP/1.1
Host: 127.0.0.1:631
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,en-US;q=0.5
Accept-Encoding: gzip, deflate
X-Forwarded-For: 127.0.0.1
HTTP字段解释:
Host
---- 用于区分客户端请求哪个站点;X-Forward-For
---- 用于识别客户端的“真实”IP地址。
如果服务端基于这两个字段的内容编写检测代码(即如果XFF头或Host头不为本地环回地址,则拒绝访问),那么将上述两项字段修改为127.0.0.1
即可。
但非常明显这不奏效:
已经知道CUPS打印服务器的版本为1.1
,无法正常访问服务,对631号端口服务的初步探测结束。
MySQL服务(3306)
使用nc
工具向MySQL服务器发送数据包以获取banner信息:
nc 192.168.2.114 3306
返回以下信息:
看来靶机的MySQL服务不允许用户远程登录。尝试使用nmap
对MySQL服务进行脚本扫描:
由于MySQL禁止远程登录,扫描失败。对MySQL服务的初步探测结束。
SSH服务(22)
首先使用nc
工具探测一下端口的banner信息:
nc 192.168.2.114 22
返回了SSH服务的版本信息:SSH-1.99-OpenSSH_3.9p1
探测结束。
HTTP/S服务(80、443)
首先访问HTTP服务,在浏览器中输入网址——http://192.168.2.114/
,浏览主页信息:
主页上是一个网页登录框,标题上的英文意思为“远程系统管理界面登录”,查看页面HTML源代码,发现以下敏感信息:
- 网站的开发语言为PHP;
- 用户名的正确值貌似为
Administrator
。
使用dirsearch
工具进行目录扫描,发现4个可访问点:
/index.php
(网站主页)/index.php/login/
(登录框,和主页一样)/manual
->http://192.168.2.114/manual/
(301跳转)/manual/index.html
(Apache软件帮助文档,忽略)
探测结束。
渗透攻击
Web应用程序渗透
既然靶机的Web应用程序只有主页登录框可以作为攻击点,那么只能在登录框处做手脚,尝试进行SQL注入。
爆破密码什么的是不可能的,一辈子都不可能的 ( ᗜ ‸ ᗜ )
首先在登录页面随便输入一串用户名和密码,打开BurpSuite
抓取HTTP请求包,确认网页路由信息。
从中可以看到三个关键参数:
uname
=> 用户名信息;psw
=> 登录密码信息;btnLogin
=> 判断用户是否点击登录按钮。
大致猜测后端SQL查询语句如下: