1.文件上传漏洞
什么是文件上传漏洞:
由于程序员在对用户文件上传功能实现代码上没有严格限制用户上传的文件后缀以及文件类型或者处理缺陷,而导致用户可以越过其本身权限向服务器上上传可执行的动态脚本文件:
简单的来说:
服务器端没有对客户端上传的文件进行严格验证或过滤,用户可以上传一个可执行的脚本文件,并通过此脚本获得了执行服务器端命令的能力.
文件上传漏洞的危害:
攻击者可以直接上传一个一句话脚步,通过webshell工具(比如中国菜刀)直接对服务器进行控制
防御方法:
-
文件扩展名服务端白名单校验。(不要通过mime来控制,通过后缀名,而且后缀名最后写在一个加密文件里面)
-
文件内容服务端校验。(防止上传的内容有恶意的代码,和文件包含漏洞一起触发)
-
上传文件重命名。(上传的文件不能轻易访问到)
-
隐藏上传文件路径。(上传的文件不能轻易访问到)
以上几点,可以防御绝大多数上传漏洞,但是需要跟服务器容器结合起来。如果解析漏洞依然存在,那么没有绝对的安全。
具体介绍:https://www.secpulse.com/archives/95987.html
2.文件包含漏洞
什么是文件包含漏洞:文件包含漏洞是代码注入的一种。其原理就是注入一段用户能控制的脚本或代码,并让服务器端执行,代码注入的典型代表就是文件包含File inclusion。文件包含可能会出现在jsp、php、asp等语言中。服务器通过函数去包含任意文件时,由于要包含的这个文件来源过滤不严,从而可以去包含一个恶意文件,而我们可以构造这个恶意文件来达到邪恶的目的。
文件包含漏洞的危害:
1.web服务器的文件被外界浏览导致信息泄露
2.脚本被任意执行所造成的影响,典型影响如下:
- 篡改网站
- 执行非法操作
- 攻击其他网站
防御方法:在php中,文件包含需要配置 allow_url_include=On(远程文件包含)、allow_url_fopen=On(本地文件包含) 。所以,我们可以将其关闭,这样就可以杜绝文件包含漏洞了。但是,某些情况下,不能将其关闭,必须进行包含的话,我们可以使用白名单过滤的方法,只能包含我们指定的文件。这样,就可以杜绝文件包含漏洞了。
具体介绍:https://www.jianshu.com/p/3514f0fd79f7
3.SQL注入
什么是SQL注入:SQL注入是因为后台SQL语句拼接了用户的输入,而且Web应用程序对用户输入数据的合法性没有判断和过滤,前端传入后端的参数是攻击者可控的,攻击者可以通过构造不同的SQL语句来实现对数据库的任意操作。比如查询、删除,增加,修改数据等等,如果数据库的用户权限足够大,还可以对操作系统执行操作。
SQL注入的危害:
1、数据库中存储的用户隐私信息泄漏;
2、通过操作数据库对某些网页进行篡改;
3、修改数据库一些字段的值,嵌入网马链接,进行挂马攻击;
4、数据库服务器被恶意操作,系统管理员帐户被窜改;
5、数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统;
6、破坏硬盘数据,导致全系统瘫痪;
如何防御:
-
Web 应用中用于连接数据库的用户与数据库的系统管理员用户的权限有严格的区分(如不能执行 drop 等),并设置 Web 应用中用于连接数据库的用户不允许操作其他数据库
-
设置 Web 应用中用于连接数据库的用户对 Web 目录不允许有写权限。
-
严格限定参数类型和格式,明确参数检验的边界,必须在服务端正式处理之前对提交的数据的合法性进行检查
-
使用 Web 应用防火墙
具体介绍:https://mp.weixin.qq.com/s/hX-qwtepWp9jtqQ9Mliamw
4.XSS攻击
什么是XSS漏洞:跨站脚本攻击XSS(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页面时,嵌入Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。XSS攻击针对的是用户层面的攻击!
XSS攻击的危害:
(1)窃取管理员帐号或Cookie,入侵者可以冒充管理员的身份登录后台。使得入侵者具有恶意操纵后台数据的能力,包括读 取、更改、添加、删除一些信息。
(2)窃取用户的个人信息或者登录帐号,对网站的用户安全产生巨大的威胁。例如冒充用户身份进行各种操作。
(3)网站挂马。先将恶意攻击代码嵌入到Web应用程序之中。当用户浏览该挂马页面时,用户的计算机会被植入木马。
(4)发送广告或者垃圾信息。攻击者可以利用XSS漏洞植入广告,或者发送垃圾信息,严重影响到用户的正常使用。
XSS攻击防御方式:
我们经常用<script>alert(1)</script>检测是不是有XSS漏洞,一旦弹出了1就说明有,那么我们该如何防范呢?
1.对用户输入进行检查,检查敏感字符,替换敏感字符
2.后端对输入参数进行过滤,过滤敏感字符,替换敏感字符
ps:不是说这样就安全了,我可以插入的可不只是js,还有其他html标签如<a>,还可以插入属性如οnclick="",还可以利用URL的锚#让浏览器不向服务器说明写入请求头Referer字段中,骗过服务器。所以最好的做法其实是
利用token技术。
具体介绍:https://mp.weixin.qq.com/s/CvCdk9NdAA4WGGnTNRVRWQ
5.CSRF(跨站请求伪造漏洞)
什么是CSRF:跟XSS漏洞攻击一样,存在巨大的危害性。你可以这么来理解:攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,
CSRF的危害:可以伪造以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等
如何防御:
1.验证 HTTP Referer 字段
2.在请求地址中添加 token 并验证(Anti-CSRF token)
具体介绍:https://mp.weixin.qq.com/s/iVjQ01CxIlLMsH-06VgYHw
6.XXE漏洞
什么是XXE漏洞:XXE漏洞全称XML External Entity Injection即XML外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、×××内网网站、发起dos×××等危害。xxe漏洞触发的点往往是可以上传xml文件的位置,没有对上传的xml文件进行过滤,导致可上传恶意xml文件。
XXE的危害:加载xml文件的之后加载执行了恶意的代码
XXE的防御:
1.使用开发语言提供的禁用外部实体的方法
2.过滤用户提供的XML数据
过滤关键字:<!DOCTYPE和<!ENTITY,或者SYSTEM和PUBLIC。
** 不允许XML中含有自己定义的DTD**
具体介绍:https://www.jianshu.com/p/e56a2b8fde80
总结:
简单理解:大部分的漏洞都是基于对用户输入的内容没有做扫描和严格控制,让hacker上传执行恶意了的代码从而获取到很高权限,可以对数据库,服务器,和用户的数据进行查看和修改。。