雷池waf安装与测试


环境介绍

本次实验用到的是两个docker容器,实际拓扑如下

其中nginx的配置文件放入/root/nginx 目录下

web网站的配置放入/root/lnmp 目录下

部署代码如下

docker run -d -p 5001:80 -v /root/lnmp:/app/public --name lnmp fbraz3/lnmp:5.6
# 部署了lnmp容器作为目标网站容器


cat << 'EOF' > /root/lnmp/index.php
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>服务器收到的内容是:</h1>
    <?php
    print_r($_REQUEST);
    ?>
</body>
</html>
EOF
# 编写一个页面,用于查看服务器实际收到的内容

docker run -d -p 5000:5000 -v /root/nginx:/etc/nginx/conf.d --link lnmp:lnmp --name nginx nginx
# 部署nginx容器

cat << 'EOF' > /root/nginx/proxy.conf
server {
    listen 5000;

    location / {
        proxy_pass http://lnmp:80;
        proxy_set_header Host $http_host;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
EOF
# 编写反向代理的nginx配置文件

docker restart nginx
# 重启nginx容器,使得配置文件生效

浏览器访问5000端口,查看效果

拦截GET请求

nginx中$request_uri 变量是包含请求参数的原始URI,不包含主机名,相当于:$document_uri?$args

可以在nginx配置文件中加入过滤的代码

cat << 'EOF' > /root/nginx/proxy.conf
server {
    listen 5000;

    location / {
    	if ($request_uri ~* "hacker") {
            return 403;
        }
        proxy_pass http://lnmp:80;
        proxy_set_header Host $http_host;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
EOF
# 其中第6~8行是加入的内容
# ~*是忽略大小写

docker restart nginx
# 重启nginx容器,使得配置文件生效

再次访问网页,带上关键字,可以看到触发过滤效果

可以让匹配上恶意代码后跳转到对应的页面,修改之后的nginx配置文件如下

cat << 'EOF' > /root/nginx/proxy.conf
server {
    listen 5000;
    location / {
        if ($request_uri ~* "hacker") {
            return 302 /sayno.html; 
        }
        proxy_pass http://lnmp:80;
        proxy_set_header Host $http_host;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
# 第6行,将报错改成302跳转

访问效果如下

拦截POST等请求

Nginx并没有自带拦截POST请求的功能,所以我们需要引入第三方waf模块,需要注意引入第三方模块本身就有风险,生产环境需要谨慎!

安装开源waf

本教程推荐国产开源waf长亭雷池 WAF 社区版,官方网站为:https://waf-ce.chaitin.cn/

粘贴如下命令即可装好

bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/setup.sh)"

安装好后浏览器访问https://<IP地址>:9443/

后台登录的用户名和随机密码在安装后的命令行页面

添加站点反向代理

点击防护站点——站点管理——添加站点

攻击尝试

先正常访问

使用xss的payload进行尝试

被拦截,并且可以在后台看到拦截记录

使用sql注入的payload进行尝试

可以看到被拦截

使用xxe攻击payload

正常被拦截

对于无参rce的拦截还是有些问题的

反爬虫功能可以开启

人机验证界面

不知道是否可以反爬虫


文章作者: AaronXu
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 AaronXu !
评论
 上一篇
C盘空间不够,可以这样扩容 C盘空间不够,可以这样扩容
有时候电脑用久了C盘空间莫名其妙就满了,看着红红的存储空间提醒是不是很难受啊,而且windows系统在C盘满了的情况下,很多操作都会出现问题。 ​ 之前在遇到这种情况下,很多小伙伴是不是选择删除文件,然而又不知道什么文件重要不能删除,真
2024-07-28
下一篇 
Docker搭建云端开发环境codeserver Docker搭建云端开发环境codeserver
最终效果 改权限(可选)我习惯在容器里面也能使用 docker 命令,所以需要修改docker.sock 的权限并将其映射到容器内。
2023-05-05
  目录