一、分层构架
一般分为三层:展现层--应用程序层--数据库层
一个基于JAVA的应用程序可能采用多层次技术:
应用程序服务层(Tomcat)
展现层(WebWork)
授权与验证层(JAAS/ACEGI)
核心应用程序框架(Struts或Spring)
业务逻辑层(Enterprise Java Beans)
数据库对象关系映射(Hibernate)
数据库JDBC调用
数据库服务器
(1)攻击分层构架
a. 利用层之间的信任关系
b. 利用一层的缺陷破坏其他层
访问解密算法、使用文件读取权限提取MYSQL数据、使用本地文件包含执行命令等。
一种利用PHP框架的方法:以明文形式将PHP会话变量写入使用会话令牌命名的文件中。
(2)保障分层安全
尽量减少信任关系、隔离不同的组件、应用深层防御(打补丁、存储加密等)
二、共享主机
<VirtualHost *>
ServerName app1.com
DocumentRoot /www/app1
</VirtaulHost>
<VirtualHost *>
ServerName app2.com
DocumentRoot /www/app2
</VirtaulHost>
攻击共享环境:
(1)针对访问机制的攻击
a. 访问机制本身不安全,如使用FTP等未加密的协议
b. 远程访问机制许可的访问可能过于宽泛,或未对客户进行适当的隔离
c. 可能没有对数据库进行适当的权限控制和隔离;直接 数据库连接可能使用标准ODBC之类的非加密渠道来实现
(2)应用程序间的攻击
a. 预留后门
b. 易受攻击的应用程序间的攻击
利用SQL注入在共享数据库中执行任意SQL查询;利用路径遍历漏洞读取或写入其他应用程序的文件;利用命令注入漏洞攻击其他应用程序
c. ASP应用程序组件间的攻击(这个ASP指应用程序服务提供商)
不同应用程序生成的数据可能分配到一个公共的位置,可以被较高权限的ASP级用户查看,可以利用XSS漏洞攻击,如可以在日志等文件中注入JS代码等;
共享数据库间的隔离问题,如果隔离做的不好,一个SQL注入可能就会攻破整个共享数据库。
数据库扫描工具NGSSquirrel
(3)攻击云
Web应用程序、克隆系统获得熵源、自助的管理工具、feature-first approache(对用户优好的一些新功能吸引新用户)、攻击本地存储的永久身份令牌、Web存储
(4)保护共享环境的安全
a. 保障客户访问的安全(严格的身份确认、最低的访问权限、满足安全需求的定制的应用程序)
b. 隔离客户功能(每名客户使用独立的操作系统帐户、强大的功能仅限于操作系统等级且分配最低权限、共享数据库中实施保护和隔离,只允许访问客户自己的数据 )
c. 隔离共享应用程序中的组件(在各方控制的组件之间实施信任边界)