当前位置: 首页 > article >正文

skyler实战渗透笔记(十)—IMF

skyler实战渗透笔记:

笔记是为了记录实战渗透学习过程,分享渗透过程思路与方法。

请注意:

对于所有笔记中复现的终端或服务器,都是自行搭建环境或已获授权渗透的。使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,我概不负责。

0x00 前言

欢迎来到我的第一个Boot2Root虚拟机“IMF”。国际货币基金组织是一个情报机构,你必须侵入所有的旗帜,并最终扎根。旗子一开始很容易,随着你的进步变得越来越难。每个标志都包含对下一个标志的提示。我希望你喜欢这个虚拟机,并学到一些东西。

 困难:初学者/温和

0x01 信息收集

老规矩,找一下目标机器

确定IP,看看端口

0x02 渗透get shell

就开了一个80端口,那么访问下看看,根据前面背景,有很多flag并且从易到难一步一步循环递进的,那么话不多说,开启F12,每个页面都搜一遍flag:

搜到第一个flag,发现是个base64,解密看下:

提示是all the files,看了下每个页面的js文件,第三个明显是base64加密,但是解不出来,看前面两个也像是,那么组合起来试下:

 

解出来flag2,并且也是个base64加密的字符串,解码看下:

 

解出来没太看明白啥意思,那么直接访问试试:

发现是个登录窗口,有一个登录表单,随便填个admin/123登录抓包看下:

 

发现注释里说明了,sql没法工作,采用硬编码密码的方式,那么说明密码直接写在代码里,并且应该是使用字符串对比来进行判断是否相等。另外看了下返回信息,提示用户名不对:

 

那么看来用户名不是user,从网页上找一下:

发现了三个用户名,分别试了下,rmichaels可以用,使用这个发现提示密码不对: 

 

 

如果是硬编码的,猜测他使用了strcmp函数,strcmp()是对于相等的字符串返回0,不同的字符串返回非0,但如果比较非字符串,strcmp()将返回null。在php中null==0是true。使得数组看起来与硬编码的密码字符串匹配。

所以此处传一个数组,将pass字段重命名为pass[]

用户名使用rmichaels,将pass字段重命名为pass[],成功获取到了flag3

看到了flag3,并且给了个跳转。这里burpsuite查看跳转不方便,我们从firefox里构造post请求

点击这个链接,跳转到了另一个页面:

 

随便点了点,没什么发现,但是看到url里带参数不停地在变,简单尝试一手:单引号

 

OK,存在sql注入,那么放进sqlmap泡一下: 

 

提示cookie无效,那么从真实环境里抓包复制cookie并在sqlmap里指定: 

 

  跑出来结果确实存在sql注入

  

那么继续跑表看下:

sqlmap -u http://192.168.245.151/imfadministrator/cms.php?pagename=upload --cookie "PHPSESSID=sq62aeus2872qoiep9rhtl3mb2" --current-db

sqlmap -u http://192.168.245.151/imfadministrator/cms.php?pagename=upload --cookie "PHPSESSID=sq62aeus2872qoiep9rhtl3mb2" -D admin --tables

sqlmap -u http://192.168.245.151/imfadministrator/cms.php?pagename=upload --cookie "PHPSESSID=sq62aeus2872qoiep9rhtl3mb2" -D admin -T pages --columns

sqlmap -u http://192.168.245.151/imfadministrator/cms.php?pagename=upload --cookie "PHPSESSID=sq62aeus2872qoiep9rhtl3mb2" -D admin -T pages --dump

发现了两个图片的路径,尝试访问下第一个:

 有个二维码,扫一下:

扫出来发现是一个flag4

解开base编码:

 应该就是一个上传页面了,访问下:

先传一个一句话木马试试:

不支持php文件,那么应该只能传图片类的,随便找个图片在后面加上一句话语句,做个一句话图片马:

好吧,还有waf,看来一句话是不管用,得找个过waf的木马,这里选择kali自带的weevely

复制做出来的text.php里的内容,利用gif欺骗的原理,在木马前面加上GIF89a:

然后把后缀改成gif,上传成功:

成功传上去后,查看响应中包含了图片的路径:

尝试用weevely连接,链接成功:

weevely http://192.168.245.151/imfadministrator/uploads/2b88488881a7.gif zxp

看到目录下有个flag5的文件,查看下:

解码一下:

 agent,代理服务,看来下面要通过代理连进来,那先找一下本地的代理文件:

find / -name agent &2>/dev/null (这里用&2>把报错的信息输出到黑洞里,防止干扰视线)

执行一下这两个文件:

查看当前监听的端口:

发现多了一个7788,说明代理在执行

但是重新用nmap扫描,发现还是扫不出这个端口来,猜测应该也是隐藏了,需要knock敲门按序列访问端口来解开iptable的隐藏规则:

到/usr/local/bin目录下查看access_codes发现端口序列:7482 8279 9467

尝试用knock敲门试下:

敲开了7788端口。尝试nc访问下:

需要一个agent ID。那这个ID只能从agent本身来入手了,先尝试把agent拿下来:

复制到web目录,直接在kali中wget访问下载:

是个ELF可执行文件,那么用ltrace跟踪下程序堆栈看看:

fgets取一个前台输入的数据,先随便输入一个看看:

发现程序是通过strncmp函数对比输入和写死的一个数字ID,那么这个48093572应该就是agentID了

 这边ID正确,其中选项2和3可以让用户输入内容,
如此看来是要通过缓冲区溢出7788端口的agent程序,这边用二进制修改exp
为该程序创建一个利用程序,首先为msfvenom有效负载创建一个shellcode

 利用二进制py修改exp进行提权
将文件写入本地agentsploit.py中

flag6{R2gwc3RQcm90MGMwbHM=}

Gh0stProt0c0ls

这台靶机,涵盖了知识量挺大的,从熟悉BP、写木马、gdb拆解、二进制、缓冲区溢出等等,花了太多时间


http://www.kler.cn/a/449945.html

相关文章:

  • 第十四章 C++ 数字
  • sqoop的参数有哪些?
  • 拦截器魔法:Spring MVC中的防重放守护者
  • Vue.js 响应接口
  • GitCode 光引计划投稿|MilvusPlus:开启向量数据库新篇章
  • Day13 苍穹外卖项目 工作台功能实现、Apache POI、导出数据到Excel表格
  • python学opencv|读取图像(十七)认识alpha通道
  • 计算机基础复习12.23
  • TSN(时间敏感网络)介绍
  • 【微服务】SpringBoot 整合Redis实现延时任务处理使用详解
  • 重温设计模式--代理模式
  • LeetCode72. 编辑距离(2024冬季每日一题 37)
  • 不同路径
  • 2023-2024年云赛道模拟题库
  • Java重要面试名词整理(二):SpringMyBatis
  • Mac系统下 idea中如何创建maven项目
  • 从零开始C++游戏开发之第七篇:游戏状态机与回合管理
  • 买卖股票的最佳时机 IV - 困难
  • MySQL数据库多主模式解决方案
  • Mybatis-Plus 开发技巧
  • STM32-按键扫描配置
  • 【漏洞复现】BIG-IP Next Central Manager OData 注入漏洞(CVE-2024-21793)
  • 基于springboot+vue实现的医院质控上报系统 (源码+L文+ppt)4-124
  • 养生保健:开启健康生活之旅
  • WebPlotDigitizer 安装和配置指南
  • 网络中冗余备份