SQL注入攻击
名词解释:
SQL注入攻击(SQL Injection),简称注入攻击、SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞。由于在设计程序时,忽略了对输入字符串中夹带的SQL指令的检查,被数据库误认为是正常的SQL指令而运行,从而使数据库受到攻击,可能导致数据被窃取、更改、删除,甚至执行系统命令等,以及进一步导致网站被嵌入恶意代码、被植入后门程序等危害。
常见发生位置:
1) URL参数提交,主要为GET请求参数;
2) 表单提交,主要是POST请求,也包括GET请求;
3) Cookie参数提交;
4) HTTP请求头部的一些可修改的值,比如Referer、User_Agent等;
5) 一些边缘的输入点,比如.mp3、图片文件的一些文件信息等。
防御措施:
1) 使用预编译语句。一般来说,防御SQL注入的最佳方式,就是使用预编译语句,绑定变量,但对现有代码的改动量较大;
2) 使用存储过程。使用安全的存储过程可在一定程度上对抗SQL注入,但要注意此种方法并不是100%安全;
3) 严格检查用户数据。对用户传入的数据类型及内容进行严格的检查。对数据类型检查,如利用ID查询时判断是否为整型,输入邮箱时判断邮箱格式,输入时间、日期等必须严格按照时间、时期格式等;对数据内容进行检查,如严格检测用户提交数据中是否包含敏感字符或字符串,是否匹配某种注入规则,严格转义特殊字符等。注意此种方法虽然便于实施,但容易产生误报和漏报,且容易被绕过;
4) 其他。使用安全的编码函数、统一各数据层编码格式(如统一使用UTF-8等)、严格限制数据库用户权限、定期进行代码黑盒白盒扫描、避免将错误信息显示到页面等
跨站脚本攻击(XSS)
名词解释:
跨站脚本攻击(XSS, Cross Site Script)通常指黑客通过”HTML注入”篡改了网页,插入恶意脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。XSS漏洞可被用于用户身份窃取(特别是管理员)、行为劫持、挂马、蠕虫、钓鱼等。XSS是目前客户端Web安全中最重要的漏洞。
XSS按效果的不同可以分为3种:
a. 反射XSS:页面仅把用户输入直接回显在页面或源码中,需要诱使用户点击才能成功;
b. 存储XSS:XSS攻击代码会被存储在服务器中,由于用户可能会主动浏览被攻击页面,此种方法危害较大;
c. DOM XSS:通过修改页面的DOM节点形成XSS,严格来讲也可划为反馈型XSS。
常见发生位置:
1) 所有涉及到用户可控的输入输出点,如个人信息、文章、留言等。
防御措施:
1) 对重要的Cookie字段使用HTTPOnly参数;
2) 检查所有用户可控输入。对所有的输入点进行严格的检查,过滤或拦截所有不符合当前语境的输入。由于无法预期所有可能的输出点语境,此种方法效果较差;
3) 检查所有用户输入的输出点。因为XSS最终攻击是发生在输出点,因此需要分析出用户输入数据的所有输出点的环境,是输入在HTML标签中,还是HTML属性、script标签、事件、CSS位置中,针对不同的输出位置,制定不同的转义或过滤规则;
4) 处理富文本。在文章、论坛等需要用到富文本的地方,需要特别注意富文本与XSS的区分,严格禁止所有的危险标签及”事件”,原则上应当使用白名单过滤标签、事件及属性。
Webshell
名词解释:
Webshell是一种网站后门程序,通常以动态脚本语言(如:ASP、PHP、ASP.NET、JSP)
编写,混入在网站目录之下,用于控制服务器系统。
常见发生位置:
- 黑客通过任意文件写入漏洞将Webshell写入到网站;
- 黑客通过任意文件上传漏洞上传Webshell文件;
防御措施:
- 严格限制上传文件的文件类型;
- 严格限制写入文件操作;
- 服务器上安装相应的杀毒软件;
- 如果使用三方开发的网站系统,保持最新版本。
命令执行
名词解释:
当网站程序中需要调用系统命令,并且调用的命令可通过外部输入来控制,就存在命令执行漏洞。黑客利用命令执行漏洞即可控制操作系统。
常见发生位置:
- 常见的系统调用函数,如PHP的system、exec、shell_exec等函数
防御措施:
- 严格限制传入的命令
代码执行
名词解释:
大多脚本语言都支持将字符串解析成内部代码动态执行,如eval函数,或者反序列化功能。如果传入的字符串是可控的,那就会导致传入恶意代码进程序并执行。
常见发生位置:
- 调用动态执行代码的函数处,如eval;
- 反序列化处理。
敏感文件访问
名词解释:
网站中存在一些敏感信息的文件,如配置文件、数据库、备份文件等,由于管理员和开发者的失误,导致这些文件可以让任何人访问。
常见发生位置:
- 敏感文件能通过URL直接访问
防御措施:
- 检查网站目录下是否存在敏感的文件(如打包的网站源码备份、数据库备份),以及是否可以直接通过URL访问
- 网站程序在调用读取、下载文件的函数时,检查是否可以下载任意文件
本地/远程文件包含
名词解释:
该漏洞产生的原因是在引用文件时可以控制引用的文件路径,并且没有做合理的校验,从而导致可以包含本地或者远程文件。比如PHP的include函数。
常见发生位置:
如PHP的include、require、include_once、require_once
防御措施:
检查调用include之类的地方是否通过参数传递,并且是否做了合法验证。
扫描器
名词解释:
对数百种扫描器的常见攻击和信息探测进行拦截,包括sqlmap,awvs,appscan等等,漏洞扫描工具恶意扫描可能暴露网站脆弱性,而且导致被针对性攻击。
特殊攻击
名词解释:
利用特定APP的漏洞发起的攻击,比如discuz、dedeCMS,phpCMS等应用的系列漏洞。特殊应用漏洞被利用容易导致网站被getshell、数据泄露等问题,危害较大。
恶意采集
名词解释:
恶意蜘蛛,恶意爬虫数据爬取行为,可能导致网站并发量上升,访客体验下降,商业数据泄露等风险
其他攻击
名词解释:
除开以上几种具体攻击类型的的其他恶意WEB攻击拦截。