常见漏洞

SQL注入危害

这些危害包括但不局限于:

  1. 数据库信息泄露:数据库中存放的用户的隐私信息的泄露
  2. 网页篡改:通过操作数据库对特定网页进行篡改
  3. 网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网页链接,进行挂马攻击。
  4. 数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员账户被篡改。
  5. 服务器被远程控制,被安装后门。经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统。
  6. 破坏硬盘数据,瘫痪全系统。

一些类型的数据库系统能够让SQL指令操作文件系统,这使得SQL注入的危害被进一步放大

SQL注入

  • sql注入攻击漏洞,攻击者把不可信的数据作为命令或者查询语句的一部分,发送给解释器,以执行计划外的命令或者在未被恰当授权时访问数据。
  • 示例常见漏洞

SQL注入的防御

  • 过滤特殊字符:单引号、双引号、斜杠、反斜杠、冒号、空字符等的字符
  • 过滤的对象:用户的输入;提交的URL请求中的参数部分;从cookie中得到的数据;部署方SQL注入系统或脚本。

XSS(跨站脚本)的危害

  1. 网络钓鱼,包括盗取各类用户账号
  2. 窃取用户cookie资料,从而获取用户隐私信息,或利用用户身份进一步对网站执行操作
  3. 劫持用户(浏览器)会话,从而执行任意操作,例如进行非法转账,强制发表日志,发送电子邮件等
  4. 强制弹出广告页面,刷流量等
  5. 网页挂马
  6. 进行恶意操作,例如任意篡改页面信息,删除文章等
  7. 进行大量的客户端攻击,如DDOS攻击
  8. 获取客户端信息,例如用户的浏览历史,真实ip,开放端口等
  9. 控制受害机器向其他网站发起攻击
  10. 结合其他漏洞进一步扩大攻击
  11. 提升用户权限,包括进一步渗透网站
  12. 传播XSS跨站脚本蠕虫等

XSS(跨站脚本)

  • 当应用程序收到含有不可信的数据,在没有进行适当的验证和转义的情况下,就将它发送给一个网页浏览器,这就会产生跨站脚本攻击(简称XSS)。

  • 举个例子
    常见漏洞

XSS的防御

输入与输出中的过滤
黑名单与白名单
WEB安全编码规范
HttpOnly cookie

WEBSHELL

  • Webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门。黑客在入侵了一个网站后,通常会上传webshell,得到一个命令执行环境,以达到控制网站服务器的目的。

  • Webshell的危害:拿到了网站的Webshell,就可以修改网站的文件了,比如下载文件,修改文件,删除文件等,将变得非常容易。拿到webshell权限后,如果磁盘做了安全设置以及站点独立权限设置,则这个webshell可能只能对当前站点有效,无法操作其他网站的程序。如果入侵者通过执行命令,提升网站的权限后,就可以发展到入侵服务器,进而创建管理用户,达到控制整台服务器的目的。

CSRF(跨站请求伪造)

  • 跨站请求伪造,也叫CSRF。该攻击让登陆用户的浏览器将伪造的HTTP请求,包括该用户的会话cookie和其他认证信息,发送到一个存在CSRF漏洞的Web应用程序,该Web程序将会信息这些请求

  • 也可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义进行某些非法操作。CSRF能够使用你的账户发送邮件,获取你的敏感信息,甚至盗走你的财产等。

  • CSRF攻击原理

常见漏洞

CSRF的防御

验证HTTP Referer字段

Token验证

添加验证码

系统命令注入的危害

导致攻击者执行任意系统命令,控制主机权限
常见漏洞

系统命令注入

  • 系统命令注入和sql注入类似
  • 不同点时sql注入注入的是sql语句,系统命令注入注入的是系统命令。
  • 前者导致执行任意的sql语句,后者导致执行任意系统命令

例子
常见漏洞

系统命令注入的防御

  1. 尽量不要使用系统命令
  2. 在进入执行命令函数、方法之前,变量一定要做好过滤,对敏感字符转义
  3. 在使用动态函数之前,确保使用的函数是指定的函数之一

文件包含的危害

  1. 读取敏感信息文件。windows/system.ini或者是/etc/passwd等
  2. 远程包含webshell
  3. 本地包含配合文件上传getshell

文件包含

  • 开放人员通常会把可重复使用的函数写到单个文件中,在使用某些函数时,直接调用此文件,而无需再次编写,这种调用文件的过程被称为包含。
  • 文件包含漏洞的产生原因在通过引入文件时,由于传入的文件名没有经过合理的校验,或者校验被绕过,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入。

常见漏洞

文件包含的防御

  1. 严格判断包含中的参数是否外部可控,因为文件包含漏洞利用成功与否的关键点就在于被包含文件是否可以被外部控制
  2. 路径限制:限制被包含的文件只能在某一文件夹内,禁止目录跳转字符,如:"…/"
  3. 包含文件验证:验证被包含的文件是否是白名单中的一员
  4. 尽量不要使用动态包含,可以在需要包含的页面固定写好,如:include(“test.php”);

目录遍历

  • 目录遍历是HTTP所存在的一个安全漏洞,它使得攻击者能够访问受限制的目录

  • 目录遍历的形成原因一般是HTTP服务器的错误配置导致的

  • 危害

  1. 读取敏感配置文件信息(数据库文件等)
  2. 可能造成源码文件泄露(一些管理员可能整站打包称zip)

常见漏洞

  • 防御方法:正确配置服务器,对目录做访问控制

信息泄露攻击

信息泄露通常是由于服务器配置不当,或者是web应用程序编写不当,导致的泄露敏感信息。通常,扫描器可以轻易扫描出信息泄露

越权

  • 越权漏洞是逻辑漏洞的一种
  • 它使用户执行一些本不应属于自己的操作权限
  • 逻辑漏洞不像sql注入、xss等漏洞有明显的标识,自动化扫描器可以针对规则来识别出这些漏洞,而逻辑漏洞一般出现在功能(业务过程)上,因此这是漏洞扫描工具无法去识别的
  • 越权一般可以分为以下两种:
  1. 水平越权:相同级别用户之间的越权操作(例如查看其他用户账单)
  2. 垂直越权:不同级别之间或不同角色之间的越权操作(user权限越权admin权限)

水平越权案例
常见漏洞

越权的防御

完善代码逻辑:

  1. 结合session认证当用户发起对一个数据资源的请求时,根据session中的用户id联合查询,倘若这个资源不属于这个用户,则不予查询
  2. 针对水平越权,可以增加资源唯一标识符的复杂度,可以将其变更成几十位无规律的字符串,增加水平越权的难度。但是该方法理论上仍然能被暴力**