web攻击之八:溢出攻击(nginx服务器防sql注入/溢出攻击/spam及禁User-agents)

web攻击之八:溢出攻击(nginx服务器防sql注入/溢出攻击/spam及禁User-agents)

一、什么是溢出攻击

    首先, 溢出,通俗的讲就是意外数据的重新写入,就像装满了水的水桶,继续装水就会溢出,而溢出攻击就是,攻击者可以控制溢出的代码,如果程序的对象是内核级别的,如dll、sys文件等,就可以直接操控系统内核了

    其次,分类:按对象名加以区分:IIS溢出、SQL溢出等,就是按对象名来加以区分,按特点区分:远程溢出、本地溢出

    最后,溢出的基本原理:一是内存溢出;二是缓冲区溢出

1、内存溢出

    内存溢出,是程序使用了不可靠的方式存取/复制内存缓冲区,或者是编辑设置的内存缓冲区太靠近数据结构等,进而导致内存缓冲区溢出,而溢出的字符就会取代后面的数据。例如,c语言不检查数组边界,不检查数据类型的可靠性,而c语言与机器内核代码接近,能直接访问内存和寄存器。

2、缓冲区溢出

    缓冲区是用户为程序运行时在计算机中申请的一段连续的内存,它保存了给定类型的数据,而缓冲区溢出就是通过向程序的缓冲区中写入超过其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其他的命令,以达到攻击的目的。

3、内存、缓冲区、堆、栈的概念与联系

    这部分留着以后单独阐述

nginx防御方法

本文章给大家介绍一个nginx服务器防sql注入/溢出攻击/spam及禁User-agents实例代码,有需要了解的朋友可进入参考。

在配置文件添加如下字段即可

server { 
## 禁SQL注入 Block SQL injections 
set $block_sql_injections 0; 
if ($query_string ~ "union.*select.*(") { 
set $block_sql_injections 1; 
} 
if ($query_string ~ "union.*all.*select.*") { 
set $block_sql_injections 1; 
} 
if ($query_string ~ "concat.*(") { 
set $block_sql_injections 1; 
} 
if ($block_sql_injections = 1) { 
return 444; 
} 
  
## 禁掉文件注入 
set $block_file_injections 0; 
if ($query_string ~ "[a-zA-Z0-9_]=http://") { 
set $block_file_injections 1; 
} 
if ($query_string ~ "[a-zA-Z0-9_]=(..//?)+") { 
set $block_file_injections 1; 
} 
if ($query_string ~ "[a-zA-Z0-9_]=/([a-z0-9_.]//?)+") { 
set $block_file_injections 1; 
} 
if ($block_file_injections = 1) { 
return 444; 
} 
  
## 禁掉溢出攻击 
set $block_common_exploits 0; 
if ($query_string ~ "(<|%3C).*script.*(>|%3E)") { 
set $block_common_exploits 1; 
} 
if ($query_string ~ "GLOBALS(=|[|%[0-9A-Z]{0,2})") { 
set $block_common_exploits 1; 
} 
if ($query_string ~ "_REQUEST(=|[|%[0-9A-Z]{0,2})") { 
set $block_common_exploits 1; 
} 
if ($query_string ~ "proc/self/environ") { 
set $block_common_exploits 1; 
} 
if ($query_string ~ "mosConfig_[a-zA-Z_]{1,21}(=|%3D)") { 
set $block_common_exploits 1; 
} 
if ($query_string ~ "base64_(en|de)code(.*)") { 
set $block_common_exploits 1; 
} 
if ($block_common_exploits = 1) { 
return 444; 
} 
  
## 禁spam字段 
set $block_spam 0; 
if ($query_string ~ "b(ultram|unicauca|valium|viagra|vicodin|xanax|ypxaieo)b") { 
set $block_spam 1; 
} 
if ($query_string ~ "b(erections|hoodia|huronriveracres|impotence|levitra|libido)b") { 
set $block_spam 1; 
} 
if ($query_string ~ "b(ambien|bluespill|cialis|cocaine|ejaculation|erectile)b") { 
set $block_spam 1; 
} 
if ($query_string ~ "b(lipitor|phentermin|pro[sz]ac|sandyauer|tramadol|troyhamby)b") { 
set $block_spam 1; 
} 
if ($block_spam = 1) { 
return 444; 
} 
  
## 禁掉user-agents 
set $block_user_agents 0; 
  
# Don’t disable wget if you need it to run cron jobs! 
#if ($http_user_agent ~ "Wget") { 
# set $block_user_agents 1; 
#} 
  
# Disable Akeeba Remote Control 2.5 and earlier 
if ($http_user_agent ~ "Indy Library") { 
set $block_user_agents 1; 
} 
  
# Common bandwidth hoggers and hacking tools. 
if ($http_user_agent ~ "libwww-perl") { 
set $block_user_agents 1; 
} 
if ($http_user_agent ~ "GetRight") { 
set $block_user_agents 1; 
} 
if ($http_user_agent ~ "GetWeb!") { 
set $block_user_agents 1; 
} 
if ($http_user_agent ~ "Go!Zilla") { 
set $block_user_agents 1; 
} 
if ($http_user_agent ~ "Download Demon") { 
set $block_user_agents 1; 
} 
if ($http_user_agent ~ "Go-Ahead-Got-It") { 
set $block_user_agents 1; 
} 
if ($http_user_agent ~ "TurnitinBot") { 
set $block_user_agents 1; 
} 
if ($http_user_agent ~ "GrabNet") { 
set $block_user_agents 1; 
} 
  
if ($block_user_agents = 1) { 
return 444; 
} 
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109273.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 重新认识Attributes.add

    重新认识Attributes.add昨天自己学习别人的编码,发现了控件ID.Attributes.add("","");用法,于是自己查来看,中间闹了不少的笑话;首先自己就搜错了对象,C#里有

    2022年7月2日
    26
  • 利用python制作电子签名

    利用python制作电子签名

    2021年11月19日
    90
  • 为什么说Python 是大数据全栈式开发语言

    为什么说Python 是大数据全栈式开发语言欢迎大家访问我的个人网站《刘江的博客和教程》:"www.liujiangblog.com"主要分享Python及Django教程以及相关的博客原文链接http://www

    2022年7月5日
    26
  • gb50174-2017电子信息系统机房设计规范发布时间_机房建设标准规范

    gb50174-2017电子信息系统机房设计规范发布时间_机房建设标准规范机房分级3.1.1电子信息系统机房应划分为A、B、C三级。设计时应根据机房的使用性质、管理要求及其在经济和社会中的重要性确定所属级别。3.1.2符合下列情况之一的电子信息系统机房应为A级1电子信息系统运行中断将造成重大的经济损失;2电子信息系统运行中断将造成公共场所秩序严重混乱。3.1.3符合下列情况之一的电子信息系统机房应为B级。1电子信息系统运行中断将造成较大的经济损…

    2022年9月1日
    3
  • 新手学计算机编程怎么入门 从哪学起

    新手学计算机编程怎么入门 从哪学起近些年有一种职业发展很快、人才需求量大、工资高,那就是程序员。他们的基本工作就是电脑编程,开发者各种各样的软件、APP,被很多人膜拜。如果你想成为一名程序员,有必要了解一下这些基本的电脑编程入门教程。1计算机编程怎么入门1、选择一门编程语言。虽然目前编程语言有600种左右,但是比较流行的编程语言只有几十种,所以尽量选择流行程度比较高的编程语言来入门编程。对于没有明确编程场景的初学者来说,尽量选择全场景编程语言,比如Java、Python、就是不错的选择,不仅应用范围广泛,而且也有大量的开发案例可以参

    2022年6月15日
    34
  • 慎用域名url转发功能_url转发域名可以带端口吗

    慎用域名url转发功能_url转发域名可以带端口吗许多域名注册商或虚拟主机商都提供一种免费的URL转发功能,让拥有一个主网站并同时拥有多个域名的用户实现多个域名指向同一个网站或网站子目录,但具体是通过什么机制实现的则大都讳忌莫深,往往只说“通过服务器的特殊技术设置”。同时,大多数服务商提供的URL转发还包括两种,不隐藏路径的URL转发与隐藏路径的URL转发,其中,不隐藏路径的URL转发指在跳转后浏览器地址栏显示真正的目标地址,而隐藏路径的URL转…

    2022年10月18日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号