安全基线检查
Last updated
Last updated
在应用服务器启动时,进行安全配置规范检查。如果 设置为 true
,发现不安全配置时,将抛出 com.baidu.openrasp.exception.SecurityException
异常并拒绝应用服务启动
报警只会打印一次,具体格式参考 相关文档
** 支持的服务器 **
tomcat
** 策略说明 **
在 tomcat 服务器下,检查是否在 JSESSIONID 是否开启 httpOnly 开关
开启后,将对XSS攻击有一定的防范能力,可避免一些问题
** 修复方法 **
若是 tomcat 7 以下版本,打开 CATALINA_HOME/conf/context.xml
,将 useHttpOnly
改为 true
,重启应用服务器即可
** 支持的服务器 **
tomcat, jetty, jboss, resin, springboot 等所有的 java 服务器
** 策略说明 **
检查应用服务器的启动账号,当以如下账号启动则认为不符合安全规范:
Linux 系统的 root
账号
Windows 系统的 Administrator
或者 system
账号
当应用服务器存在安全漏洞,以高权限账号启动会带来更大的安全风险,e.g 上传 webshell 即可获取最高权限、利用 struts 漏洞直接获取 root 权限
** 修复方法 **
使用低权限用户启动应用服务器
** 支持的服务器 **
tomcat
** 策略说明 **
在 tomcat 下,检查 $CATALINA_HOME/conf/tomcat-users.xml
下面配置的用户,如果具有 admin,manager,admin-gui,manager-gui
权限之一,即认为是管理员。然后针对所有管理员用户,检查密码的健壮性。
目前策略非常简单,当用户名和密码均是以下内容之一,才认为是弱口令
** 修复方法 **
使用高强度密码,e.g 使用10位以上的密码,并包含数字、字母、特殊符号
** 支持的服务器 **
tomcat
** 策略说明 **
在 tomcat 下,检查 ROOT、manager、host-manager、docs
四个 webapps 是否删除
默认应用或多或少会泄露敏感信息,或者造成管理后台对外暴露的风险
** 修复方法 **
全部删除
** 支持的服务器 **
tomcat
** 策略说明 **
在 tomcat 下检测 $CATALINA_HOME/conf/web.xml
是否为全局开启了 default servlet 的 Directory Listing功能
开启 Directory Listing 功能,会泄露项目的目录结构,并泄露服务器的版本信息,危险配置如下:
** 修复方法 **
打开 $CATALINA_HOME/conf/web.xml
把如上 xml 配置中的名字为 listing 的 init-param 删除,或者把 param-value 改为 false 即可
** 支持的服务器 **
所有使用 JDBC 的服务器、PHP 服务器
** 策略说明 **
检查是否使用 root (mysql)
、sa (mssql)
、sys (oracle)
等高权限账号连接数据库
当存在SQL注入漏洞,使用高权限账号连接数据库会带来更大风险,泄露更多的数据;当服务器被黑客入侵,使用高权限账号,还可能同时导致数据库服务器沦陷
如果 security.enforce_policy
选项设置为 true
,那么无论数据库连接成功与否,我们都会拦截并产生报警;如果设置为 false(默认值)
,则只有成功的连接才会报警,且对于每个JDBC URL,相同的报警每天只会打印一次
** 修复方法 **
创建新账号,授予最小的权限;不同的服务器集群使用不同的数据库账号连接
** 支持的服务器 **
JBoss 4-6
** 策略说明 **
检查 /jmx-console/HTMLAdaptor
是否开启认证
** 修复方法 **
编辑 $JBOSS_HOME/server/default/deploy/jmx-console.war/WEB-INF/web.xml
,开启 security-constraint
相关配置
编辑 $JBOSS_HOME/server/default/deploy/jmx-console.war/WEB-INF/jboss-web.xml
,开启 security-domain
相关配置
** 支持的服务器 **
PHP
** 策略说明 **
定期扫描 webroot,检查是否存在后缀为 sql、tar、rar、...
的文件
** 修复方法 **
删除这些文件
从 nginx、apache 层面过滤掉这些扩展名,防止被外界下载
** 支持的服务器 **
PHP 服务器
** 策略说明 **
检查 allow_url_include
是否开启。开启后,将允许包含远程文件,e.g
当应用存在文件包含、任意文件读取等漏洞,开启这个配置会让应用更加容易被入侵。
** 修复方法 **
修改 ini 配置,将 allow_url_include
设置为 Off
** 支持的服务器 **
PHP 服务器
** 策略说明 **
检查 expose_php
是否开启。若开启,在请求响应里可看到PHP的完整版本号,e.g
** 修复方法 **
修改 ini 配置,将 expose_php
设置为 Off
** 支持的服务器 **
PHP 服务器
** 策略说明 **
检查 display_errors
是否开启。当这个选项被开启,用户可在前端看到PHP程序内部的错误消息,e.g
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\post\includes\pm_send.php on line 12
当应用存在漏洞,结合这些错误消息,攻击者可以获取应用运行的路径、进行SQL报错注入攻击等等
** 修复方法 **
修改 ini 配置,将 display_errors
设置为 Off
** 支持的服务器 **
PHP 服务器
** 策略说明 **
检查 yaml.decode_php
是否开启。当这个选项被开启,在加载 yaml 文件的时候,将允许反序列化PHP对象,可能执行任意代码。另外,如果没有安装 yaml 扩展,即使配置了 yaml.decode_php=On 也不会报警。
** 修复方法 **
修改 ini 配置,将 yaml.decode_php
设置为 Off