原理大盘点身为网安从业者必须烂熟于心的web应

2019-08-16 20:33栏目:程序开发

  本文主要介绍web应用的常见的漏洞,从原理入手,了解其成因和可能导致的危害,从而进行有效的防御。希望对web安全感兴趣的小伙伴有所帮助。

  SQL注入就是把SQL命令插入到Web表单然后提交到所在页面请求(查询字符串),从而达到欺骗服务器执行恶意的SQL命令。

  它是利用现在已有的应用程序,将SQL语句插入到数据库中执行,执行一些并非按照设计者意图的SQL语句。

  根据相关技术原理,SQL注入可以分为平台层注入和代码层注入。前者由不安全的数据库配置或数据库平台的漏洞所致;后者主要是由于程序员对输入未进行细致地过滤,从而执行了非法的数据查询。

  (3)网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。

  (4)数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户被窜改。

  (5)服务器被远程控制,被安装后门。经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统。

  (2)窃取用户Cookie,获取用户隐私,或者利用用户身份进一步执行操作

  (3)劫持用户(浏览器)会话,从而执行任意操作,例如进行非法转账、强制发表日志等

  (5)进行恶意操作,例如任意篡改页面信息,删除文章等,传播跨站脚本蠕虫,网页挂等

  (1)代码里对用户输入的地方和变量都需要仔细检查长度和对””,””,”;”,”’”等字符做过滤;其次任何内容写到页面之前都必须加以encode,避免不小心把html tag 弄出来。这一个层面做好,至少可以堵住超过一半的XSS 攻击。

  (2)避免直接在cookie 中泄露用户隐私,例如email、密码等等。

  (3)通过使cookie 和系统ip 绑定来降低cookie 泄露后的危险。这样攻击者得到的cookie 没有实际价值,不可能拿来重放。

  文件上传漏洞是指网络攻击者上传了一个可执行的文件到服务器,服务器未经任何检验或过滤,从而造成文件的执行。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。

  (1)上传文件是Web脚本语言,服务器的Web容器解释并执行了用户上传的脚本,导致代码执行。

  (2)上传文件是Flash的策略文件crossdomain.xml,黑客用以控制Flash在该域下的行为(其他通过类似方式控制策略文件的情况类似);

  (4)上传文件是钓鱼图片或为包含了脚本的图片,在某些版本的浏览器中会被作为脚本执行,被用于钓鱼和欺诈。

  以上几点,可以防御绝大多数上传漏洞,但是需要跟服务器容器结合起来。如果解析漏洞依然存在,那么没有绝对的安全。

  第一种,在网站下建立文件夹的名字为 .asp、.asa 的文件夹,其目录内的任何扩展名的文件都被IIS当作asp文件来解析并执行。

  Apache 是从右到左开始判断解析,如果为不可识别解析,就再往左判断直到识别。

  当程序在输出含有chr(0)变量时,chr(0)后面的数据会被停止,换句话说,就是误把它当成结束符,后面的数据直接忽略,这就导致漏洞产生

  CSRF是一种夹持用户在已经登陆的web应用程序上执行非本意的操作的攻击方式。相比于XSS,CSRF是利用了系统对页面浏览器的信任,XSS则利用了系统对用户的信任。

  (2)网站A验证客户端的账户密码,成功则生成一个sessionID,并返回给客户端存储在浏览器中

  (4)网站B自动自动触发要求该客户端访问网站A(即在网站B中有链接指向网站A)

  (5)客户端通过网站B中的链接访问网站A(此时带携带有合法的sessionID进行访问网站A的)

  (6)此时网站A只需检验sessionID是否合法,合法则执行响应的操作(因此具体攻击就得看链接以及网站B要求访问时携带的数据)

  (2) 利用验证码(在一定的情况下使用,但是为了防止客户产生不好印象,尽量不用)

  (3) Referer Check(HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。但服务器并非任何时候都能取到referer、保护客户隐私,不作为预防主要手段)

  为每一个表单生成一个随机数秘钥,并在服务器端建立一个来验证这个token,如果请求中没有token或者token内容不正确,则认为可能是CSRF攻击而拒绝该请求。

  攻击者想办法让目标服务器的磁盘空间、内存、进程、网络带宽等资源被占满,从而导致正常用户无法访问。

  攻击者进行拒绝服务攻击,实际上让服务器实现两种效果:一是迫使服务器的缓冲区满,无法接收新的请求;二是使用IP欺骗,迫使服务器把合法用户的连接复位,影响合法用户的连接。

  攻击者是使用傀儡机(俗称“肉鸡”,受病毒木马操控的计算机或服务器)作为攻击平台,通过大量伪装合法的请求占用大量网络资源,以达到使指定目标的网络或服务瘫痪中断。

  (1)SYN Flood攻击:这种攻击方法是经典最有效的DDoS方法,主要是通过向受害主机发送大量伪造源 IP 和源端口的 SYN 或 ACK 包,导致主机的缓存资源被耗尽或忙于发送回应包而造成拒绝服务,可通杀各种系统的网络服务。这种攻击由于源头都是伪造的,所以追踪起来比较困难。但是,该攻击实施起来有一定难度,需要大量高带宽的僵尸主机。

  (2)TCP 全连接攻击:这种攻击是为了绕过常规防火墙的检查而设计的。一般情况下,常规防火墙大多对于正常的 TCP 连接是放过的,但是很多网络服务程序能接受的 TCP 连接数是有限的。TCP全连接攻击就是通过许多僵尸主机不断地与受害服务器建立大量的 TCP 连接,直到服务器的内存等资源被耗尽而被拖跨, 从而造成拒绝服务。种攻击的特点是可绕过一般防火墙的防护而达到攻击;缺点是需要找很多僵尸主机,且僵尸主机的IP 是暴露,易被追踪。

  (3)刷 脚本攻击:这种攻击是跟服务器建立正常的TCP连接, 并不断的向脚本程序提交查询、 列表等大量耗费数据库资源的调用。一般来说, 提交一个指令对客户端的耗费和带宽的占用是几乎可以忽略的,而服务器为处理此请求却可能要从上万条记录中去查出某个记录,这种处理过程对资源的耗费是非常大。攻击者只需通过代理向目标服务器大量递交查询指令,只需数分钟就会把服务器资源消耗掉而导致拒绝服务。这种攻击的特点是可以完全绕过普通的防火墙防护, 轻松找一些代理就可实施攻击;缺点是对付只有静态页面的网站效果会大打折扣,并且会暴露攻击者的IP地址。

  (2)尽量避免NAT的使用(NAT需要对地址来回转换,转换过程中需要对网络包的校验和进行计算,因此浪费了很多CPU的时间)

  附:IP Spoof: 即IP地址欺骗,是一台主机设备冒充另外一台主机的IP地址,与其它设备通信,从而达到某种目的技术。属于IP Spoof类的攻击还有TCP 半连接攻击,也就是SYN Flood攻击