网站建设、公众号开发、微网站、微商城、小程序就找牛创网络 !

7*24小时服务专线: 152-150-65-006 023-68263070 扫描二维码加我微信 在线QQ

web安全团结互助,让我们共同进步!

当前位置:主页 > 技术资讯 > 网络安全 > web安全 >

我们的优势: 10年相关行业经验,专业设计师量身定制 设计师一对一服务模式,上百家客户案例! 企业保证,正规流程,正规合作 7*24小时在线服务,售后无忧

带有WAF功能的Web应用以防止常见的如SQL注入、XSS等黑客攻击

文章来源:重庆网络安全 发布时间:2020-01-08 10:02:38 围观次数:
分享到:

摘要:本文将展示如何编写用于Express的WAF中间件,Web服务的安全性以及如何防止常见的黑客攻击,例如SQL注入,XSS

本文将展示如何编写用于Express的WAF中间件,Web服务的安全性以及如何防止常见的黑客攻击,例如SQL注入,XSS。

blob.png

首先提供完整的演示代码:

var express = require('express');var app = express();//当访问根目录时触发app.get('/', function (req, res) {   res.send('Hello ShareWAF.com'); })//WAF中间件app.use(function(req, res, next) {    var path = req.url;    if(waf_detect(path) == false){        next();    } });//使用正则表达式,检测字符串是否含有攻击特征,检测到攻击特征返回true,没检测到返回falsefunction waf_detect(str_to_detect){ //Rule from ShareWAF(sharewaf.com)    var regexp_rule =[        /select.+(from|limit)/i,        /(?:(union(.*?)select))/i,        /sleep\((\s*)(\d*)(\s*)\)/i,        /group\s+by.+\(/i,        /(?:from\W+information_schema\W)/i,        /(?:(?:current_)user|database|schema|connection_id)\s*\(/i,        /\s*or\s+.*=.*/i,        /order\s+by\s+.*--$/i,        /benchmark\((.*)\,(.*)\)/i,        /base64_decode\(/i,        /(?:(?:current_)user|database|version|schema|connection_id)\s*\(/i,        /(?:etc\/\W*passwd)/i,        /into(\s+)+(?:dump|out)file\s*/i,        /xwork.MethodAccessor/i,        /(?:define|eval|file_get_contents|include|require|require_once|shell_exec|phpinfo|system|passthru|preg_\w+|execute|echo|print|print_r|var_dump|(fp)open|alert|showmodaldialog)\(/i,        /\<(iframe|script|body|img|layer|div|meta|style|base|object|input)/i,        /(onmouseover|onmousemove|onerror|onload)\=/i,        /javascript:/i,        /\.\.\/\.\.\//i,        /\|\|.*(?:ls|pwd|whoami|ll|ifconfog|ipconfig|&&|chmod|cd|mkdir|rmdir|cp|mv)/i,        /(?:ls|pwd|whoami|ll|ifconfog|ipconfig|&&|chmod|cd|mkdir|rmdir|cp|mv).*\|\|/i,        /(gopher|doc|php|glob|file|phar|zlib|ftp|ldap|dict|ogg|data)\:\//i    ];    for(i=0; i< regexp_rule.length; i++){        if(regexp_rule[i].test(str_to_detect) == true){ console.log("attack detected, rule number:", "("+i+")", regexp_rule[i]); return true;        }    }    return false; }var server = app.listen(8000, function () {   var host = server.address().address   var port = server.address().port })

此示例是Express实现的支持WAF的Web应用程序。


该代码重点介绍了WAF中间件,该中间件实现了WAF保护逻辑的核心代码:


//WAF中间件app.use(function(req, res, next) {    var path = req.url;    if(waf_detect(path) == false){        next();    } });

这种简洁的中间件可以过滤客户发起的请求,并确定请求路径中是否存在恶意指令。 如果存在,则中间件之间不允许next(),即不允许继续请求,因此请求被中断。


恶意指令检测使用正则表达式,这是WAF的常见检测方法。 这套规则来自ShareWAF。

//Rule from ShareWAF(sharewaf.com) var regexp_rule =[        /select.+(from|limit)/i,        /(?:(union(.*?)select))/i,        /sleep\((\s*)(\d*)(\s*)\)/i,        /group\s+by.+\(/i,        /(?:from\W+information_schema\W)/i,        /(?:(?:current_)user|database|schema|connection_id)\s*\(/i,        /\s*or\s+.*=.*/i,        /order\s+by\s+.*--$/i,        /benchmark\((.*)\,(.*)\)/i,        /base64_decode\(/i,        /(?:(?:current_)user|database|version|schema|connection_id)\s*\(/i,        /(?:etc\/\W*passwd)/i,        /into(\s+)+(?:dump|out)file\s*/i,        /xwork.MethodAccessor/i,        /(?:define|eval|file_get_contents|include|require|require_once|shell_exec|phpinfo|system|passthru|preg_\w+|execute|echo|print|print_r|var_dump|(fp)open|alert|showmodaldialog)\(/i,        /\<(iframe|script|body|img|layer|div|meta|style|base|object|input)/i,        /(onmouseover|onmousemove|onerror|onload)\=/i,        /javascript:/i,        /\.\.\/\.\.\//i,        /\|\|.*(?:ls|pwd|whoami|ll|ifconfog|ipconfig|&&|chmod|cd|mkdir|rmdir|cp|mv)/i,        /(?:ls|pwd|whoami|ll|ifconfog|ipconfig|&&|chmod|cd|mkdir|rmdir|cp|mv).*\|\|/i,        /(gopher|doc|php|glob|file|phar|zlib|ftp|ldap|dict|ogg|data)\:\//i    ];

该规则只是WAF正则检测的一部分,如果您熟悉正则表达式,则可以编写自己的规则来扩展检测能力。


使用Node启动上述程序,并模拟访问以发起攻击:


http://127.0.0.1:8000/index.html?select * from admin

也就是说,在url中传递select * from admin的最常见的SQL注入攻击指令:

blob.png

如您所见,该网站无法打开。 并在后台输出拦截信息,并提示触发哪个WAF保护规则。

本文由 重庆网络安全 整理发布,转载请保留出处,内容部分来自于互联网,如有侵权请联系我们删除。

相关热词搜索:WAF功能 Web应用 SQL注入 XSS 黑客攻击

上一篇:渗透测试:利用前端断点拦截和JS脚本替换对前端加密数据的修改
下一篇:利用脚本查看日志,了解系统被入侵的过程

热门资讯

鼠标向下滚动