红队打靶:Me and My Girlfriend打靶思路详解(vulnhub)
目录
写在开头
第一步:主机发现和端口扫描
第二步:Web渗透(修改XFF代理)
第三步:数据库手工枚举
第四步:sudo php提权
总结与思考
写在开头
本篇博客在自己的理解之上根据大佬红队笔记的视频进行打靶,详述了打靶的每一步思路,并非复现writeup,读者耐心看完,定会有所收获。Me and My Girlfriend这个靶机是近期遇到的最简单的一太靶机,步骤较少,读者可直接盲打试试。涉及到的知识点包括x-forwarded-for主机头转发、 手工爆库、sudo php提权,完整的打靶思路详见:
「红队笔记」靶机精讲:Me and My Girlfriend - 手工爆库、超帅php提权、打一遍这靶机、帅到自己都不知道自己是谁,whoami呼啊咪?_哔哩哔哩_bilibili
本文针对的靶机源于vulnhub,详情见:
Me and My Girlfriend: 1 ~ VulnHub
下载链接见:
https://download.vulnhub.com/meandmygirlfriend/Me-and-My-Girlfriend-1.ova
本靶机的目标是拿到两个flag即可,即flag1.txt和flag2.txt,这个靶机还涉及了一点剧情,靶机描述如下:
Description
Description: This VM tells us that there are a couple of lovers namely Alice and Bob, where the couple was originally very romantic, but since Alice worked at a private company, "Ceban Corp", something has changed from Alice's attitude towards Bob like something is "hidden", And Bob asks for your help to get what Alice is hiding and get full access to the company!
Difficulty Level: Beginner
Notes: there are 2 flag files
大意:有一对cp,Alice和Bob,原本很浪漫相爱,但自从Alice在一家私企"Ceban Corp"工作之后,Alice对Bob的态度就变了。Bob请求你黑了这个公司的服务器,解开Alice的心结。
靶机下载成功后用vmware打开,将网络链接设置为NAT模式。靶机启动之后如下:
第一步:主机发现和端口扫描
常规思路,这个靶机比较简单,就不细讲了:
nmap -sn /10.10.10.0/24 //主机发现
nmap -sT --min-rate 10000 10.10.10.152 //TCP全端口扫描
nmap -sT -sV -O -sC -p22,80 10.10.10.152 //用默认脚本进行服务版本、操作系统探测
nmap -sU --top-ports 20 10.10.10.152 //UDP常用端口探测
nmap --script=vuln -p22,80 10.10.10.152 //默认漏洞脚本扫描
我的kali机器所在网段是10.10.10.0,主机发现靶机是10.10.10.152,开放端口是22和80,信息如下:
第二步:Web渗透(修改XFF代理)
看来是只能从80端口Web入手,浏览器访问靶机ip,显示如下:
这页面提示我们,站点只能本地local访问,查看网页源代码如下:
提示我们应该研究以下如何使用x-forwarded-for, X-Forwarded-For(XFF)是用来识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段,换句话就是无论你用了多少层代理,XFF头都能给你显示出每层代理和原始ip,如果没有XFF或者另外一种相似的技术,所有通过代理服务器的连接只会显示代理服务器的IP地址,而非连接发起的原始IP地址,这样的代理服务器实际上充当了匿名服务提供者的角色,如果连接的原始IP地址不可得,恶意访问的检测与预防的难度将大大增加。
那么我们就添加一个XFF头部,内容写localhost表示本地,也就是在每个请求中添加如下一行:
x-forwarded-for:localhost
用burpsuit拦截请求,然后改包添加x-forwarded-for:localhost即可访问:
如下图,添加XFF头部为本地后,可以访问站点10.10.10.152了:
但如果每次请求页面都要手动添加x-forwarded-for:localhost还是挺麻烦的一件事。因此可以在BurpSuite代理proxy模块中的Options选项的Match and Replace添加一条规则:
点击Add,将请求头中增加x-forwarded-for:localhost即可,这样每次请求时都会添加这一行,就无需每次请求都手动添加了。
点击OK,保证在Enabled列是勾选状态。
第三步:数据库手工枚举
现在观察web页面,Ceban Corp正是靶机描述中Alice的公司名称。这个界面其实没太多信息,Login是登录界面,需要有账号和密码。
Register是注册界面,如下,干脆就随便注册一个账号试试:
我这里注册的账号和密码都是aaa,注册完成之后Login,登录成功:
点击Profile,可以看到当前账号的信息。
注意url中有一个user_id=12,这估计是一个查询,我们尝试能不能直接修改这个user_id,实现对其他用户账号密码的查看:
将 user_id改为1后,成功看到了其他账号,那我们手工更换user_id为1到11,看看有哪些凭据,重点看有没有账号为alice(靶机描述的提示),果然找到了,当user_id=5时,是Alice的凭据:
这密码都是前端明文显示的,alice账号的密码是4lic3 ,我们尝试用ssh登录,如果数据库密码和ssh密码一致的话,我们就能够成功ssh,如下图,撞库成功了!
第四步:sudo php提权
先找找有没有用户flag:
在.my_secret目录下看到了flag1.txt,这个目录下还有一个my_secret.txt,看看是啥:
看来Alice准备在公司找对象搞外遇了,Bob真惨。不过这和我们打靶没啥关系,我们要想办法提权,首先先sudo -l查看当前alice用户有哪些sudo权限:
好家伙,有php的sudo权限,凡是sudo权限有语言的,都可以用这个语言构造反弹shell或启动shell的操作,这里咱也不用反弹shell,直接用php执行系统命令启动shell好了,命令如下:
sudo /usr/bin/php -r "system('/bin/bash');"
提权成功:
flag2.txt在root目录下:
至此打靶完成,感觉还挺容易的。
总结与思考
这个靶机相对于前几个靶机算是很简单的,涉及的知识点就是XFF头转发的原理与使用、手工爆库、sudo php提权。不过这个靶机体现了渗透中很明确的攻击链,也助于初学者了解常规渗透思路。还是总结一下打靶过程:
第一步:主机发现和端口扫描,确定入手点基本上是80。
第二步:Web渗透,直接浏览器访问靶机无法显示内容,提示我们修改XFF头部本地访问,于是用BurpSuite改包在请求头添加x-forwarded-for:localhost即可访问。
第三步:数据库手工枚举,注册账号登录后,发现url中存在user_id,怀疑这里是否是数据库直接查询的传参,直接秀嘎user_id发现可以找到alice的账号和密码,尝试撞库登录ssh,成功。
第四步:sudo -l枚举sudo权限的二进制可执行文件,发现有php,直接用php执行系统命令启动shell即可提权。
到此这个靶机就讲解完毕了 ,希望读者能够点赞关注多多支持!学渗透还是要实操呀。如果读者有什么打靶的问题也欢迎评论区留言指出,我一定知无不言!
相关文章:

红队打靶:Me and My Girlfriend打靶思路详解(vulnhub)
目录 写在开头 第一步:主机发现和端口扫描 第二步:Web渗透(修改XFF代理) 第三步:数据库手工枚举 第四步:sudo php提权 总结与思考 写在开头 本篇博客在自己的理解之上根据大佬红队笔记的视频进行…...

Mysql高级——索引(2)
常见索引 索引分类 在MySQL数据库,将索引的具体类型主要分为以下几类:主键索引、唯一索引、常规索引、全文索引。 分类含义特点关键字主键索引针对于表中主键创建的索引默认自动创建, 只能有一个PRIMARY唯一索引避免同一个表中某数据列中的值重复可以…...

【史上最硬核分享】Docker+jenkinsPipeline 运行实现 python 自动化(超详细)
一、实现思路 在 Linux 服务器安装 docker创建 jenkins 容器jenkins 中创建 pipeline 项目根据自动化项目依赖包构建 python 镜像(构建自动化 python 环境)运行新的 python 容器,执行 jenkins 从仓库中拉下来的自动化项目执行完成之后删除容器 二、环境准备 Linu…...

leetcode 3. 无重复字符的最长子串
2023.9.15 本题我用的暴力双层for循环 unordered_set 解决的,外循环控制字符起始位置,内循环将字符放入 unordered_set,并查找有无重复的元素。 用了一个全局变量记录最长字串的长度,局部变量count记录当前层循环的最长子串长度…...

doccano 文本标注工具使用
最近在做面向大模型的文本标注工作,涉及到多人协同的问题,因此用到了doccano工具。 这个工具可以使用docker进行安装,安装之后的启动也都比较简单。 关于基础使用(例如管理员登录、新建任务、上传数据集等)ÿ…...

快速排序算法的递归和非递归
基本思路 选择一个基准值,将数组划分三个区域,小于基准值的区域位于左侧,等于基准值的区域位于中间,大于基准值的区域位于右侧。将大于和小于区域继续进行分区,周而复始,不断进行分区和交换,直…...
Maven无法拉取SNAPSHOT依赖的解决办法
背景 自己所在的部门主要是为其他项目组提供基础组件,如果需要使用新特性,其他项目组还会经常引用SNAPSHOT版本的组件进行开发测试。平时自己做测试的时候,因为手里有源码,所以每次都是先执行 mvn install 在本地安装后ÿ…...

day16-面向对象综合练习(上)
1. 设计游戏的目的 锻炼逻辑思维能力利用Java的图形化界面,写一个项目,知道前面学习的知识点在实际开发中的应用场景 2. 游戏的最终效果呈现 Hello,各位同学大家好。今天,我们要写一个非常有意思的小游戏 —《拼图小游戏》 我们…...

在Windos 10专业版搭建Fyne(Go 跨平台GUI)开发环境
目录 在Windos 10专业版搭建Fyne(Go 跨平台GUI)开发环境一 Fyne 和 MSYS2简介1.1 Fyne1.2 MSYS2 二 安装 MSYS22.1 下载MSYS22.2 安装2.3 环境变量设置2.4 检测安装环境 三 参考文档 在Windos 10专业版搭建Fyne(Go 跨平台GUI)开发…...
漫谈:C、C++字符串的困局
由于历史的原因,C、C字符串是个很让程序员头疼的东西。 字符串被解读为字符数组,但是又不等价于字符数组,而是带有附加的结束符的字符数组。 结束符‘\0’也是一个字符,但是又不计算在字符串长度里面(strlen࿰…...
基于python+selenium的自动批量添加
场景 点击添加”新增“按钮,弹出”新增对话框“,输入各种数据,然后点击”确定“按钮,如此循环。数量多,这样操作累人。 selenium Selenium 是一个用于自动化 Web 浏览器操作的库,可以实现模拟点击、输入…...
gdb监视
怀疑踩内存了,如何利用gdb监视一段内存的值 在实际情况中,如果怀疑一个进程中的变量被踩内存了,但是不知道什么时候会被踩,就可以用下面的方法进行debug。GDB(GNU Debugger)是一个功能强大的调试工具&…...

STM32基础知识点总结
一、基础知识点 1、课程体系介绍 单片机概述arm体系结构STM32开发环境搭建 STM32-GPIO编程-点亮世界的那盏灯 STM32-USART串口应用SPI液晶屏 STM32-中断系统 STM32-时钟系统 STM32-ADC DMA 温湿度传感器-DHT11 2.如何学习单片机课程 多听理论、多理解、有问题及时提问 自己多…...

Python vs C#:首先学习哪种编程语言最好?
进入编码可能很困难。 最艰难的部分? 决定先学什么语言。 当谈到 Python 与 C# 时,可能很难知道在您的决定中要考虑哪些因素。 我们为您提供了有关这些全明星编程语言的所有信息。 什么是 C#? 自 2000 年作为 Microsoft Visual Studio 的一部分开发 C# 以来,它一直是开发人…...
代理IP和Socks5代理:跨界电商与全球爬虫的关键技术
跨界电商在全球化市场中崭露头角,而代理IP和Socks5代理则成为实现全球市场洞察和数据采集的不可或缺的工具。本文将深入探讨这两种代理技术在跨界电商、爬虫技术和出海战略中的关键作用。 引言: 介绍跨界电商的崛起和全球市场的机遇与挑战。引出代理IP…...
CentOS 7 调优之周期性的访问中断
文章目录 背景问题描述原因分析解决方案相关版本 背景 操作系统版本:CentOS Linux release 7.6.1810 (Core) 操作系统镜像安装后,未进行任何调整。正常部署应用,应用在 CentOS 7.9 未出现过此类现象。 问题描述 问题描述:负载教…...

SpringBoot表现层数据一致性
1.定义Restful类 说明:使用Data注解是Lombok库提供的一个注解,用于自动生成类的getter、setter、equals、hashcode和toString方法。 package com.forever.controller.utils;import lombok.Data;Data public class Restful {private Boolean flag;//dat…...
vue路由-两个树形结构数据-递归处理方法
1.vue静态路由 const dynamicRoutes [{path: /,name: /,component: () > import(//layout/index.vue),redirect: /home,meta: {isKeepAlive: true,},children: [{path: /home,name: home,component: () > import(//views/home/index.vue),meta: {title: 首页,isLink: ,…...

JSP SSM 成果展示系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计
一、源码特点 JSP SSM 冬奥建设成果展示系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的 源代码和数据库,系统主…...

脚本:python绘制七夕爱心
文章目录 效果脚本Reference 效果 脚本 import random from math import sin, cos, pi, log from tkinter import *CANVAS_WIDTH 640 # 画布的宽 CANVAS_HEIGHT 640 # 画布的高 CANVAS_CENTER_X CANVAS_WIDTH / 2 # 画布中心的X轴坐标 CANVAS_CENTER_Y CANVAS_HEIGHT /…...

【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...

srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...

2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...

QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...