WAF防护之敏感信息泄露

安全
前言

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

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

问题描述

想使用 WAF 的防敏感信息泄露,如何配置。

问题分析

WAF 的防敏感信息功能可以对返回的响应信息进行检测,防止用户的敏感信息(身份证号、手机号码、银行卡等)泄漏。

解决方案

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

1.正常访问后端

使用 curl 发送 Get 请求测试。

┌──(rootkali)-[~/Test/waf]
└─# curl -i  shodan.xxxx.cn/testinfo.php?id=phone
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 02 Mar 2022 04:56:52 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
X-Powered-By: PHP/5.6.9
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

<html>
16678xxx127
</html>

可以看到在没有配置防敏感信息泄露时,请求正常发送,参数为 id=phone,返回码为 200,且能够返回电话号码内容。

2.开启防敏感信息泄露

规则配置如下: alt

规则配置为拦截包含手机号的响应。

使用 GET 方法进行测试,:

┌──(root)-[~/Test/waf]
└─# curl -i  shodan.xxxx.cn/testinfo.php?id=phone
HTTP/1.1 403 Forbidden
Server: nginx
Date: Wed, 02 Mar 2022 05:02:18 GMT
Content-Length: 14
Connection: keep-alive

blocked by waf                                                

从上面可以看到使用 GET 方法,参数 id=phone 进行测试,包含手机号码的响应被拦截。

使用 POST 方法进行测试:

┌──(root)-[~/Test/waf]
└─# curl -X POST http://shodan.xxxx.cn/testinfo.php -d "id=phone" -v

> POST /testinfo.php HTTP/1.1
> Host: shodan.xxxx.cn
> User-Agent: curl/7.81.0
> Accept: */*
> Content-Length: 8
> Content-Type: application/x-www-form-urlencoded
> 
* Mark bundle as not supporting multiuse
< HTTP/1.1 403 Forbidden
< Server: nginx
< Date: Wed, 02 Mar 2022 05:08:00 GMT
< Content-Length: 14
< Connection: keep-alive
< 
* Connection #0 to host shodan.xxxx.cn left intact
blocked by waf                          

从上面可以看到使用 POST 方法,参数 id=phone 进行测试,包含手机号码的响应也被拦截。

查看攻击日志: alt

下面测试非电话格式的数字输出:

┌──(rootkali)-[~/Test/waf]
└─# curl -i http://shodan.xxxx.cn/testinfo.php?id=number
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 02 Mar 2022 05:13:15 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
X-Powered-By: PHP/5.6.9
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

<html>
12345678901
</html>

可以看到非电话格式的数字可以正常输出。

综上,防敏感信息泄露会拦截格式为电话、身份证、银行卡的内容,不影响非上述格式内容的响应。

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

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