当前位置:朝夕网 » 数码科技 » 「Java Web 安全」常见安全漏洞及解决方案

「Java Web 安全」常见安全漏洞及解决方案

我们在日常工作过程发现,很多JAVA开发人员对于安服团队下发的的业务系统安全漏洞通报书一头雾水,不知道从那里入手去改。今天我就在工作中常见的一些漏洞问题给大家做一个说明。方便大家自查,避免在日常开发过

我们在日常工作过程发现,很多JAVA开发人员对于安服团队下发的的业务系统安全漏洞通报书一头雾水,不知道从那里入手去改。今天我就在工作中常见的一些漏洞问题给大家做一个说明。方便大家自查,避免在日常开发过程中挖坑!

1 SQL注入

大名鼎鼎,对于Java而言,通过SQL预处理轻松解决。

2 存储型XSS

保存数据时未检测包含js或html代码,照成数据被读取并加载到页面时,会触发执行js或html代码。

样例:

  • <a id=&39;>点击就送百元现金</a><br>
  • <script>
  • document.getElementById.href=&39;+document.cookie;
  • </script>
  • 解决:

    通过过滤器,对请求参数中的Value内容进行遍历,将<和>转义为<和>。

    输入过滤,输出转义。

    3 文件上传导致文件覆盖

    上传文件时,filename存在../../的时候可以跨目录,在任意目录下上传任意文件,包括jsp,zip,exe等

    样例:

    解决:

    检测解压后的文件夹和文件名是否包含../

    如果需求可以接受,对所有文件名进行md5加密后存储,也是一个方案。

    PS:WinRAR是无法重命名文件名的,需要用7Z。

    4 请求地址伪造

    将请求中的X-Forwarded-for设置为127.0.0.1&34;&34;0&34;ROOT&34;true&34;en&34;text/css&525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:525D76;}</style>

  • </head>
  • <body>
  • <h1>HTTP Status 404 – Not Found</h1>
  • <hr class=&34; />
  • <p><b>Type</b> Status Report</p>
  • <p><b>Message</b> No Solr Page</p>
  • <p><b>Description</b> The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.</p>
  • <hr class=&34; />
  • </body>
  • </html>
  • 修改web.xml配置,添加:

  • <error-page>
  • <error-code>404</error-code>
  • <location>/404.html</location>
  • </error-page>
  • 最后重启tomcat服务,OK!

    14 SSL Self-Signed Certificate

    问题:因为使用了自签名的SSL证书

    方案:换成权威机构认证后(花钱买)的证书

    15 SSL Certificate Cannot Be Trusted

    问题:你换了权威机构认证后(花钱买)的证书发现居然还是不可信,常见于软件产品,因为软件会安装在任意环境中,无法绑定域名,无法和证书的CN对应上

    方案:

    1、扫描器所在主机的hosts配置文件中,添加IP-域名映射,如:192.168.27.X xxxx.com.cn,xxxx.com.cn需要和证书的CN对应上。

    2、在软件所在服务器上修改hostname为xxxx.com.cn

    • vim /etc/sysconfig/network;修改hostname为期望值;
    • vim /etc/hosts;修改或增加主机名对应的IP地址;
    • service network restart;如果无效,则reboot;

    16 tomcat 8009

    问题:tomcat 8009端口可被攻击者利用,所以如果程序么有必要使用时,建议关闭,百度:Tomcat的8009端口AJP的利用,既可了解利用方式。

    修复:修改tomcat*/conf/server.xml配置:注释掉8009开放

    <!– <Connector port=&34; protocol=&34; redirectPort=&34; /> –>

    17 3306端口外部访问未限制

    问题:3306应该仅被可信端进行连接

    方案:添加防火墙配置,如果仅本机访问,也可以修改my.cnf:

  • [mysqld]
  • bind-address=127.0.0.1
  • 18 逻辑漏洞-升权降权

    问题:用户角色修改时,后端没有控制可修改的角色边界,以及可修改的用户边界,比如讲普通用户角色修改为超级管理员,或将超级管理员角色修改为普通用户。

    方案:后端添加数据边界控制

    19 任意目录修改删除(用户相关)

    问题:有些场景下需要在工程下给用户建立私属的文件夹,以用户名命名的文件夹,如果用户名未加控制,可被攻击者利用,比如用户名为../conf,那么就会根据用户名在原目标文件夹的上级创建出conf文件夹,可能会覆盖系统原本的同名文件夹。往往在用户删除时,会同步清理此类文件夹,那么又可能照成系统文件夹的删除。

    方案:尽量不采用任何外部接受数据来作为后台命令或文件相关输入;后台对该类数据进行合规检查

    20 命令注入

    问题:与上一个类似,系统有时候会根据用户输入构建命令,测试人员可以从后台命令列表进行观察,渗透人员则要靠自己猜测

    方案:在执行命令拼接前,对用于拼接的各个字符串进行合规检查。

    21 HttpOnly

    问题:浏览器中通过document.cookie可以获取cookie属性值,攻击者可以利用暗链,XSS,CSRF等手动获取用户cookie,并伪造用户身份执行恶意操作。

    测试代码:

    <script>alert;</script>

    方案:当设置HttpOnly=true,就不能通过脚本获取cookie。一定程度上可以避免cookie被盗用。

    修复代码:为所有cookie设置Set-Cookie属性

  • for){
  • response.addHeader+&34;+cookie.getValue+&34;);
  • }
  • 22 mDNS Detection

    Linux下系统实际启动的进程名,是avahi-daemon,端口是5353

    问题:mdns 会泄露主机名,端口,操作系统,服务,CPU等信息

    解决:关闭5353端口

    在服务器环境中可以关闭,方法如下:

    或 service avahi-daemon stop

    34;PID&39;{print &34;,$2}'|sh

    24 AMQP Cleartext Authentication

    问题:使用了对外的RabbitMQ

    解决:如果不使用,则关闭端口5672,或者停止RabbitMQ服务

    25 HTTP TRACE / TRACK Methods Allowed

    问题:限制TRACE和TRACK访问

    解决:

    非嵌入Tomcat:修改web.xml

  • <security-constraint>
  • <web-resource-collection>
  • <url-pattern>/*</url-pattern>
  • <http-method>PUT</http-method>
  • <http-method>DELETE</http-method>
  • <http-method>HEAD</http-method>
  • <http-method>OPTIONS</http-method>
  • <http-method>TRACE</http-method>
  • </web-resource-collection>
  • <auth-constraint>
  • </auth-constraint>
  • </security-constraint>
  • <login-config>
  • <auth-method>BASIC</auth-method>
  • </login-config>
  • springboot2.0+:添加配置代码

  • @Bean
  • public ConfigurableServletWebServerFactory configurableServletWebServerFactory {
  • TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory;
  • factory.addContextCustomizers;
  • securityConstraint.setUserConstraint;
  • SecurityCollection collection = new SecurityCollection;
  • collection.addPattern;
  • collection.addMethod;
  • collection.addMethod;
  • collection.addMethod;
  • collection.addMethod;
  • collection.addMethod;
  • collection.addMethod;
  • collection.addMethod;
  • collection.addMethod;
  • securityConstraint.addCollection;
  • context.addConstraint;
  • });
  • return factory;
  • }
  • 以上就是朝夕生活(www.30zx.com)关于“「Java Web 安全」常见安全漏洞及解决方案”的详细内容,希望对大家有所帮助!

    免责声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如有侵权行为,请第一时间联系我们修改或删除,多谢。朝夕网 » 「Java Web 安全」常见安全漏洞及解决方案