Web应用安全
- 格式:pdf
- 大小:2.58 MB
- 文档页数:89
越权操作--案例
• 在网上交易平台中,该类型的安全漏洞主要出现 在账号余额查询,账号个人资料篡改等功能上。 • ⑴ 任意修改用户资料
越权操作--案例
• ⑵ 任意查询用户信息
越权操作--案例
• ⑵ 任意查询用户信息
越权操作--代码防护
• 针对平行权限的访问控制缺失,建议使用基于用户或者会 话的间接对象引用进行防护,比方说,一个某个选项包含 6个授权给当前用户的资源,它可以使用一串特殊的数字 或者字符串来指示哪个是用户选择的值,而不是使用资源 的数据库关键字来表示,数字和字符串的生成可以结合账 号信息进行生成,使得攻击者难以猜测生成的方式。 • 针对垂直权限的访问控制缺失,建议可以使用缺省拒绝所 有的访问机制,然后对于每个功能的访问,可以明确授予 特定角色的访问权限,同时用户在使用该功能时,系统应 该对该用户的权限与访问控制机制进行校对。
恶意注册
• 漏洞描述 • 恶意注册,是指攻击者利用网站注册功 能的安全漏洞,注册大量的垃圾账号, 导致系统增多大量无用数据。一般网站 开发者为了防止恶意注册的行为,在注 册页面均会在加入一些需要人工输入的 步骤,比方说短信验证码,邮箱验证等 。但是在实际测试的过程中,同样也发 现了部分验证功能可被绕过。
"'|;|and|(|)|exec|insert|select|delete|update| count|*|%|chr|mid|master|truncate|char|d eclare"Kill_IP=True
53
SQL注入的防范
• 防御的对象:所有外部传入数据
任意重置用户密码
• 漏洞描述: • 任意重置用户密码这类型的问题也较为 普遍,主要是出现在密码找回、邮箱验 证等方面,部分漏洞从技术原理来说上 来说它与越权操作时相似的,即用户越 权去修改其他用户的信息,如密保电话 、密保邮箱等,由于它敏感性所以我们 将它归纳成一类进行探讨。
任意重置用户密码--案例
• 绕过短信验证码
任意重置用户密码--案例
• 绕过短信验证码
任意重置用户密码--案例
• 短信验证码暴力破解
任意重置用户密码--代码防护
• 针对案例一中的漏洞,建议在第二步修改密码 时服务端再次验证手机验证码,部分平台所采 用的做法是,第一步验证码提交成功后,将验 证码隐藏在一个“hidden”表单中,并在第 二步修改密码中进行提交,服务端再次验证短 信验证码,保证准确性,同时对验证码的错误 次数进行限制,当验证错误超过特定次数,当 前验证码无效。 • 针对案例二中的漏洞,同样建议随机验证码设 置错误次数限制,当验证错误超过特定次数, 当前验证码即无效。
Web应用常见漏洞
• • • • • • • • • • • • xss跨站脚本攻击 CSRF SQL注射漏洞 任意文件遍历/下载 文件上传导致任意代码执行 文件包含 命令执行 拒绝服务 敏感信息泄露 默认配置不当 设计缺陷/逻辑错误 非授权访问/权限绕过
统计
• 经过对大量安全事件的分析,除了常见的 一些如注入、跨站、CSRF、恶意上传等 Web漏洞外,部分平台在业务功能上存 在着严重的风险,如任意用户密码重置、 交易参数恶意篡改等,与常见的注入、恶 意上传不同,这些业务逻辑的漏洞不会直 接影响服务器的安全,但却会直接影响用 户的资金、账号的安全,其风险程度有过 之而无不及,若被黑客所利用或被曝光, 将严重影响平台公信力。
45
注入、XSS、CSRF
SQL注入分类
按数据库分类:
Access、MSSQL Server、Oracle、Informix 、DB2、 Sybase 、SQLite PostgreSQL 数据库等,几乎包含了所有的 主流数据库。
按程序语言分类:
ASP、ASPX、JSP、PHP、Python注入,几乎包含了主流 Web编程语言。
恶意短信--案例
• 任意短信内容编辑
恶意短信--案例
• 任意短信内容编辑
恶意短信--代码防护
• 针对恶意短信类的安全问题,建议可以 通过以下两种方式进行防护:
• 1、从服务端限制每个号码的发送频率和每天 的发送次数,防止攻击者利用短信接口进行恶 意轰炸。 • 2、发送短信的内容应直接由系统内部进行定 义,客户端可通过数字或字符的方式,对所需 要发送的内容进行选择,如messagetype=1 为密码找回,messtype=2为注册,然后通过 数字来索引要发送的内容。
越权操作
• 其中不安全对象引用指的是平行权限的访问控制缺失,比 方说,A和B两个同为一个网站的普通用户,他们之间的 个人资料是相互保密的,A用户的个人资料可以被B用户 利用程序访问控制的缺失恶意查看,由于A用户和B用户 之间是一个同级的账号,因此称为平行权限的访问控制缺 失。功能级别访问控制缺失指的是垂直权限的访问控制缺 失,比方说,A账号为普通账号、B账号为管理员账号,B 账号的管理页面时必须是以管理员权限登录后方可查看, 但A账号可通过直接输入管理页面URL的方式绕过管理员 登录限制查看管理页面,由于A用户和B用户的权限是垂 直关系,因此称为垂直权限的访问控制缺失。该类型属于 业务设计缺陷的安全问题,因此传统的扫描器是无法发现 的,只能通过手工的渗透测试去进行检查。在交易类平台 中以平行权限的访问控制缺失较为常见。
统计
• 其中越权操作的占比最高,在测试过的 平台中基本都有发现,包括任意查询用 户信息、任意删除等行为;最严重的漏 洞出现在账号安全,包括重置任意用户 密码、验证码暴力破解等。 • 下面我们将以举例的方式给介绍一些常 见的安全问题以及其解决方法。
越权操作
• 平行权限越权操作其实是一种较为常见的安全 漏洞,在OWASP Top 10中也有所提及,分别 为不安全对象引用和功能级别访问控制缺失。
Web应用安全
启明星辰—张镇 Zhangzhen@
Web应用安全介绍
典型安全漏洞总结与应对措施
目录
Web应用漏洞扫描与分析 信息泄露
注入、XSS、CSRF
WebShell与上传 Web前端安全
Web安全设计综述
主流Web服务框架
3
Web应用层次
数 据 输 入
浏览器:Firefox/IE/Chrome Web前端框架:jQuery/Bootstrap/HTML5框架 Web应用:BBS/CMS/BLOG Web开发框架:Django/Rails/ThinkPHP Web服务端语言:PHP/ASP/.NET Web容器:Apache/IIS/Nginx 存储:数据库存储/内存存储/文件存储 操作系统:Linux/Windows
泄露物理路径
请求不存在的文件、路径
猜解正确的用户名
输入错误的用户名,返回”该用户不存在”
暴露数据库路径
请求http://192.168.148.128/09-90dbapp/product.asp?tp=67‘ 暴露oracle数据库信息
代码中多余的注释 错误信息过于详细
Web应用漏洞扫描与分析
IBM AppScan
• Web安全综合扫描
35
WVS
• Web安全综合扫描
36
报告分析
• 明确的统计数字
报告分析
• 详细的隐患描述、影响分析、修复建议
报告分析
• 工具扫描以后,仍需手工二次验证,避 免存在误报、漏报的情况 • 参考《渗透测试实施指南》
信息泄露
Web信息泄露
恶意注册--案例
• 注册数据包重放绕过验证码
恶意注册--案例
• 注册数据包重放绕过验证码
恶意注册--案例
• 通过修改phoneNum的值为 15527xxxx96、15527xxxx97可成功注 册这两个账号:
恶意注册--代码防护
• 目前遇到的大部分恶意注册类的安全漏 洞均为验证码可被多次使用造成,建议 后台对验证码的使用进行限制,任何的 验证码应为一次性,防止验证码被多次 使用。
按程序提交数据方式分类:Get注入、来自ost注入、Cookies注入等。
SQL注入危害
网页被恶意篡改 在不经授权的情况下操作数据库中的数据 私自添加操作系统帐号或数据库成员帐号 网页挂马 钓鱼欺骗 其他Web渗透攻击
48
SQL注入简单示例
admin
ABCDEFG!
Select * from table where user=‘admin’ and pwd=‘ABCDEFG!’; 由于密码的输入方 式,使得查询语句 返回值永远为True Select * from table where ,因此通过验证 user=‘admin’ and pwd=‘123’ or ‘1=1’
41
目录遍历---御剑
• 敏感目录、备份文件、源码注释、后台 信息、robots、框架版本等信息
42
Web服务鉴别——Httprint
判断Web服务器版本
43
Web服务鉴别——Whatweb
判断Web服务器版本
44
Web后台暴力破解
• 许多Web后台没有验证码、没有验证次 数限制、没有IP限制,导致可以被爆破
admin 123’ or ‘1=1
49
SQL注入工具
• SQL注入工具检测结果 (明小子)
50
手工注入---DVWA
• 站点结构:MySQL+PHP:
51
手工SQL注入---php+mysql
• http://192.168.10.2/dvwa/vulnerabilities/sqli/?id= 1%27+order+by+2+--+&Submit=Submit • 1' union select 1,2 -• http://192.168.10.2/dvwa/vulnerabilities/sqli/?id= 1%27+union+select+1%2Cdatabase%28%29+-+&Submit=Submit • http://192.168.10.2/dvwa/vulnerabilities/sqli/?id= 1%27+union+select+1%2Canycol+from+ers++-+&Submit=Submit • http://192.168.10.2/dvwa/vulnerabilities/sqli/?id= 1%27+union+select+1%2Cuser+from+ers++-+&Submit=Submit • http://192.168.10.2/dvwa/vulnerabilities/sqli/?id= 1%27+union+select+1%2Cpassword+from+ers++-+&Submit=Submit