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 ;
if ($query_string ~ "union.*select.*(") {
set $block_sql_injections ;
}
if ($query_string ~ "union.*all.*select.*") {
set $block_sql_injections ;
}
if ($query_string ~ "concat.*(") {
set $block_sql_injections ;
}
if ($block_sql_injections = ) {
return ;
}
## 禁掉文件注入
set $block_file_injections ;
if ($query_string ~ "[a-zA-Z0-9_]=http://") {
set $block_file_injections ;
}
if ($query_string ~ "[a-zA-Z0-9_]=(..//?)+") {
set $block_file_injections ;
}
if ($query_string ~ "[a-zA-Z0-9_]=/([a-z0-9_.]//?)+") {
set $block_file_injections ;
}
if ($block_file_injections = ) {
return ;
}
## 禁掉溢出攻击
set $block_common_exploits ;
if ($query_string ~ "(<|%3C).*script.*(>|%3E)") {
set $block_common_exploits ;
}
if ($query_string ~ "GLOBALS(=|[|%[0-9A-Z]{0,2})") {
set $block_common_exploits ;
}
if ($query_string ~ "_REQUEST(=|[|%[0-9A-Z]{0,2})") {
set $block_common_exploits ;
}
if ($query_string ~ "proc/self/environ") {
set $block_common_exploits ;
}
if ($query_string ~ "mosConfig_[a-zA-Z_]{1,21}(=|%3D)") {
set $block_common_exploits ;
}
if ($query_string ~ "base64_(en|de)code(.*)") {
set $block_common_exploits ;
}
if ($block_common_exploits = ) {
return ;
}
## 禁spam字段
set $block_spam ;
if ($query_string ~ "b(ultram|unicauca|valium|viagra|vicodin|xanax|ypxaieo)b") {
set $block_spam ;
}
if ($query_string ~ "b(erections|hoodia|huronriveracres|impotence|levitra|libido)b") {
set $block_spam ;
}
if ($query_string ~ "b(ambien|bluespill|cialis|cocaine|ejaculation|erectile)b") {
set $block_spam ;
}
if ($query_string ~ "b(lipitor|phentermin|pro[sz]ac|sandyauer|tramadol|troyhamby)b") {
set $block_spam ;
}
if ($block_spam = ) {
return ;
}
## 禁掉user-agents
set $block_user_agents ;
# Don’t disable wget if you need it to run cron jobs!
#if ($http_user_agent ~ "Wget") {
# set $block_user_agents ;
#}
# Disable Akeeba Remote Control 2.5 and earlier
if ($http_user_agent ~ "Indy Library") {
set $block_user_agents ;
}
# Common bandwidth hoggers and hacking tools.
if ($http_user_agent ~ "libwww-perl") {
set $block_user_agents ;
}
if ($http_user_agent ~ "GetRight") {
set $block_user_agents ;
}
if ($http_user_agent ~ "GetWeb!") {
set $block_user_agents ;
}
if ($http_user_agent ~ "Go!Zilla") {
set $block_user_agents ;
}
if ($http_user_agent ~ "Download Demon") {
set $block_user_agents ;
}
if ($http_user_agent ~ "Go-Ahead-Got-It") {
set $block_user_agents ;
}
if ($http_user_agent ~ "TurnitinBot") {
set $block_user_agents ;
}
if ($http_user_agent ~ "GrabNet") {
set $block_user_agents ;
}
if ($block_user_agents = ) {
return ;
}
}
web攻击之八:溢出攻击(nginx服务器防sql注入/溢出攻击/spam及禁User-agents)的更多相关文章
- nginx服务器防sql注入/溢出攻击/spam及禁User-agents
本文章给大家介绍一个nginx服务器防sql注入/溢出攻击/spam及禁User-agents实例代码,有需要了解的朋友可进入参考. 在配置文件添加如下字段即可 代码如下 复制代码 server { ...
- 网站跨站点脚本,Sql注入等攻击的处理
从360安全论坛里找到的一段代码,经过整理封装,直接在站点Global.asax文件或写一个HttpModule来拦截恶意请求即可: http://bbs.webscan.360.cn/forum.p ...
- [原]网站跨站点脚本,Sql注入等攻击的处理
从360安全论坛里找到的一段代码,经过整理封装,直接在站点Global.asax文件或写一个HttpModule来拦截恶意请求即可: http://bbs.webscan.360.cn/forum.p ...
- PHP防SQL注入和XSS攻击
摘要: 就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.在用户名输入框中输入:' or 1=1#,密码随便输入,这时候的合成后的SQL ...
- PHP防SQL注入攻击
PHP防SQL注入攻击 收藏 没有太多的过滤,主要是针对php和mysql的组合. 一般性的防注入,只要使用php的 addslashes 函数就可以了. 以下是一段copy来的代码: PHP代码 $ ...
- tp5怎么防sql注入 xss跨站脚本攻击
在 application/config.php 中有个配置选项 框架默认没有设置任何过滤规则,你可以是配置文件中设置全局的过滤规则 则会调用这些函数 自动过滤 // 默认全局过滤方法 用逗号分隔多个 ...
- 【荐】PDO防 SQL注入攻击 原理分析 以及 使用PDO的注意事项
我们都知道,只要合理正确使用PDO,可以基本上防止SQL注入的产生,本文主要回答以下几个问题: 为什么要使用PDO而不是mysql_connect? 为何PDO能防注入? 使用PDO防注入的时候应该特 ...
- 防sql注入攻击
这两天看了个防sql注入,觉得有必要总结一下: 首先需要做一些php的安全配置: 1 在php.ini 中把display_errors改成OFF display_errors = OFF 或在php ...
- PDO防 SQL注入攻击 原理分析 以及 使用PDO的注意事项
我们都知道,只要合理正确使用PDO(PDO一是PHP数据对象(PHP Data Object)的缩写),可以基本上防止SQL注入的产生,本文主要回答以下几个问题: 为什么要使用PDO而不是mysql_ ...
随机推荐
- centos修改mysql密码或者进入mysql后解决Access denied for user ''@'localhost' to database 'mysql错误
原因是MySQL的密码有问题 用mysql匿名用户可以进入数据库,但是看不见mysql数据库. 解决办法:具体操作步骤:关闭mysql:# service mysqld stop然后:# mysqld ...
- spring 注入属性
一.注入对象类型的数据 1.配置文件 User类与UserService类均需要创建对象.所以都配置其相应的bean类,另外user需作为userService的属性注入,所以userService需 ...
- linux c编程:popen
我们在执行shell命令比如cat /etc/group | grep root的时候,通过管道的机制将cat /etc/group的结果传递给grep root,然后将结果显示出来 linux中提供 ...
- CentOS7安装MySQL8.0小计
之前讲配置文件和权限的时候有很多MySQL8的知识,有同志说安装不太一样,希望发个文,我这边简单演示一下 1.环境安装 下载MySQL提供的CentOS7的yum源 官方文档:<https:// ...
- Django中的Cookie和Session操作以及CBV
1.Cookie 平常我们在浏览网页的时候,在需要输入密码的地方,如果已经登陆了一次,并且时间间隔比较近的话,是不需要登陆的,为什么了?这就是Cookie的作用. Cookie(或Cookies)指某 ...
- 改善程序与设计的55个具体做法 day3
条款07:为多态基类声明virtual析构函数 任何一本C++语法教材上都会讲这一点(如果没讲,扔掉它),这么做到原因是可以让delete pBase操作能够正确的执行子类的析构函数. 需要说明的是当 ...
- LeetCode:存在重复元素【217】
LeetCode:存在重复元素[217] 题目描述 给定一个整数数组,判断是否存在重复元素. 如果任何值在数组中出现至少两次,函数返回 true.如果数组中每个元素都不相同,则返回 false. 示例 ...
- QCon2016 上海会议汇总(1) - 前端技术实践
日程传送门:http://2016.qconshanghai.com/schedule 我这里重点总结下前端.移动端.团队管理.研发支撑相关的议题,谈谈我的感受. <Vue 2.0: 渐进式前端 ...
- js 动态加载事件的几种方法总结
本篇文章主要是对js 动态加载事件的几种方法进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助 有些时候需要动态加载javascript事件的一些方法往往我们需要在 JS 中动态添 ...
- python 3 协程函数
python 3 协程函数 1:把函数的执行结果封装好__iter__和__next__,即得到一个迭代器 2:与return功能类似,都可以返回值,但不同的是,return只能返回一次值,而yiel ...