1.web应用面临的主要安全问题
1)黑客入侵:撞库拖库、网页篡改、后门木马、加密勒索、数据泄露
2)恶意内容
2.web应用安全现状
1)网站安全问题:弱口令 > SQL注入 > 信息泄露 > 命令执行
2)web应用攻击类型:Webshell探测 > 命令执行 > sql注入 > 文件包含 >文件上传
3)漏洞类型:缓冲区溢出 > 跨站脚本 > 输入认证 > SQL注入 > 权限许可与访问控制
3.Web应用被攻击的原因:
1)业务:缺乏业务风险控制手段 。垃圾注册大量用户获取出事击放和投票权;绕过接口验证机制,尝试批量破解用户账号密码(撞库)
2)内容:不对UGC进行内容审核。
3)数据层:数据明文存储和传输。入侵后窃取用户信息或篡改数据,例如篡改网页
4)应用层:存在应用和业务逻辑漏洞。通过罗东入侵后端服务器和数据库
5)主机层:弱口令、系统漏洞。通过系统漏洞入侵,并上传后门、木马
6)网络层:没有防范ddos进攻的能力。DDoS/cc攻击,造成业务中断
7)移动APP:移动App未加固。反编译破解App客户端,获得敏感代码,进而伪造或篡改信息,或制作仿冒应用
1)国家背景支持:政治动机驱动
2)漫无目的黑客:脚本小子。到处显示自己能力的黑客
3)网络犯罪:窃取金融信息、个人信息、DDOS、安装Botnet等,主要经济利益驱动
4)自动驱动型黑客:名利驱动型。可以发动高难度的入侵,主要证明自己的能力;
5)白帽子:热爱黑客技术,主要是帮助企业发现安全漏洞,可能是专业也可能是初学者
4.web应用安全类型
攻击者发送恶意数据构造数据查询或操作系统命令
注入类型包括:SQL注入、操作系统命令注入、XML注入、LDAP注入等
注入是解释性语言(如脚本语言和标记型语言)不得不面对的挑战性问题
危害:信息泄露(数据库被窃取)、操作系统被控制
SQL注入:
示例:2016年,中国银行某站MySql注入(涉及管理员密码/大量用户卡号信息)
华为某站存在SQL注入(17w用户&任意文件下载)
天虹基金主站存在SQL注入
SQL注入的原因:
对敏感字符不加过滤不做转义处理
单引号篡改SQL语句
注释符号 –或 /**/篡改SQL语句
分号;在同一字符串内执行多个数据操作
SQL注入代码示例:
恶意输入
被篡改后的SQL语语句
SQL注入预防
对输入数据进行验证/编码/过滤
不要动态主装SQL语句,正确使用预编译SQL语句
如果需要动态组装sql语句,确保在使用输入数据在构造SQL之前,对特殊字符进行转义
加固数据库,控制损失范围
禁止将任何高权限账号(例如:root\data\sa等)用于应用程序数据库访问。更安全的方法是单独为应用创建有限权限的账号
限制账号所能访问的数据表
拒绝账号访问敏感的系统存储过程
身份认证:用户名/密码>Token/PIN>指纹/脸扫描
会话管理:Http利用会话管理机制来实现连接识别。用户登录通过身份认证后获取session,通常放在cookie中,之后根据session对用户身份进行识别,而不需要每次都要登陆
危害:信息泄露、用户会话被劫持
预防方法:
使用SSL保护用户身份信息和sessionID
对用户密码强度设置做要求
登录使用验证吗或双因子认证账号进行短时锁定(双因子
对连续多次登录失败的账号进行短时锁定
不使用简单或可预期的密码保护问题
验证成功后更换sessionID
不在URL中显示sessionID
设置session闲置超时
确保退出、注销功能强制销毁session
攻击者通过在Web页面输入点 注入恶意脚本,若web应用对输入数据不进行处理,直接结果输出到浏览器,浏览器将执行恶意脚本
XSS攻击类型:
非持久型:也称反射型XSS,通过Ge和post方法,将注入的恶意数据放置在URL的query字符串 或 form 数据中。如果服务器端对输入的数据不进行过滤,验证或编码,将恶意数据直接呈现给客户,可能会造成XSS
持久型,也叫存储型XSS,通常因为服务器端未将输入的恶意脚本通过验证就直接存储到数据库
危害:Dos攻击(使网络阻塞/主机资源耗尽)、信息泄露、篡改网页
示例:2011年,新浪微博Xss攻击事件:大量用户中毒后自动向自己的粉丝发送带链接的私信和微博,并自动关注一名hellosamy的用户。由于微博使用的是短链接,用户只能看到诱人的新闻标题的私信和微博,当他们点击链接后便也会中毒,造成恶性循环
预防方式:
编码:直接将HTML标签最关键的字符<>&编码为⁢>&
过滤:将script/style/iframe/onmouseover等有害字符串去掉,但保留<>&等有限的基本标签
防范XSS的真正挑战在于全面
输入过滤:比较低效,只使用过滤会很难全面(前端包含91中HTML标签、十多种编码方式、数种对象类型…),而且可能导致意外结果(例如:alice’s变成alices),有时候还需要多次过来(例如:<scrip<script>t> )
输入编码:可设计全局的解决方案
输出编码:用于解决输入编码无法处理的已入库数据
借助第三方代码库
Java:OWASP的WSAPI与Java Encoder、Coverity Security Library(CSL)
JavaScript:Encoder.js、DOMPurify
用户可以通过修改访问参数可以直接访问非授权信息(例如:http://www.ddd.com/userinfo.do?ID=3)
原因:开发者未设置合理的访问权限控制
示例:澳大利亚一个税务局网站被攻击者通过简单的修改ID获取了上万家公司的信息
危害:信息泄露
预防方式:(以下方案结合使用)
使用随机书使唯一标识变得难以猜测,增加攻击难度
隐藏实际引用,使用随机书为直接引用标识,生成非直接引用标识
确保对每个页面的访问都坚持访问去权限和页面所有权
5.Web 安全测试工具
白盒商业:
HPE Fortify(Static Code Analyzer)
IBM Security AppScan Source
CA Veracode Greenlight
Sonar Source Code Analyzers
白盒开源:
SonarQube,SonarLint
FindBugs
黑盒商业:
HPE Fortify WebInspect
SoapUI NG Pro
黑盒开源:
Selenium
soapUI
OWASP ZAP
sqlmap
Metasploit
w3af
Burp Suite
6.Web应用安全交互测试工具(即,开发时提示是否有漏洞)
商业:
HPE Fortify Declnspect
7.HPE Fortify 使用
Static Code Analyzer 源码静态扫描
WebInspect动态扫描
将扫描工具和集成Software Security Center。扫描发现的漏洞会自动创建SSC。SSC可以对比前后测试结果改进,提供测试报表
8.Web安全控制的流程:
inital review
Threat modeling
Design review
Code review
Risk assessment
Risk mitigation
Benchmark
Maintain
没有对敏感字符
原文链接:https://www.cnblogs.com/shadow-yin/p/10711258.html
原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/18673