一、 SQL注入
原理
SQL注入就是把SQL命令插入到Web表单然后提交到所在页面请求(查询字符串),从而达到欺骗服务器执行恶意的SQL命令。它是利用现在已有的应用程序,将SQL语句插入到数据库中执行,执行一些并非按照设计者意图的SQL语句。
原因
根据相关技术原理,SQL注入可以分为平台层注入和代码层注入。前者由不安全的数据库配置或数据库平台的漏洞所致;后者主要是由于程序员对输入未进行细致地过滤,从而执行了非法的数据查询。基于此,SQL注入的产生原因通常表现在以下几方面:
- 不当的类型处理;
- 不安全的数据库配置;
- 不合理的查询集处理;
- 不当的错误处理;
- 转义字符处理不合适;
- 多个提交处理不当。
危害
- 数据库信息泄漏:数据库中存放的用户的隐私信息的泄露。
- 网页篡改:通过操作数据库对特定网页进行篡改。
- 网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。
- 数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户被窜改。
- 服务器被远程控制,被安装后门。经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统。
- 破坏硬盘数据,瘫痪全系统。
防御
- 严格的数据类型;
- 字符转义;
- 使用预编译语句;
- 存储过程;
二、 跨站脚本攻击(Cross Site Scripting)
原理
攻击者往Web页面里插入恶意html标签或者javascript代码。 分别是反射型XSS、持久型XSS和DOM XSS
危害
- 网络钓鱼,盗取各类用户的账号;
- 窃取用户Cookie,获取用户隐私,或者利用用户身份进一步执行操作;
- 劫持用户(浏览器)会话,从而执行任意操作,例如进行非法转账、强制发表日志等;
- 强制弹出广告页面,刷流量等;
- 进行恶意操作,例如任意篡改页面信息,删除文章等,传播跨站脚本蠕虫,网页挂等;
- 进行基于大量的客户端攻击,如DDOS攻击;
- 结合其它漏洞,如CSRF漏洞
防御
- 代码里对用户输入的地方和变量都需要仔细检查长度和对”<”,”>”,”;”,”’”等字符做过滤;其次任何内容写到页面之前都必须加以encode,避免不小心把html
tag 弄出来。这一个层面做好,至少可以堵住超过一半的XSS 攻击; - 避免直接在cookie 中泄露用户隐私,例如email、密码等等;
- 通过使cookie 和系统ip 绑定来降低cookie 泄露后的危险。这样攻击者得到的cookie 没有实际价值,不可能拿来重放;
- 尽量采用POST 而非GET 提交表单;
三、 上传漏洞
原理
文件上传漏洞是指网络攻击者上传了一个可执行的文件到服务器,服务器未经任何检验或过滤,从而造成文件的执行。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。
危害
- 上传文件是Web脚本语言,服务器的Web容器解释并执行了用户上传的脚本,导致代码执行。
- 上传文件是Flash的策略文件crossdomain.xml,黑客用以控制Flash在该域下的行为(其他通过类似方式控制策略文件的情况类似);
- 上传文件是病毒、木马文件,黑客用以诱骗用户或者管理员下载执行。
- 上传文件是钓鱼图片或为包含了脚本的图片,在某些版本的浏览器中会被作为脚本执行,被用于钓鱼和欺诈。
防御
- 文件扩展名服务端白名单校验;
- 文件内容服务端校验;
- 上传文件重命名;
- 隐藏上传文件路径;
- 文件上传的目录设置为不可执行;
- 单独设置文件服务器的域名;
注意:以上几点,可以防御绝大多数上传漏洞,但是需要跟服务器容器结合起来。如果解析漏洞依然存在,那么没有绝对的安全。
四、 文件解析漏洞
IIS 6.0解析利用方法有两种
- 目录解析:在网站下建立文件夹的名字为 .asp、.asa 的文件夹,其目录内的任何扩展名的文件都被IIS当作asp文件来解析并执行,例如:/xx.asp/xx.jpg。
- 文件解析:在IIS6.0下,分号后面的不被解析,也就是说wooyun.asp;.jpg会被服务器看成是wooyun.asp
还有IIS6.0 默认的可执行文件除了asp还包含这三种.asa、.cer、.cdx ,例如:wooyun.asp;.jpg。
Apache解析漏洞后缀名解析漏洞
Apache 是从右到左开始判断解析,如果为不可识别解析,就再往左判断直到识别。
PHP CGI解析漏洞
在默认Fast-CGI开启状况下,上传一个名字为wooyun.jpg,内容为
<?PHP fputs(fopen('shell.php','w'),'<?php eval($_POST[cmd])?>');?>
的文件,然后访问wooyun.jpg/x.php,(x.php不存在)在这个目录下就会生成一句话木马 shell.php。
%00截断漏洞
当程序在输出含有chr(0)变量时,chr(0)后面的数据会被停止,换句话说,就是误把它当成结束符,后面的数据直接忽略,这就导致漏洞产生
五、 CSRF(Cross-Site Request Forgery)
原理:
CSRF是一种夹持用户在已经登陆的web应用程序上执行非本意的操作的攻击方式。相比于XSS,CSRF是利用了系统对页面浏览器的信任,XSS则利用了系统对用户的信任。
由上图分析我们可以知道构成CSRF攻击是有条件的:
- 客户端必须一个网站并生成cookie凭证存储在浏览器中
- 该cookie没有清除,客户端又tab一个页面进行访问别的网站
危害
攻击者利用会话劫持达到自己的目的,比如转账、积分等
防御
- GET、POST的正确使用;
- 利用验证码(在一定的情况下使用,但是为了防止客户产生不好印象,尽量不用);
- Referer Check(HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。但服务器并非任何时候都能取到referer、保护客户隐私,不作为预防主要手段) ;
- Anti CSRF Token: 为每一个表单生成一个随机数秘钥,并在服务器端建立一个拦截器来验证这个token,如果请求中没有token或者token内容不正确,则认为可能是CSRF攻击而拒绝该请求;
六、 DDos攻击 分布式拒绝服务(Distributed Denial of service Attack)
原理
- 攻击者想办法让目标服务器的磁盘空间、内存、进程、网络带宽等资源被占满,从而导致正常用户无法访问。
- 攻击者进行拒绝服务攻击,实际上让服务器实现两种效果:一是迫使服务器的缓冲区满,无法接收新的请求;二是使用IP欺骗,迫使服务器把合法用户的连接复位,影响合法用户的连接。
- 攻击者是使用傀儡机(俗称“肉鸡”,受病毒木马操控的计算机或服务器)作为攻击平台,通过大量伪装合法的请求占用大量网络资源,以达到使指定目标的网络或服务瘫痪中断。
危害:
服务器瘫痪、用户无法正常访问。
类型
- SYN Flood攻击:这种攻击方法是经典最有效的DDoS方法,主要是通过向受害主机发送大量伪造源 IP 和源端口的 SYN 或
ACK
包,导致主机的缓存资源被耗尽或忙于发送回应包而造成拒绝服务,可通杀各种系统的网络服务。这种攻击由于源头都是伪造的,所以追踪起来比较困难。但是,该攻击实施起来有一定难度,需要大量高带宽的僵尸主机。 - TCP 全连接攻击:这种攻击是为了绕过常规防火墙的检查而设计的。一般情况下,常规防火墙大多对于正常的 TCP
连接是放过的,但是很多网络服务程序能接受的 TCP 连接数是有限的。TCP全连接攻击就是通过许多僵尸主机不断地与受害服务器建立大量的
TCP 连接,直到服务器的内存等资源被耗尽而被拖跨,
从而造成拒绝服务。种攻击的特点是可绕过一般防火墙的防护而达到攻击;缺点是需要找很多僵尸主机,且僵尸主机的IP 是暴露,易被追踪。 - 刷 Script 脚本攻击:这种攻击是跟服务器建立正常的TCP连接, 并不断的向脚本程序提交查询、
列表等大量耗费数据库资源的调用。一般来说,
提交一个指令对客户端的耗费和带宽的占用是几乎可以忽略的,而服务器为处理此请求却可能要从上万条记录中去查出某个记录,这种处理过程对资源的耗费是非常大。攻击者只需通过代理向目标服务器大量递交查询指令,只需数分钟就会把服务器资源消耗掉而导致拒绝服务。这种攻击的特点是可以完全绕过普通的防火墙防护,
轻松找一些代理就可实施攻击;缺点是对付只有静态页面的网站效果会大打折扣,并且会暴露攻击者的IP地址。
防御:
- 采用高性能的网络设备;
- 尽量避免NAT的使用(NAT需要对地址来回转换,转换过程中需要对网络包的校验和进行计算,因此浪费了很多CPU的时间);
- 充足的网络带宽保证;
- 升级主机服务器硬件;
- 把网站做成静态页面;
- 增强操作系统的TCP/IP栈;
- 安装专业抗DDOS防火墙;
注意:IP Spoof: 即IP地址欺骗,是一台主机设备冒充另外一台主机的IP地址,与其它设备通信,从而达到某种目的技术。属于IP Spoof类的攻击还有TCP 半连接攻击,也就是SYN Flood攻击 。
参考博文:https://blog.csdn.net/weixin_36525275/article/details/79953106