XSS攻击,CSRF攻击,SQL注入攻击,文件上传漏洞,DDoS攻击,其他攻击手段
1.XSS攻击
XSS(Cross Site Scripting)跨站脚本攻击,为了不与层叠样式表(CSS)混淆,故将跨站脚本攻击缩写为XSS。原理即在网页中嵌入恶意脚本,当用户打开网页时,恶意脚本便开始在用户浏览器上执行,以盗取客户端cookie、用户名、密码,甚至下载木马程式,危害可想而知。
以一个表单输入举例说明
<inputtype="text"name="firstname"value="">
倘若用户在表单中输入恶意脚本,即对输入做些处理,如:
<inputtype="text"name="firstname"value=""/><script>alert("longlong")</script><!--"/>
XSS防范:
之所以会发生XSS攻击,是因为用户输入的数据变成了代码, 因此需要对用户输入的数据进行HTML转义处理,将输出的“尖括号”、“单引号”、“引号”之类的特色符号进行转义。
跨站脚本攻击(也称为XSS)指利用网站漏洞从用户那里恶意盗取信息。用户在浏览网站、使用即时通讯软件、甚至在阅读电子邮件时,通常会点击其中的链接。攻击者通过在链接中插入恶意代码,就能够盗取用户信息。攻击者通常会用十六进制(或其他编码方式)将链接编码,以免用户怀疑它的合法性。网站在接收到包含恶意代码的请求之后会产成一个包含恶意代码的页面,而这个页面看起来就像是那个网站应当生成的合法页面一样。许多流行的留言本和论坛程序允许用户发表包含HTML和javascript的帖子。假设用户甲发表了一篇包含恶意脚本的帖子,那么用户乙在浏览这篇帖子时,恶意脚本就会执行,盗取用户乙的session信息。
CSRF攻击
CSRF攻击的全称跨站请求伪造(Cross Site Request Forgery),通过盗用用户的身份信息,以你的名义向第三方网站发起恶意请求,若转账、盗取账号、发信息、邮件。流程框图如下:
所以CSRF攻击一般场景是:
1、用户登录受信站点A,生成本地cookie;
2、用户没有退出站点A,访问了恶意站点B。
1、将cookie设置为HttpOnly
CSRF攻击很大程度是利用了浏览器的cookie,为了防止站内XSS漏洞,cookie设置HttpOnly属性,JS脚本就无法读取到cookie中的信息,避免攻击者伪造cookie的情况出现。
设置方式参考:https://www.cnblogs.com/relucent/p/4171478.html
2、增加token
CSRF攻击之所以成功,主要是攻击中伪造了用户请求,而用户请求的验证信息都在cookie中,攻击者就可以利用cookie伪造请求通过安全验证。因此抵御CSRF攻击的关键就是,在请求中放入攻击者不能伪造的信息,并且信息不在cookie中。
SQL注入攻击
SQL注入攻击就是把SQL命令伪装成正常的http请求参数,传递到服务端,欺骗服务器最终执行恶意的SQL命令,达到入侵目的。
SQL注入攻击原理如下:
String sql = "select * from user where nick = '" + nickname + "' and password = '" + password + "'";Statement st = (Statement) conn.createStatement();ResultSet rs = st.executeQuery(sql);
上述代码是校验用户名、密码是否有效,查询结果记录数大于0则表示有效。正常逻辑是用户名、密码匹配数据库记录;但攻击者会利用http参数进行SQL注入攻击,即password参数输入’ or ‘1’ = '1,导致SQL语句变为
select * from user where nick = 'zhangshan' and password = '' or '1' = '1';
DDoS攻击
DDoS(Distributed Denial Of Service)攻击即分布式服务攻击,借助公共网络,将数量庞大的计算器设备(肉鸡)联合起来,对一个或多个目标发动攻击,从而达到瘫痪目标主机的目的。
DDoS攻击手段
1、SYN flood
攻击者伪造大量无效IP,不断与目标主机建立TCP链接,导致服务器维护了一个非常大的链接等待列表,占用大量系统资源,直至新链接无法建立。
这种攻击是利用了TCP三次握手的异常处理机制,即第三次握手,服务端在没有收到客户端ACK报文时,服务端会进行多次SYN+ACK重试,然后维护一个等待列表,而系统会为即将建立的TCP连接分配一部分资源。资源耗尽,系统也就无法再建立TCP连接。
2、DNS query flood
攻击者伪造大量无效域名,发送给目标服务器解析,这些域名均为无效域名,导致DNS服务器耗用大量资源去处理这些无效域名,造成DNS解析域名超时,达到攻击目的。
什么是文件上传漏洞#
文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。常见场景是web服务器允许用户上传图片或者普通文本文件保存,而用户绕过上传机制上传恶意代码并执行从而控制服务器。
可以看出来这种攻击的危害很大,攻击者一旦拿到服务器权限,那必然“天下大乱”。想要预防这种攻击必然要知道这种攻击的原理,攻击的方式。这样我们才能做出更好的应对。本文就从攻击原理,攻击方式,预防方法等方面来介绍下文件上传漏洞。知己知彼,方能百战不殆。
预防文件上传漏洞的一些方法#
客户端校验文件名
在客户端使用JS脚本判断上传的文件名是否在白名单之内,如果不符合直接拒绝上传。但是这种校验很容易让攻击者绕过,比如说攻击者可以禁用JS,也可以先上传一个分发的文件名,让后将请求截住,手动将文件名改成非法的文件名。所以光前端进行校验是远远不够的,还需要后台一同进行校验。
服务端文件名校验
上面提到攻击者可以绕过前端校验,所以还需要后台一起校验文件名是否在白名单内。但是光校验文件名的攻击者还是能有办法绕过。比如说0x00截断(上面提到的,hacker.php%00.jpg),因此还需要其他手段进行进一步校验。
文件头校验
查看上传过来的文件的文件头是否和扩展名匹配。这种方式一定程度上能降低文件上传成功的概率。但是个人觉得最稳妥的预防方法还是以下几种。
将上传上来的文件和Web服务器隔离,专门存放到一台文件服务器上,通过文件ID来访问。如果非要将文件存放在Web服务器一起,可以将存放文件的文件夹的可执行权限去掉。
将上传的文件进行随机重新命名。
什么是OWASP Top 10
OWASP(开放式Web应用程序安全项目)的工具、文档、论坛和全球各地分会都是开放的,对所有致力于改进应用程序安全的人士开放,其最具权威的就是“10项最严重的Web 应用程序安全风险列表” ,总结了Web应用程序最可能、最常见、最危险的十大漏洞,是开发、测试、服务、咨询人员应知应会的知识。
A1 注入injection
将不安全的命令作为命令发送给解析器,会产生类似于SQL注入、NoSQL注入、OS注入和LDAP注入(轻量目录访问协议) 的缺陷,攻击者可以构造恶意数据通过注入缺陷的解析器执行没有权限的非预期命令或访问数据。
A2 失效的身份认证
通过错误使用应用程序的身份认证和会话管理功能,攻击者能够破译密码、密钥或会话令牌,或者暂时或永久的冒充其他用户的身份。
A3 敏感数据泄露
这个比较好理解,一般我们的敏感信息包括密码、财务数据、医疗数据等,由于web应用或者API未加密或不正确的保护敏感数据,这些数据极易遭到攻击者利用,攻击者可能使用这些数据来进行一些犯罪行为,因此,未加密的信息极易遭到破坏和利用,我们应该加强对敏感数据的保护,web应用应该在传输过程中数据、存储的数据以及和浏览器的交互时的数据进行加密,保证数据安全。
A4外部实体(XXE)
XXE 全称为XML External Entity attack 即XML(可扩展标记语言) 外部实体注入攻击,早期或配置错误的XML处理器评估了XML文件外部实体引用,攻击者可以利用这个漏洞窃取URI(统一资源标识符)文件处理器的内部文件和共享文件、监听内部扫描端口、执行远程代码和实施拒绝服务攻击。
A5失效的访问控制
通过身份验证的用户,可以访问其他用户的相关信息,没有实施恰当的访问权限。攻击者可以利用这个漏洞去查看未授权的功能和数据,eg:访问用户的账户、敏感文件、获取和正常用户相同的权限等.
A6 安全配置错误
安全配置错误是比较常见的漏洞,由于操作者的不当配置(默认配置,临时配置,开源云存储,http标头配置,以及包含敏感信息的详细错误),导致攻击者可以利用这些配置获取到更高的权限,安全配置错误可以发生在各个层面,包含平台、web服务器、应用服务器、数据库、架构和代码。
A7 跨站脚本(xss)
xss攻击全称为跨站脚本攻击,当应用程序的新网页中包含不受信任的、未经恰当验证、转义的数据或可以使用HTML、JavaScript的浏览器API更新的现有网页时,就会出现xss漏洞,跨站脚本攻击是最普遍的web应用安全漏洞,甚至在某些安全平台都存在xss漏洞。xss会执行攻击者在浏览器中执行的脚本,并劫持用户会话,破坏网站或用户重定向到恶意站点,使用xss还可以执行拒绝服务攻击。
A8不安全的反序列化
不安全的反序列化可以导致远程代码执行、重放攻击、注入攻击或特权升级攻击
A9使用含有已知漏洞的组件
组件(eg:库、框架或其他软件模块)拥有应用程序相同的权限,如果应用程序中含有已知漏洞,攻击者可以利用漏洞获取数据或接管服务器。同时,使用这些组件会破坏应用程序防御,造成各种攻击产生严重的后果。
A10 不足的日志记录和监控
这个和等保有一定的关系,不作介绍,不足的日志记录和监控,以及事件响应缺失或无效的集成,使攻击者能够进一步攻击系统、保持持续性的或攻击更多的系统,以及对数据的不当操作。
MD5将任意长度的”字节串”变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,从数学原理上说,是因为原始的字符串有无穷多个,这有点象不存在反函数的数学函数。
MD5的典型应用是对一段Message(字节串)产生fingerprint(指纹),以防止被”篡改”。举个例子,你将一段话写在一个叫 readme.txt文件中,并对这个readme.txt产生一个MD5的值并记录在案,然后你可以传播这个文件给别人,别人如果修改了文件中的任何内容,你对这个文件重新计算MD5时就会发现。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的”抵赖”,这就是所谓的数字签名应用。
CC攻击
CC攻击的原理就是攻击者控制某些主机不停地发大量数据包给对方服务器造成服务器资源耗尽,一直到宕机崩溃。CC主要是用来消耗服务器资源的,每个人都有这样的体验:当一个网页访问的人数特别多的时候,打开网页就慢了,CC就是模拟多个用户(多少线程就是多少用户)不停地进行访问那些需要大量数据操作(就是需要大量CPU时间)的页面,造成服务器资源的浪费,CPU长时间处于100%,永远都有处理不完的连接直至就网络拥塞,正常的访问被中止。
CC攻击其实属于DDoS攻击的一种,这种攻击普遍都是流量不是很高,但是破坏性非常大,直接导致系统服务挂了无法正常服务。评长期处于防护状态经验的我来说可以分为以下几种类型:
1、SYN-CC攻击;这种比较常见,黑客直接使用高并发来请求目标导致目标网站或应用无法提供正常服务。防护无非就是常规的并发限制,一般的硬防都可以过滤这些常规的CC攻击。
2、POST流量耗用型;这种是利用目的地址不限制动态请求,恶意提交数据交互导致服务中断,常规的这种带宽耗用都很高,如果不是弹性带宽还真会长时间被耗用完cpu、内存、带宽资源。还有更恐怖让用户看傻眼的是,网站注册短信接口被post恶意请求导致几秒钟消耗完几千元的短信费用,目前在这个攻击中这种受影响的网站占比非常大,曾经有几个朋友都是因为这个事情找我帮他们彻底解决了。
这里不得不说小编的朋友无笔秀才了,他们官网短信接口余额2000多在几秒内直接消耗完,开始他们购买了XX云的waf防火墙,最后发现还是屏蔽不完,重新充值的费用又在几分钟内消耗完,最后找到墨者安全,通过墨者技术人员分析后发现waf过滤只过滤了60%左右的恶意请求,效果一般,即刻就给他上了墨者新开发的指纹识别防护就稳定下来了,连续几天恶意请求都非常多直接进黑名单,让黑客再无法消耗接口费用了。
3、模拟UA以及常规的百度伪装;这种攻击也算常规伪装了,非常多,毕竟国内百度爬虫多。目测只要有网站攻击,就一定会出现伪装百度的CC攻击。
4、浏览器漏洞CC请求攻击;利用浏览器漏洞控制浏览器来发动攻击,请求真实的地址,这种可以说是目前最难防护的攻击,目前没有人能百分百说能搞定这个攻击,不过有这个实力的人非常少,所以目前还不用担心。这么多年来,我接触过这种类型的攻击,都需要定制化解决,也总共遇到过2次这种攻击,也很完美解决了,因为这个访问确实都是正常访问,与其他的不同就是他不是伪装,是真实请求。
5、疯狂代理型超多肉鸡IP请求型;网上好多代理网站,黑客购买这些代理IP来发动恶意的请求,做代理的估计有一半是被人购买去搞CC攻击
1) 什么是DDoS攻击?
DDoS攻击就是分布式的拒绝服务攻击,DDoS攻击手段是在传统的DoS攻击基础之上产生的一类攻击方式。单一的DoS攻击一般是采用一对一方式的,随着计算机与网络技术的发展,DoS攻击的困难程度加大了。于是就产生了DDoS攻击,它的原理就很简单:计算机与网络的处理能力加大了10倍,用一台攻击机来攻击不再能起作用,那么DDoS就是利用更多的傀儡机来发起进攻,以比从前更大的规模来进攻受害者。常用的DDoS软件有:LOIC。
在这里补充两点:第一就是DDOS攻击不仅能攻击计算机,还能攻击路由器,因为路由器是一台特殊类型的计算机;第二是网速决定攻击的好和快,比如说,如果你一个被限制网速的环境下,它们的攻击效果不是很明显,但是快的网速相比之下更加具有攻击效果。
DDoS是针对IP的攻击,而CC攻击的是服务器资源
简易CC攻击防御策略
确定Web服务器正在或者曾经遭受CC攻击,那如何进行有效的防范呢?
(1).取消域名绑定
一般cc攻击都是针对网站的域名进行攻击,比如我们的网站域名是“www.abc.com”,那么攻击者就在攻击工具中设定攻击对象为该域名然后实施攻击。 对于这样的攻击我们的措施是取消这个域名的绑定,让CC攻击失去目标。
(2).域名欺骗解析
如果发现针对域名的CC攻击,我们可以把被攻击的域名解析到127.0.0.1这个地址上。我们知道127.0.0.1是本地回环IP是用来进行网络测试的,如果把被攻击的域名解析到这个IP上,就可以实现攻击者自己攻击自己的目的,这样他再多的肉鸡或者代理也会宕机,让其自作自受。
(3).更改Web端口
一般情况下Web服务器通过80端口对外提供服务,因此攻击者实施攻击就以默认的80端口进行攻击,所以,我们可以修改Web端口达到防CC攻击的目的。运行IIS管理器,定位到相应站点,打开站点“属性”面板,在“网站标识”下有个TCP端口默认为80,我们修改为其他的端口就可以了。
(4).屏蔽IP
我们通过命令或在查看日志发现了CC攻击的源IP,就可以在防火墙中设置屏蔽该IP对Web站点的访问,从而达到防范攻击的目的。
恶意机器人攻击
Bot 简单理解为:
通过自动化脚本,批量的 重复的 慢速的 变换IP 来发送 正常请求 从而实现某种特殊目的非传统意义网络层面(layer 1-7)的攻击 而是“合理”利用平台业务逻辑中的非技术性漏洞,实现获利
攻击attack ?更像是 --> 滥用abuse、欺诈fraud -- > 业务安全反欺诈/风控
- 批量注册/垃圾注册
奖励现金,刷初始号:新手礼包,做任务,得到好装备/卡牌,进行贩卖
- 撞库攻击/盗号
盗取账户现金、游戏装备等
- 恶意灌水/诈骗机器人,工会拉人:群聊、私信
- 批量注册/垃圾注册
奖励现金,示例:猎豹移动live.me,每个用户注册奖励1美元
虚拟物品奖励, - 刷排名,刷虚假人气,粉丝,点赞,排名
- 恶意灌水/诈骗机器人
简单粗暴的恶意灌水:直接发帖赌博、色情广告等
聊天机器人诈骗:批量的上传虚假照片/个人资料,机器人主动/被动聊聊天,钓鱼(发红包、仙人跳、杀猪盘)
ICMP Flood(即ICMP 洪水攻击):当 ICMP ping 产生的大量回应请求超出了系统的最大限度,以至于系统耗费所有资源来进行响应直至再也无法处理有效的网络信息流,这就是 ICMP 洪水攻击。简单说攻击者向一个子网的广播地址发送多个ICMP Echo请求数据包。并将源地址伪装成想要攻击的目标主机的地址。然后该子网上的所有主机均会对此ICMP Echo请求包作出答复,向被攻击的目标主机发送数据包,使此主机受到攻击,导致网络阻塞。ICMP Flood攻击主要的目的使网络瘫痪,这也是最常见和最常用的网络攻击行为之一。
ICMP实质是控制信息协议,一般位于IP层,主要通过含有ICMP功能的主机与路由器之间发送ICMP数据包,来达到实现信息查询和错误通知的功能。因此攻击者利用icmp获取主机信息,时间、路由信息等。所以为攻击者创造了极大得便利条件。常利用ICMP攻击的操作有:利用ICMP echo数据包进行DDOS攻击;利用ICMP定向进行IP欺骗和窃听;利用ICMP的路由器信息绕过防火墙进行远程控制。
DNS劫持原理
DNS劫持就是dns系统被入侵或人为的修改某些记录,如A记录,用专业的术语来讲就是通过某些手段取得某域名的解析记录控制权,进而修改此域名的解析结果,导致对该域名的访问由原IP地址转入到修改后的指定IP,其结果就是对特定的网址不能访问或访问的是假网址。
DNS 污染的原理
现行标准中 DNS 查询通常使用 UDP 协议并且没有任何验证机制,并且根据惯例查询者会接受第一个返回的结果而抛弃之后的。因此只需监控 53 端口(DNS 标准端口)的 UDP查询数据报并分析,一旦发现敏感查询,则抢先向查询者返回一个伪造的错误结果,从而实现 DNS 污染。
DNS污染并无法阻止正确的DNS解析结果返回,但由于旁路产生的数据包发回的速度较国外DNS服务器发回的快,操作系统认为第一个收到的数据包就是返回结果,从而忽略其后收到的数据包,从而使得DNS污染得逞。