appScan扫描漏洞修复

不必要的http头

修改nginx.conf以及需要加载新的模块

请参考链接提示进行配置:https://blog.csdn.net/zzhongcy/article/details/115538272

检测到隐藏目录

1、需要新增一个404.html 不存在的页面。Html内容写404就行

2、修改nginx.conf的 error_page 下修改

error_page 404 403 500 502 503 504 /404.html;

# 承接上面的location。

location = /404.html {

# 放错误页面的目录路径。

root /usr/local/nginx112/html/;

}

“X-Content-Type-Options”头缺失或不安全

修改nginx.conf的 server 下添加

        add_header X-Xss-Protection "1;mode=block";

        add_header X-Content-Type-Options nosniff;

        add_header X-Frame-Options SAMEORIGIN;

具有不安全、不正确或缺少 SameSite 属性的 Cookie

修改nginx.conf的server下面location配置

location ^/abc/ {

proxy_cookie_path / "/; secure; SameSite=Strict;HttpOnly;SameSite=Strict";

}

启用了不安全的“OPTIONS”HTTP 方法

修改应用程序配置文件

如tomcat一般位web.xml,配置后重启服务

改为:

        

            /*

            PUT

            DELETE

            HEAD

            OPTIONS

            TRACE

        

        

    

    

        BASIC

    

各项配置说明:

用于限制对资源的访问;

用于限制那些角色可以访问资源,这里设置为空就是禁止所有角色用户访问;

指定需要验证的资源

指定那些方法需要验证

主机头注入攻击

1、服务器修复方案

唯一可信的只有 SERVER_NAME,这个在Apache和Nginx里可以通过设置一个虚拟机来记录所有的非法host header。

Nginx里还可以通过指定一个SERVER_NAME名单,Apache也可以通过指定一 个SERVER_NAME名单并开启UseCanonicalName选项。

建议以上两种方法同时使用。

  1.1Nginx修复方法

方案1:修改nginx.conf,添加一个默认server,当host头被修改匹配不到server时会跳到该默认server,该默认server直接返回403错误。配置完成后重启nginx即可。

server {

listen 8888 default;

server_name 192.168.0.171;

location / {

return 403;

}

}

方案2:修改nginx.conf,在目标server添加检测规则,参考以下配置,配置完成后重启nginx即可。

server {

       server_name  192.168.0.171;

       listen       8888;

        if ($http_Host !~*^192.168.0.171:8888$)

        {

        return 403;

        }

       include /etc/nginx/default.d/*.conf;

       location / {

       root /www/dvwa;

       index index.php index.html index.htm;

       }

       }

   1.2Apache修复方法

方案1:修改\conf\httpd.conf文件,修改ServerName为应用的域名,并开启UseCanonicalName选项配置完成后重启Apache即可:

ServerName 10.1.25.233:80

UseCanonicalName On

方案2:修改\conf\httpd.conf文件,参考以下配置添加,配置完成后重启Apache即可。配置说明:拒绝直接通过192.168.0.16这个IP的任何访问请求,这时如果你用192.168.0.16访问,会提示拒绝访问。仅允许通过www.test.com这个域名访问,主目录指向C:\www

NameVirtualHost 192.168.0.16

ServerName 192.168.0.16

Order Allow,Deny

Deny from all

DocumentRoot "C:\www"

ServerName www.test.com

方案3:修改\conf\httpd.conf文件,找到”#LoadModule rewrite_module modules/mod_rewrite.so”去除前面的”#”号,添加类似以下配置,配置完成后重启Apache即可。配置说明:当HOST头不是192.168.0.16时,重定向到错误页面

RewriteEngine on

RewriteCond %{HTTP_HOST} !^192.168.0.16$ [NC]

RewriteRule ^(.*)$ /error.html

   1.3Tomcat修复方法

方案1:修改tomcat\conf\server.xml,找到以下将Host里的name修改为静态的域名,配置完成后重启Apache即可。

      unpackWARs="true" autoDeploy="true">

方案2:修改tomcat\conf\server.xml,将Host节点做如下配置:

            unpackWARs="true" autoDeploy="true"

            xmlValidation="false" xmlNamespaceAware="false">

          10.1.8.1

          10.1.8.2

   

              prefix="localhost_access_log." suffix=".txt"  resolveHosts="false"

              pattern="%a %A %b %B %h %H %l %m %p %s %S %t %u %U %v %D %T" />

   1.4IIS6.0修复方法:使用ISAPI_Rewrite插件对请求包内容进行检测并重写URL

   1.5IIS7.0/7.5/8.0修复方法:微软推出了一款URL 重写模块工具,可对请求URL进行过滤处理

2、应用方面

在网站安装和初始化的时候,要求管理员提供一个可信任的域名白名单。如果这个实现起来比较困难,那至少也要保证使用使用getServerName()代替getHeader(“Host”)。

Spring Boot Actuator 端点

1、禁用所有端点,修改配置文件application.yml为以下配置:

management:

endpoints.enabled = false

2、若系统必须启用端点的建议配置认证,在项目的pom.xml文件下引入spring-boot-starter-security依赖:

org.springframework.boot

spring-boot-starter-security

然后在application.properties中开启security功能,配置访问账号密码(示例仅供参考),重启应用即可弹出。

management.security.enabled=true

security.user.name=adminmmmm

security.user.password=F!a16a<

3、升级Spring Boot的版本,由于Spring Boot < 1.5 默认未授权访问所有端点,在Spring Boot >= 1.5 默认只允许访问/health和/info端点,建议升级到SpringBootActuator2.0以上。

4、禁止互联网访问端点。

CORS 策略

避免在内部网络中使用通配符,如果Web资源包含敏感信息,则应在Access-Control-Allow-Origin标头中正确指定来源,指定的来源只能是受信任的站点,同时避免将null列入白名单。如果不需要外部访问,请完全除去此头。

可以通过修改配置文件application.yml如下,allowed-origins中允许跨域的ip地址;allowed-methods配置允许通过的请求,还有支持时间等;

management:

endpoints:

web:

# 跨域处理

cors:

allowed-origins: http://localhost:8080/

allowed-methods: post,get,put

临时文件下载、归档文件下载、压缩文件

这几类一般是处理错误信息时,响应不规范造成。

自定义错误页面或使用统一的错误页面提示。

1、对于 tomcat 的中间件下,常用修复方式如下:找到配置文件 web.xml ,修改内容,配置一个统一的静态页面,将400、403、404、500等常见报错重定向到该静态页面,而不是抛出异常(报错信息导致代码信息泄漏);

2、对于常用的jsp语言开发的网站,可在业务流程中,加入异常捕获过程中预定义的错误编码,将异常输出到错误日志中,并在前台页面返回相应的错误编码,以便应用系统运维人员进行异常排查。

3、对于 IIS/ASP.net 下设置404错误页面:修改应用程序根目录的设置,打开 “web.config” 文件编辑,加入错误提示页面及提示内容。

4、对于 apache 服务器的设置:修改 httpd.conf 文件,去掉错误提示页面的注释符“#”。

5、对于 PHP 中间件的使用者,可通过修改 php.ini 文件来实现如果关闭与开启错误信息,关闭错误显示后,php函数执行错误的信息将不会再显示给用户,这样能在一定程度上防止攻击者从错误信息得知脚本的物理位置,以及一些其它有用的信息,起码给攻击者的黑箱检测造成一定的障碍。

6、对于 J2EE 项目开发的网站,如果想通过捕获抛出的异常信息的方式来修复,可以使用使用 Spring MVC 统一异常处理的方法来进行修复。

7、编码时增加异常处理模块,对错误页面做统一的自定义返回界面,隐藏服务器版本信息;

8、不对外输出程序运行时产生的异常错误信息详情。

你可能感兴趣的:(java)