WAF防护之API防护

前言

本示例仅做测试使用,进行学习交流,请自觉遵守法律法规!

本文中将 Web 应用防火墙简称为 WAF

问题描述

想通过 WAF 对 API 进行防护,如何配置。

问题分析

WAF 的 API 防护可以根据设定的 API 格式和参数,对请求API 流量进行检查,对不符合规则的动作执行观察或拦截。

解决方案

本文在 WAF 搭建成功,通过 WAF 可以访问到后端服务基础上,WAF 环境的搭建,您可以参考此链接

1.正常访问后端

使用 curl 发送 Get 请求方法测试。

┌──(rootkali)-[~/Test/waf]
└─# curl -i  shodan.xxxx.cn/sql/?id=1
HTTP/1.1 200 OK
Server: nginx
Date: Tue, 01 Mar 2022 07:42:31 GMT
Content-Type: text/html
Content-Length: 7933
Connection: keep-alive
Vary: Accept-Encoding
Last-Modified: Fri, 31 Oct 2014 19:10:23 GMT
ETag: "1efd-506bcbfada5c0"
Accept-Ranges: bytes
Access-Control-Allow-Origin: *
Access-Control-Request-Method: GET,POST,PUT
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: X-Custom-Heade
Vary: Accept-Encoding

可以看到请求正常发送,返回码为 200。

2.开启 API 防护

防护策略如下: alt 参数位置为 query,名称为 id,类型为 integer,范围为 1-3。

然后使用 curl 发送 Get 请求方法测试。

┌──(root)-[~/Test/waf]
└─# curl -i   shodan.xxxx.cn/sql/?id=1
HTTP/1.1 200 OK
Server: nginx
Date: Tue, 01 Mar 2022 08:12:01 GMT
Content-Type: text/html
Content-Length: 7933
Connection: keep-alive
Vary: Accept-Encoding
Last-Modified: Fri, 31 Oct 2014 19:10:23 GMT
ETag: "1efd-506bcbfada5c0"
Accept-Ranges: bytes
Access-Control-Allow-Origin: *
Access-Control-Request-Method: GET,POST,PUT
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: X-Custom-Heade
Vary: Accept-Encoding

可以发现当 id 参数取值为 1 时可以正常返回。

┌──(root)-[~/Test/waf]
└─# curl -i   shodan.xxxx.cn/sql/?id=4
HTTP/1.1 403 Forbidden
Server: nginx
Date: Tue, 01 Mar 2022 08:13:34 GMT
Content-Length: 98
Connection: keep-alive
Content-Type: text/html

<!DOCTYPE html> <html> <meta charset="utf-8"> <body> <p> !!! 非法访问 !!! </p> </body> </html>            

可以看到当 id 取值为4时(不在1-3范围内),返回自定义拦截响应,返回码为 403。

查看控制台日志管理:

alt alt

可以看到请求命中了 api_schema 规则,被拦截。

如果您有其他问题,欢迎您联系火山引擎技术支持服务

0
0
0
0
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论