栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

IMF 靶机笔记

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

IMF 靶机笔记

IMF靶机解题笔记

文章目录
    • IMF靶机解题笔记
      • 1. 靶机描述
        • 1.1 网卡介绍
        • 1.2 主机发现
        • 1.3 查看网卡地址
        • 1.4 发现IP
        • 1.5 端口扫描
        • 1.6 端口详情
      • 2. 信息收集
        • 2.1 网站首页
        • 2.2 Nikto信息收集
        • 2.3 Robots.txt
        • 2.4 网站敏感目录扫描
      • 3. 渗透过程(寻找Flag)
        • 3.1 contact.php
        • 3.2 imfadministrator
          • 3.2.1 登录绕过
        • 3.3 IMF CMS
          • 3.3.1 数据库
          • 3.3.2 表名
          • 3.3.3 列名
          • 3.3.4 数据
        • 3.4 uploadr942.php

1. 靶机描述 1.1 网卡介绍
网卡信息说明
网卡模式eth0
MAC地址08002715A872

IMF设置网卡界面。

1.2 主机发现

如何通过网卡类型和MAC地址来查找IMF靶机的IP。

Kali的网卡类型为桥接模式。
在命令行中输入ifconfig
1.3 查看网卡地址

当前IMF网卡为: 192.168.0.65
当前IMF靶机存在于: 192.168.0.64的网段下。

当前这个网段一共存在254个IP。
对当前网段所有IP进行扫描。

sudo arp-scan -I eth0 192.168.0.0/24
1.4 发现IP

出现IMF主机IP。
IP后的字段与MAC地址相同。
08:00:27:15:a8:72   <=>   08002715A872
MAC地址IMF本机
08002715A872192.168.0.94
1.5 端口扫描

查看当前服务开启了哪些端口。

sudo nmap -A -p- -sS -sC -T4 IP地址
命令命令描述
-A全面扫描
-p-全端口扫描
-sSSUN半连接扫描
-sC使用可能的漏洞脚本
-T4挂上4的写上目标

可以看到靶机的链接地址开放了一个80的http端口。
1.6 端口详情
端口开启情况开启服务版本信息
80/tcpopenhttpApache httpd 2.4.18 ((Ubuntu))
2. 信息收集 2.1 网站首页

可以看到这个IP链接只开放了一个HTTP服务,访问靶机网页。

在发现IP步骤中的IP即为靶机的网页URL

​ http://192.168.144.68/

2.2 Nikto信息收集

对网站进行信息收集。

使用Kali工具 "nikto" 对网站扫描进行信息收集。
/nikto.pl -h http://192.168.144.68

组件版本
ServerApache/2.4.18 (Ubuntu)
OSLinux 3.X | 4.X
2.3 Robots.txt

查看是否拥有Robots.txt信息。

2.4 网站敏感目录扫描

查看网站是否存在敏感目录。

python dirsearch.py -u "http://192.168.26.68/"
参数 -i 200,301,302 只显示响应码为200,301,302的目录

扫描出了四个文件目录,分别为:

/contact.php
/index.php
/index.php/login
/projects.php
3. 渗透过程(寻找Flag)

查看F12控制台中的数据,Flag很有可能藏在里面。

例如:Elements,Console,Network, Application中的cookies。

3.1 contact.php

​ 访问扫描到的敏感目录文件**contact.php**,平查看其源代码,找到 Flag1。

​ 可以很明显的看出网页源码中的 Flag 为 base64编码,我们需要解码。

flag1{allthefiles}
	将base64的密文解码后,可以看到 flag为 allthefiles 我们可以将其理解为需要将所有的文件都检查一遍,flag可能存在于所有的文件中。

通过这个 Flag 可能存在的提示,我们接着检查源码内所有的文件。看到一段 JavaScript 的文件名与 base64 的编码类型将其相似。

解码之后发现 yYXRvcg==} 这段 Flag 只有一部分。可以发现在个 JavaScript 文件之前还有两个文件名类似于 base64的编码类型,我们都将可疑js文件名复制进行解码直到为正常的 Flag 值。

我们也可以通过Kali的命令行来进行base64的解码。

echo "base64加密密文" | base64 -d
flag2{imfadministrator}

我们成功获得 Flag2。
一般网站的后台管理员账号都为 amdin 或者 administrator 前缀为 IMF 所以可以联想到这串 Flag 值可能为后台登录的账号。
既然获得了可疑的登录账号的用户名,我们现在需要一个登录的页面。
直接访问 login.php。

并没有找到该网页,思考一下,有没有可能 imfadministrator 账号就代表着登录页面。

3.2 imfadministrator

发现登录页面。

在用户名与密码处随便输入,Username:admin | imfadministrator | administrator 都显示 Invalid username 。

这个时候我们需要使用 BurpSuite 抓取登录数据包。

在这可以发现一段注释 通过翻译得知:

I couldn't get the SQL working, so I hard-coded the password. It's still mad secure through. - Roge

我无法使用SQL,所以我硬编码了密码。它仍然非常安全。-罗杰

无法使用 SQL 可以猜测并没有连接数据库。

  • 现在有 两种 思路:

    1. 尝试 SQL 注入

    ​ 来到 Kali 使用 sqlmap 工具跑一遍请求报文,看看是否存在 sql注入口 如果不存在可以大致确定这里并没有连接到数据库。

书写HTTP请求报文

使用 sqlmap 工具对该报文发起 sql注入 请求

sqlmap -r "请求报文地址"

等待一段时间后并没有出现可以进行 SQL注入 的点

利用 BurpSuite 与 sqlmap 联动插件再次对网页请求

下载地址:

https://github.com/c0ny1/sqlmap4burp-plus-plus/releases/tag/0.2

sqlmap4burp++.0.2.jar

再等待一段时间后依旧没有发现可以进行 SQL注入 的点,那么基本可以确定这里并没有与数据库连接。

    1. 爆破 破解密码

    如何获取到正确的用户名?

    ​ 我们暴力破解密码首先要获取 **正确的用户名 **,方才尝试的 admin | imfadministrator | administrator 都是错误的用户名,现在我们从网页中查找相关信息。

    ​ 我们对网页的所有页面进行浏览。发现在 Contact us(联系我们)中发现 **三个邮箱 **。

    ​ 因为在网站中,(联系我们)通常存在有网页相关的 联系方式 或者是 用户名 。并且通过浏览网页并没有发现其他对用户名相关的信息,所以现在 **猜测 **这三个邮箱很有可能为 用户名 。

三个用户名分别为:

rmichaels
akeith
estone

我们获取了三个 **疑似 **用户名的信息,再次来到登录界面进行登录测试

​ 在用户名处输入 rmichaels 随便输入密码提示 Invalid password 从此处可以知道我们的用户名正确了。既然知道了正确的用户名,开始使用 BurpSuite 爆破密码。

构建爆破模块

载入爆破密码

点击 Start attack开始爆破

​ 我们可以发现开始爆破后,爆破速度 **出奇的慢 **。如果这个靶机爆破速度就是这么慢,那么等我们爆破完之后比赛也可能 **结束了 **。所以这个靶机的密码应该 不是爆破 。

3.2.1 登录绕过

​ 既然这题既不是 SQL注入 也不是 爆破密码。那我们只能够考虑 登录绕过 了。

​ 因为刚才已经看到了那两行 没有连接数据库 的注释,所以这台服务器对我们的 **密码验证 ** 可能是依靠 PHP 来实现的。

思考:PHP中有没有可以 绕过密码 进行登录的呢。

  • 空密码绕过: 无法绕过。
  • 密码可能是用户名:无法绕过
  • 在pass后添加[],pass[]=密码:成功绕过
POST /imfadministrator/ HTTP/1.1
Host: 192.168.220.68
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 28
Origin: http://192.168.220.68
Connection: close
Referer: http://192.168.220.68/imfadministrator/
Cookie: PHPSESSID=6ktjal4gt30n9gujf964mfk7u3
Upgrade-Insecure-Requests: 1
user=rmichaels&pass[]=123456

flag3{Y29udGludWVUT2Ntcw==}
	flag3是一段base64密文,需要解密
	flag3{continueTOcms}
3.3 IMF CMS

成功登录后,flag3与网页引导我们前往CMS网页

进入CMS

网页中存在可以点击的界面,粗略点击 Home | Upload Report 以及 Ctrl + u 查看网页源码并没有发现值得关注的信息。

我们点击 Disavowed List 后发现一些不一样的网页元素

观察网页URL,发现网页中包含变量 pagename=disavowlist 。并且 Home | Upload Report 的URL中都包含这个变量。

思考:是否存在 SQL注入 ?

  • 利用 sqlmap 工具对URL进行扫描查看是否存在 SQL注入点。
  • 因为进入这个页面是需要 登录 之后才能够进行访问,所以我们需要 模拟登录 。
  • 在 sqlmap 工具中添加 –cookie 参数。

cookie值 在 数据包 中携带

sqlmap -u "http://192.168.66.68/imfadministrator/cms.php?pagename=home" --cookie "PHPSESSID=4slum3gafbqgfq8jv7g3fengq3"

可以发现存在 MySQL注入点 。既然存在 MySQL注入点,那我们直接使用 sqlmap 工具梭哈拿下。

3.3.1 数据库
available databases [5]:

[*] admin
[*] information_schema
[*] mysql
[*] performance_schema
[*] sys
3.3.2 表名
Database: admin
[1 table]
+-------+
| pages |
+-------+
3.3.3 列名
Table: pages
[3 columns]
+----------+--------------+
| Column   | Type         |
+----------+--------------+
| id       | int(11)      |
| pagedata | text         |
| pagename | varchar(255) |
+----------+--------------+
3.3.4 数据
[4 entries]
+----------------------+
| pagename             |
+----------------------+
| disavowlist          |
| home                 |
| tutorials-incomplete |
| upload               |
+----------------------+

可以看到,列名 pagename 中有三条数据为我们的网页参数。这三个 disavowlist | home | upload 参数我们都对页面进行过访问,唯独有一条数据特殊 tutorials-incomplete 我们将数据构建到URL中进行查看 pagename=tutorials-incomplete。

构建URL进入网页。

我们成功进入到网页之中,并且可以在网页中查看到一张 二维码。将二维码进行截图扫码。

flag4{dXBsb2Fkcjk0Mi5waHA=}
	flag4是一段base64密文,需要解密
	flag4{uploadr942.php}
3.4 uploadr942.php

将加密的base64密文成功解码后 给了我们一个 php目录,对目录进行访问可以发现是一个文件上传 界面 。

上传 php木马探针 文件

可以发现提示为 文件类型错误 ,即为 上传失败,我们尝试一下其他的类型上传。

  • php:上传失败,文件类型错误。
  • gif : 上传失败,无效文件数据。

将 BurpSuite 抓到的包发送到 Repeater 模块。既然是无效文件数据,我们可能需要使用到 图片码。在请求报文中添加图片码:GIF89a 。点击 Send 发送。

可以看到成功上传,但是我们并不知道文件成功上传到哪个目录文件夹了,所以无法使用 中国蚁剑 进行连接。

使用 dirsearch 工具对 imfadministrator目录 进行扫描。

成功扫描到一个 uploads目录 对其进行访问

访问 uploads目录

Forbidden
You don't have permission to access this resource.

被禁止的
您没有访问此资源的权限。

我们被这个网页禁止访问。我们回到 BurpSuite 。我们将文件成功上传的时候,响应包里含有一段 注释内容 。

这段注释内容在文件成功上传的时候显示了,所以判断这段注释内容有可能网页将我们上传的文件名进行了加密处理。我们将这段注释内容添加到URL里进行查看。

提示 Not Found 未找到该文件,因为我们上传的是 gif 的文件类型,在这段密文后面添加 .gif

http://192.168.66.68/imfadministrator/uploads/1380ec41d84e.gif

我在 gif 里构建的是 phpinfo(),现在能查看到php的详细信息。所以可以得知:网页将我们文件里面的内容运行了。

我们将请求报文中的 phpinfo 修改为 php木马探针 。

出现了 WAF,并且提示到 Eval php function detected 检测到 eval 函数(不允许使用eval)。

我们将 eval 替换为 assert

​ 成功上传! 使用 中国蚁剑 连接。

但是使用蚁剑又碰到一个问题,在测试连接的时候并没有获得到 Response 。所以我们可能还要换成命令执行函数。

回到 BurpSuite 将assert 替换为 命令执行函数 。

view-source:http://192.168.66.68/imfadministrator/uploads/e7c900b33f29.gif?777=id
访问网页源码成功获得 id

将这个网页数据包刷新,使用 BurpSuite 抓包并且发送到 Repeater 模块,点击 Send 发送。

将 id 改为 ls 查看网页目录,点击 Send 发送。

这么多文件是因为我做了好久上传了很多文件,,,

将 ls 改为 cat+flag5_abc123def.txt

flag5{YWdlbnRzZXJ2aWNlcw==}
	flag5是一段base64密文,需要解密
	flag5{agentservices}

这个靶机还存在 flag6 但是能力有限解不出。
请求各位大佬指点。


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/973864.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号