通过HTTP头部字段防御措施整理
X-Frame-Options #反劫持
X-XSS-Protection #开启浏览器防XSS功能 Set X-Frame-Options
CSP
X-Content-Type-Options: nosniff #改会影响浏览器的行为,过滤掉敏感文件
Content-Encoding #Breach攻击
robots.txt
注入
预编译
文件上传
后端代码限制上传的文件类型(类型&后缀)和大小
强制给上传的文件添加后缀名
命令执行
禁用或过滤代码执行函数
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漏洞
修复方案参考:(三选一即可)
()禁用443端口(如不需要使用该端口)
()防火墙屏蔽对443端口的访问(或设置白名单访问策略,限制为部分IP访问该端口)
()对SSLv3版本禁用,具体针对服务部分,可参考如下建议:
.stunnel服务修复:/usr/sbin/stunner /etc/xensourse/xapi-ssl.conf 在xapi-ssl.conf钟compression=zlib后面加入一行 options=NO_SSLv3 重启stunnel
.tomcat服务修复:https://www.cnblogs.com/lsdb/p/7193291.html
检测是否生效:可以是通过在线检测工具https://wosign.ssllabs.com/(外网)来进行检测;https://www.cnblogs.com/Bluesky-bk/p/10059991.html(内网)
.apache禁用:http://www.heminjie.com/network/2132.html
.nginx禁用:http://www.heminjie.com/network/2132.html
.IIS禁用:https://www.daimabiji.com/serverknowledge/234.html
apache httponly cookie信息泄露
方案一:(推荐)
升级到 Apache Httpd 2.2. 或更高版本。
方案二:
.打开 httpd 的配置文件(默认为 httpd.ini),定位到 ErrorDocument400,并在后面加上一段自定义内容,如ErrorDocument400 ”error page!”。
.保存配置文件,重启 httpd 服务后配置生效。
受影响版本:2.2., 2.2., 2.2., 2.2., 2.2., 2.2., 2.2., 2.2., 2.2., 2.2., 2.2., 2.2., 2.2., 2.2., 2.2., 2.2., 2.2., 2.2., 2.2., 2.2.
SVN源码泄漏漏洞
删除服务器上所有的.SVN文件夹,升级SVN到1.7以上版本,严格使用导出功能,过滤/.svn/文件
elasticsearch远程命令执行
在配置文件:elasticsearch.yml中设置:script.disable_dynamic:true
IIS PUT漏洞
禁用webdav服务
phpmoaadmin远程代码执行
更换mongoDB管理工具
solr未授权访问
设置白名单,限制solr后台访问
Apache Axis2本地文件包含漏洞
禁止用户远程加载axis2.xml等文件
fastcgi文件读取漏洞
修改php.ini文件,将cgi.fixpathinfo的值设为0
zabbix jsrpc sql注入漏洞
将zabbix升级到3..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.: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 ;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升级到最新版( .禁用Guest账户 .升级zabbix版本(除2..x、3.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. 以上
weblogic ssrf漏洞
升级weblogic到10..6之后的版本
jbossmq jms集群反序列化漏洞
对路径:/jbossmq-httpil/HTTPServerILServlet作访问控制,禁止必要人员之外的IP访问
CVE-2017-12149 JBOSS AS 6.X反序列化漏洞
对路径/invoker/readonly做访问控制,或升级JBoss AS 到
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>
memcache未授权访问漏洞/couchdb未授权访问漏洞/grafana弱密码/phpmyadmin弱密码
配置强密码,或只允许特定IP访问
activemq远程命令执行
升级至 5.14. 及其以后版本
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
修复方案:
、限制IP访问,绑定固定IP
、在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"]
、 增加验证,官方推荐并且经过认证的是shield插件,该项目为收费项目,可以试用30天。网络中也有免费的插件,可以使用elasticsearch-http-basic,searchguard插件。
Shield 可以通过bin/plugin install [github-name]/[repo-name] 形式安装。
、 使用Nginx搭建反向代理,通过配置Nginx实现对Elasticsearch的认证。
、 如果是单台部署的Elasticsearch,9200端口不要对外开放。
、 使用1..1以上的版本。在1..1以上版本目前还没有爆出过相关漏洞。
、 另外elasticsearch的官方也有其他产品与Elasticsearch配合紧密的,这些产品也存在漏洞,企业如果有使用其他相关产品存在漏洞也要进行修复,如Logstash,Kibana。
、 加强服务器安全,安装防病毒软件,使用防火墙,网站安装WAF.并对数据库,系统,后台,使用的服务设置复杂的密码,建议设置16位的大小写字母+特殊字符+数字组合。
JBoss HEAD绕过漏洞
升级JBOSS到较新版本
JBOSS信息泄露漏洞
升级JBOSS到4..3以后的版本
rsync未授权访问
为rsync配置强密码,或只允许特定IP访问,read_only设置为true
https://help.aliyun.com/knowledge_detail/51079.html
.修改rsync服务的默认监听端口873,参考命令:“ /usr/local/rsync/bin/rsync --port=自定义端口 --daemon” ;
.限制登录IP,在配置文件(/etc/rsync.conf)中修改配置,找到“hosts allow= ”这一项设置可以运行访问的主机或主机段,IP间用空格隔开;
.配置认证用户名和密码,在配置文件(/etc/rsync.conf)中修改配置,找到"auth users= "(认证用户名:独立用户)进行配置,同时对“secrets file = /etc/rsync/passwd”(用户名密码文件,建议权限设置为600),密码文件内容格式为username:password。
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..46或更新的版本(https://archive.apache.org/dist/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.46-src.zip)
couchdb版本小于2.1.0导致权限绕过及远程代码执行漏洞
将couchdb升级到1..0或2..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前面的#即可。
Kubernetes权限升级漏洞(CVE-2018-1002105)
官方推荐的最佳的修复方案是及时升级到:Kubernetes v1.10.11 或 Kubernetes v1.11.5 或 Kubernetes v1.12.3 或 Kubernetes v1.13.0-rc.
IIS短文件名
)
禁用windows系统中的短文件名功能。
打开注册表并打开此目录 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
修改 NtfsDisable8dot3NameCreation 的值为1 。
修改完成后,需要重启系统生效。 ) Windows Server R2
查询是否开启短文件名功能:fsutil 8dot3name query
关闭该功能:fsutil 8dot3name set Windows Server
关闭该功能:fsutil behavior set disable8dot3 ) CMD关闭NTFS .3文件格式的支持 举例:(1代表关闭,0代表开启) Windows Server R2: 查询是否开启短文件名功能:fsutil 8dot3name query 关闭该功能:fsutil 8dot3name set Windows Server : 关闭该功能:fsutil behavior set disable8dot3 不同系统关闭命令稍有区别,该功能默认是开启的,对于大多数用户来说无需开启。 ) 修改注册表禁用短文件名功能 快捷键Win+R打开命令窗口,输入regedit打开注册表窗口 找到路径: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem,将其中的 NtfsDisable8dot3NameCreation这一项的值设为 ,1代表不创建短文件名格式 修改完成后,需要重启系统生效 注:此方法只能禁止NTFS8.3格式文件名创建,已经存在的文件的短文件名无法移除,需要重新复制才会消失。 以下两种方法仅适用于缓解GET 方法,其他方法依旧可以猜解。 ) 关闭Web服务扩展- ASP.NET ) 升级netFramework至4.0以上版本
JBoss未授权访问
https://www.cnblogs.com/hackxf/p/8951699.html
https://www.cnblogs.com/hackxf/p/8951699.html
https://www.secpulse.com/archives/24298.html
.在
${jboss.server.home.dir}/deploy下面找到jmx-console.war目录编辑WEB-INF/web.xml文件
去掉 security-constraint 块的注释,使其起作用 .编辑WEB-INF/classes/jmx-console-users.properties或server/default/conf/props/jmx-console-users.properties
(version >=4.0.)和 WEB-INF/classes/jmx-console-roles.properties 或server/default/conf/props/jmx-console-roles.properties(version
>=4.0.) 添加用户名密码 .编辑WEB-INF/jboss-web.xml去掉 security-domain 块的注释 ,security-domain值的映射文件为
login-config.xml (该文件定义了登录授权方式)
mongodb未授权访问漏洞
https://www.cnblogs.com/liqing1009/p/6282454.html
https://www.jianshu.com/p/7448708e6d73
.改端口 .设置登录账号(本来没有账号)
snmp默认团体名/弱口令漏洞(161端口漏洞)
http://blog.sina.com.cn/s/blog_14c1fefb00102z27d.html
drupal注入
zookeeper