• 服务器安全基线检查
    • 3001 - 关键 cookie 是否开启 httpOnly
    • 3002 - 进程启动账号检查
    • 3003 - 后台弱口令检查
    • 3004 - 不安全的默认应用检查
    • 3005 - Directory Listing 检查
    • 3006 - 数据库连接账号审计
    • 3007 - JBoss HTMLAdaptor 认证检查
    • 4001 - allow_url_include 配置审计
    • 4002 - expose_php 配置审计
    • 4003 - display_errors 配置审计
    • 4004 - yaml.decode_php 配置审计

    服务器安全基线检查

    在应用服务器启动时,进行安全配置规范检查。如果 security.enforce_policy 设置为 true,发现不安全配置时,将抛出 com.baidu.openrasp.exception.SecurityException 异常并拒绝应用服务启动

    报警只会打印一次,具体格式参考 安全配置检查报警日志 相关文档

    支持的服务器

    tomcat

    策略说明

    在 tomcat 服务器下,检查是否在 JSESSIONID 是否开启 httpOnly 开关

    开启后,将对XSS攻击有一定的防范能力,可避免一些问题

    修复方法

    若是 tomcat 7 以下版本,打开 CATALINA_HOME/conf/context.xml,将 useHttpOnly 改为 true,重启应用服务器即可

    3002 - 进程启动账号检查

    支持的服务器

    tomcat, jetty, jboss, resin, springboot 等所有的 java 服务器

    策略说明

    检查应用服务器的启动账号,当以如下账号启动则认为不符合安全规范:

    • Linux 系统的 root 账号
    • Windows 系统的 Administrator 或者 system 账号 当应用服务器存在安全漏洞,以高权限账号启动会带来更大的安全风险,e.g 上传 webshell 即可获取最高权限、利用 struts 漏洞直接获取 root 权限

    修复方法

    使用低权限用户启动应用服务器

    3003 - 后台弱口令检查

    支持的服务器

    tomcat

    策略说明

    在 tomcat 下,检查 $CATALINA_HOME/conf/tomcat-users.xml 下面配置的用户,如果具有 admin,manager,admin-gui,manager-gui 权限之一,即认为是管理员。然后针对所有管理员用户,检查密码的健壮性。

    目前策略非常简单,当用户名和密码均是以下内容之一,才认为是弱口令

    1. both
    2. tomcat
    3. admin
    4. 123456

    修复方法

    使用高强度密码,e.g 使用10位以上的密码,并包含数字、字母、特殊符号

    3004 - 不安全的默认应用检查

    支持的服务器

    tomcat

    策略说明

    在 tomcat 下,检查 ROOT、manager、host-manager、docs 四个 webapps 是否删除

    默认应用或多或少会泄露敏感信息,或者造成管理后台对外暴露的风险

    修复方法

    全部删除

    3005 - Directory Listing 检查

    支持的服务器

    tomcat

    策略说明

    在 tomcat 下检测 $CATALINA_HOME/conf/web.xml 是否为全局开启了 default servlet 的 Directory Listing功能

    开启 Directory Listing 功能,会泄露项目的目录结构,并泄露服务器的版本信息,危险配置如下:

    1. <servlet>
    2. <servlet-name>default</servlet-name>
    3. <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
    4. <init-param>
    5. <param-name>debug</param-name>
    6. <param-value>0</param-value>
    7. </init-param>
    8. <init-param>
    9. <!-- 如下就开启了 default sevelet 的 Directory Listing 功能-->
    10. <param-name>listings</param-name>
    11. <param-value>true</param-value>
    12. </init-param>
    13. <load-on-startup>1</load-on-startup>
    14. </servlet>

    修复方法

    打开 $CATALINA_HOME/conf/web.xml 把如上 xml 配置中的名字为 listing 的 init-param 删除,或者把 param-value 改为 false 即可

    3006 - 数据库连接账号审计

    支持的服务器

    所有使用 JDBC 的服务器、PHP 服务器

    策略说明

    检查是否使用 root (mysql)sa (mssql)sys (oracle) 等高权限账号连接数据库

    当存在SQL注入漏洞,使用高权限账号连接数据库会带来更大风险,泄露更多的数据;当服务器被黑客入侵,使用高权限账号,还可能同时导致数据库服务器沦陷

    如果 security.enforce_policy 选项设置为 true,那么无论数据库连接成功与否,我们都会拦截并产生报警;如果设置为 false(默认值),则只有成功的连接才会报警,且对于每个JDBC URL,相同的报警每天只会打印一次

    修复方法

    创建新账号,授予最小的权限;不同的服务器集群使用不同的数据库账号连接

    3007 - JBoss HTMLAdaptor 认证检查

    支持的服务器

    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 相关配置

    4001 - allow_url_include 配置审计

    支持的服务器

    PHP 服务器

    策略说明

    检查 allow_url_include 是否开启。开启后,将允许包含远程文件,e.g

    1. include("http://xxxxx")

    当应用存在文件包含、任意文件读取等漏洞,开启这个配置会让应用更加容易被入侵。

    修复方法

    修改 ini 配置,将 allow_url_include 设置为 Off

    4002 - expose_php 配置审计

    支持的服务器

    PHP 服务器

    策略说明

    检查 expose_php 是否开启。若开启,在请求响应里可看到PHP的完整版本号,e.g

    1. X-Powered-By: PHP/5.1.2-1

    修复方法

    修改 ini 配置,将 expose_php 设置为 Off

    4003 - display_errors 配置审计

    支持的服务器

    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

    4004 - yaml.decode_php 配置审计

    支持的服务器

    PHP 服务器

    策略说明

    检查 yaml.decode_php 是否开启。当这个选项被开启,在加载 yaml 文件的时候,将允许反序列化PHP对象,可能执行任意代码。另外,如果没有安装 yaml 扩展,即使配置了 yaml.decode_php=On 也不会报警。

    修复方法

    修改 ini 配置,将 yaml.decode_php 设置为 Off