应用安全-Web安全-漏洞修复方案整理

经过HTTP头部字段防护措施整理php

X-Frame-Options #反劫持 html

X-XSS-Protection #开启浏览器防XSS功能
node

Set X-Frame-Options nginx

CSPgit

X-Content-Type-Options: nosniff #改会影响浏览器的行为,过滤掉敏感文件github

Content-Encoding #Breach攻击web

robots.txtsql

注入mongodb

预编译

文件上传数据库

后端代码限制上传的文件类型(类型&后缀)和大小
强制给上传的文件添加后缀名

命令执行

禁用或过滤代码执行函数

XSS

对cookie的保护
对重要的cookie设置httpOnly, 防止客户端经过document.cookie读取cookie。服务端能够设置此字段。
对用户输入数据的处理
编码/解码:不能对用户输入的内容都保持原样,对用户输入的数据进行字符实体编码,原样显示内容必须解码

正则匹配

过滤:把输入的一些不合法的东西都过滤掉,从而保证安全性。如移除用户上传的DOM属性,如onerror,移除用户上传的Style节点,iframe, script节点等

对指向资源处理

nofollow技术

CSRF

验证 HTTP Referer 字段
在请求地址中添加 Token 并验证
在 HTTP 头中自定义属性并验证

XXE

使用开发语言提供的禁用外部实体的方法

PHP
 libxml_disable_entity_loader(true);

JAVA
 DocumentBuilderFactory dbf = 
 DocumentBuilderFactory.newInstance();
 dbf.setExpandEntityReferences(false);

Python  
过滤用户提交的XML数据
过滤关键词:<!DOCTYPE和!ENTITY,或者SYSTEM和PUBLIC

 

poodle漏洞

修复方案参考:(三选一便可)    ​    ​
(1)禁用443端口(如不须要使用该端口)
(2)防火墙屏蔽对443端口的访问(或设置白名单访问策略,限制为部分IP访问该端口)
(3)对SSLv3版本禁用,具体针对服务部分,可参考以下建议:
1.stunnel服务修复:/usr/sbin/stunner /etc/xensourse/xapi-ssl.conf 在xapi-ssl.conf钟compression=zlib后面加入一行 options=NO_SSLv3 重启stunnel
2.tomcat服务修复:https://www.cnblogs.com/lsdb/p/7193291.html
检测是否生效:能够是经过在线检测工具https://wosign.ssllabs.com/(外网)来进行检测;https://www.cnblogs.com/Bluesky-bk/p/10059991.html(内网)
3.apache禁用:http://www.heminjie.com/network/2132.html
4.nginx禁用:http://www.heminjie.com/network/2132.html
5.IIS禁用:https://www.daimabiji.com/serverknowledge/234.html
View Code

apache httponly cookie信息泄露

方案一:(推荐)
升级到 Apache Httpd 2.2.22 或更高版本。
方案二:
    1.打开 httpd 的配置文件(默认为 httpd.ini),定位到 ErrorDocument400,并在后面加上一段自定义内容,如ErrorDocument400 ”error page!”。
    2.保存配置文件,重启 httpd 服务后配置生效。
受影响版本:2.2.21, 2.2.20, 2.2.19, 2.2.18, 2.2.17, 2.2.16, 2.2.15, 2.2.14, 2.2.13, 2.2.12, 2.2.11, 2.2.10, 2.2.9, 2.2.8, 2.2.6, 2.2.5, 2.2.4, 2.2.3, 2.2.2, 2.2.0
View Code

SVN源码泄漏漏洞

删除服务器上全部的.SVN文件夹,升级SVN到1.7以上版本,严格使用导出功能,过滤/.svn/文件 
View Code

elasticsearch远程命令执行

在配置文件:elasticsearch.yml中设置:script.disable_dynamic:true
View Code

IIS PUT漏洞

禁用webdav服务
View Code

phpmoaadmin远程代码执行

更换mongoDB管理工具

solr未受权访问

设置白名单,限制solr后台访问 

Apache Axis2本地文件包含漏洞

禁止用户远程加载axis2.xml等文件

fastcgi文件读取漏洞

修改php.ini文件,将cgi.fixpathinfo的值设为0

zabbix jsrpc sql注入漏洞

将zabbix升级到3.0.4或以上

activemq后台弱密码漏洞

设置为强密码

struts2远程命令执行

升级struts2到最新版本

hudson未受权访问漏洞

使用强密码,限制可登陆Hudson后台的IP

jenkins未受权访问漏洞

使用强密码,限制可登陆jenkins后台的IP,在Jenkins管理页面添加访问密码;建议您不要将管理后台开放到互联网上。您可使用ECS安全组策略设置访问控制,默认策略为拒绝全部通讯。您能够根据业务发布状况仅开放须要对外用户提供的服务,并控制好访问源IP

git目录泄漏漏洞

删除全部/.git/目录

tomcat样例目录泄漏致使session欺骗漏洞

删除tomcat的/examples/目录或禁止访问

 

cve-2017-7269

Date
2017

类型
溢出致使远程代码执行

影响范围
Windows Server 2003 SP2 + IIS6 + WebDav + PUT

复现
需将rb模块导入并重命名为 cve_2017_7269

 

 




修复
禁用IIS 下的WebDAV服务http://www.webkaka.com/tutorial/iis/2017/033020/

resin任意文件读取漏洞

升级resin到最新版本

ccs注入漏洞

JAVA rmi 反序列化漏洞

升级补丁ACC 3.2.2:https://commons.apache.org/proper/commons-collections/download_collections.cgi

tomcat管理后台弱密码

更改tomcat后台密码,限制能够登陆tomcat后台的IP

activemq任意文件上传漏洞

升级activemq,或删除fileserver配置项,可参考官方公告:http://activemq.apache.org/security-advisories.data/CVE-2015-1830-announcement.txt

CVE-2017-7529整数溢出漏洞

升级nginx,可参考:http://nginx.org/en/download.html
 若是您的Nginx服务受某些因素限制,暂时没法升级到上述最新版本。建议您采起如下漏洞临时缓解措施进行防护:
即,在Nginx的配置文件nginx.conf中,将max_ranges设置为1。形如:max_ranges 1;https://help.aliyun.com/knowledge_detail/56769.html

weblogic反序列化漏洞补丁绕过( CVE-2016-0638,CVE-2016-3510,CVE-2017-3248)

升级weblogic到最新版本:http://www.oracle.com/technetwork/middleware/weblogic/downloads/wls-for-dev-1703574.html

apache options bleed内存泄漏漏洞

若是服务器使用了apache,请升级到最新版本,参考连接:http://www.4hou.com/vulnerable/7794.html

zabbix latest sql注入漏洞

将zabbix升级到最新版( 1.禁用Guest帐户  2.升级zabbix版本(除2.2.x、3.0.0-3.0.3以外版本 )

CVE-2017-1000353

将jenkins升级到2.57以上

Tomcat 任意写文件漏洞

将 conf/web.xml 中对于 DefaultServlet 的 readonly 设置为 true

jboss反序列化漏洞

安装补丁或将中间件更新到最新版本

jenkins反序列化漏洞

安装补丁或将中间件更新到最新版本

websphere反序列化漏洞

安装补丁或将中间件更新到最新版本

ST2-052漏洞

升级到最新版本

node.js v8 debugger 远程命令执行

将node.js更新到最新版本

shiro-550反序列化漏洞

升级 Shiro 版本至 1.2.5 以上

weblogic ssrf漏洞

升级weblogic到10.3.6以后的版本

jbossmq jms集群反序列化漏洞

对路径:/jbossmq-httpil/HTTPServerILServlet做访问控制,禁止必要人员以外的IP访问

CVE-2017-12149 JBOSS AS 6.X反序列化漏洞

对路径/invoker/readonly作访问控制,或升级JBoss AS 到 7

CVE-2017-10271 WebLogic XMLDecoder反序列化漏洞

升级Oracle 10月份补丁:http://www.oracle.com/technetwork/security-advisory/cpuoct2017verbose-3236627.html

openssldrown

禁止服务器端的sslv2支持。若是是Openssl,请查看OpenSSL官方给出的修复指南。 
https://www.openssl.org/blog/blog/2016/03/01/an-openssl-users-guide-to-drown/ 

weblogic反序列化漏洞(CVE-2018-2628)

禁止服务器端的sslv2支持。若是是Openssl,请查看OpenSSL官方给出的修复指南。 
https://www.openssl.org/blog/blog/2016/03/01/an-openssl-users-guide-to-drown/ 

axis2弱密码

为axis2配置强密码,或只容许特定IP访问
修改Axis2默认帐户名与口令,具体位置在axis2中的conf.xml文档中,修改以下两行代码。

 <parameter name="userName">admin</parameter>

 <parameter name="password">axis2</parameter>
View Code

memcache未受权访问漏洞/couchdb未受权访问漏洞/grafana弱密码/phpmyadmin弱密码

配置强密码,或只容许特定IP访问

activemq远程命令执行

升级至 5.14.0 及其之后版本

weblogic反序列化漏洞(cve-2018-2893)

升级oracle最新补丁,http://www.oracle.com/technetwork/security-advisory/cpujan2017-2881727.html

hudson代码泄露漏洞

增长Hudson权限验证,或只容许特定IP访问Hudson后台

memcache drdos漏洞

将memcache升级到最新版,并加强权限控制

Elasticsearch任意文件读取

升级Elasticsearch到高版本

Elasticsearch未受权访问漏洞 # _cat/indices     #  /_river/_search 查看数据库敏感信息        # /_nodes 查看节点数据   # _plugin/head/ web管理界面

 
为Elasticsearch配置强密码,或只容许特定IP访问,参考连接:https://blog.csdn.net/qq_28429443/article/details/81167123
修复方案:
1、限制IP访问,绑定固定IP
2、在config/elasticsearch.yml中为9200端口设置认证:
  http.basic.enabled true #开关,开启会接管所有HTTP链接
  http.basic.user "admin" #帐号
  http.basic.password "admin_pw" #密码
  http.basic.ipwhitelist ["localhost", "127.0.0.1"]
3、 增长验证,官方推荐而且通过认证的是shield插件,该项目为收费项目,能够试用30天。网络中也有免费的插件,可使用elasticsearch-http-basic,searchguard插件。
Shield 能够经过bin/plugin install [github-name]/[repo-name] 形式安装。
4、 使用Nginx搭建反向代理,经过配置Nginx实现对Elasticsearch的认证。
5、 若是是单台部署的Elasticsearch,9200端口不要对外开放。
6、 使用1.7.1以上的版本。在1.7.1以上版本目前尚未爆出过相关漏洞。
7、 另外elasticsearch的官方也有其余产品与Elasticsearch配合紧密的,这些产品也存在漏洞,企业若是有使用其余相关产品存在漏洞也要进行修复,如Logstash,Kibana。
8、 增强服务器安全,安装防病毒软件,使用防火墙,网站安装WAF.并对数据库,系统,后台,使用的服务设置复杂的密码,建议设置16位的大小写字母+特殊字符+数字组合。
View Code

JBoss HEAD绕过漏洞

升级JBOSS到较新版本

JBOSS信息泄露漏洞 

升级JBOSS到4.2.3之后的版本 

rsync未受权访问

为rsync配置强密码,或只容许特定IP访问,read_only设置为true
https://help.aliyun.com/knowledge_detail/51079.html
1.修改rsync服务的默认监听端口873,参考命令:“ /usr/local/rsync/bin/rsync --port=自定义端口  --daemon”  ;
2.限制登陆IP,在配置文件(/etc/rsync.conf)中修改配置,找到“hosts allow=   ”这一项设置能够运行访问的主机或主机段,IP间用空格隔开;
3.配置认证用户名和密码,在配置文件(/etc/rsync.conf)中修改配置,找到"auth users=  "(认证用户名:独立用户)进行配置,同时对“secrets file = /etc/rsync/passwd”(用户名密码文件,建议权限设置为600),密码文件内容格式为username:password。
View Code

rsync部分目录未受权访问或弱密码

为rsync配置强密码,或只容许特定IP访问

weblogic接口信息泄露漏洞

weblogic升级到最新版本或只容许特定IP访问

JBoss 4.2.0 BSHDeployer 代码执行漏洞

将jboss升级到最新版本

zookeeper未受权访问漏洞

禁止把Zookeeper直接暴露在公网
为zookeeper配置强密码或限制IP访问
配置CLI访问

复现





apt-get install zookeeper



workspace项目配置信息泄露

删除网站文件夹中的workspace.xml文件

.htaccess文件泄露

禁止网站的访问用户直接查看.htaccess文件

phpinfo文件泄露

删除网站文件夹中的phpinfo()文件

apache mod_jk访问控制绕过漏洞(cve-2018-11759)

将apache mod_jk更新到1.2.46或更新的版本(https://archive.apache.org/dist/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.46-src.zip)

couchdb版本小于2.1.0致使权限绕过及远程代码执行漏洞

将couchdb升级到1.7.0或2.1.0之后的版本

apache服务器运行状态信息泄露

仅容许特定IP访问/server-status/页面
修改httpd.conf,在最后加上server-status的配置:
<IfModule status_module>
        <Location /server-status>
                SetHandler server-status
                Order Deny,Allow
                Deny from all
                #Allow from all
        </Location>
</IfModule>
上面的配置指定的是禁止访问server-status,若是你想开启server-status,在Deny from all前面加上#,去掉Allow from all前面的#便可。
View Code

Kubernetes权限升级漏洞(CVE-2018-1002105)

官方推荐的最佳的修复方案是及时升级到:Kubernetes v1.10.11 或   Kubernetes v1.11.5  或   Kubernetes v1.12.3  或   Kubernetes v1.13.0-rc.1

IIS短文件名

1)
禁用windows系统中的短文件名功能。
打开注册表并打开此目录 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
修改 NtfsDisable8dot3NameCreation 的值为1 。
修改完成后,须要重启系统生效。

2)

Windows Server 2008 R2
查询是否开启短文件名功能:fsutil 8dot3name query
关闭该功能:fsutil 8dot3name set 1

Windows Server 2003
关闭该功能:fsutil behavior set disable8dot3 1

1) CMD关闭NTFS 8.3文件格式的支持

举例:(1表明关闭,0表明开启)

Windows Server 2008 R2:

查询是否开启短文件名功能:fsutil 8dot3name query

关闭该功能:fsutil 8dot3name set 1

Windows Server 2003:

关闭该功能:fsutil behavior set disable8dot3 1

不一样系统关闭命令稍有区别,该功能默认是开启的,对于大多数用户来讲无需开启。

2) 修改注册表禁用短文件名功能

快捷键Win+R打开命令窗口,输入regedit打开注册表窗口

找到路径:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem,将其中的 NtfsDisable8dot3NameCreation这一项的值设为 1,1表明不建立短文件名格式

修改完成后,须要重启系统生效

注:此方法只能禁止NTFS8.3格式文件名建立,已经存在的文件的短文件名没法移除,须要从新复制才会消失。

如下两种方法仅适用于缓解GET 方法,其余方法依旧能够猜解。

3) 关闭Web服务扩展- ASP.NET

4) 升级netFramework至4.0以上版本
View Code

JBoss未受权访问

https://www.cnblogs.com/hackxf/p/8951699.html
https://www.cnblogs.com/hackxf/p/8951699.html
https://www.secpulse.com/archives/24298.html
1.在
${jboss.server.home.dir}/deploy下面找到jmx-console.war目录编辑WEB-INF/web.xml文件
去掉 security-constraint 块的注释,使其起做用

2.编辑WEB-INF/classes/jmx-console-users.properties或server/default/conf/props/jmx-console-users.properties
(version &gt;=4.0.2)和 WEB-INF/classes/jmx-console-roles.properties

或server/default/conf/props/jmx-console-roles.properties(version
&gt;=4.0.2) 添加用户名密码

3.编辑WEB-INF/jboss-web.xml去掉 security-domain 块的注释 ,security-domain值的映射文件为
login-config.xml (该文件定义了登陆受权方式)
View Code

mongodb未受权访问漏洞

https://www.cnblogs.com/liqing1009/p/6282454.html
https://www.jianshu.com/p/7448708e6d73
1.改端口 2.设置登陆帐号(原本没有帐号)
View Code

snmp默认团体名/弱口令漏洞(161端口漏洞)

http://blog.sina.com.cn/s/blog_14c1fefb00102z27d.html

drupal注入

zookeeper