请根据以下列表查看安全漏洞修复方法(不断更新中)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 | 1 ) IIS PUT安全漏洞 漏洞描述: 攻击者可以使用HTTP的PUT方法推送任意文件到Web服务器; 安全隐患: 允许黑客远程推送任意文件到Web服务器,包括Webshell; 修复方案: 1 、关闭IIS的WebDev服务,启动“IIS管理器”,展开本地计算机,选择“Web服务扩展”,右键WebDAV,点击禁用; 2 、关闭网站写权限,展开本地计算机,选择“网站”,对每一个网站,右键选择属性,在主目录选项卡,取消写入选项的勾,并重启网站; 3 、 重启IIS服务器; 2 ) 任意文件下载安全漏洞 漏洞描述: 没有经过身份识别可随意下载文件 安全隐患: 该漏洞可让攻击者随意下载服务器上的任意文件 修复方案: 限制文件download函数读取的文件,或者读取文件名非用户可控 3 ) 任意文件上传安全漏洞 漏洞描述: 没有经过身份识别可随意上传文件 安全隐患: 该漏洞可让攻击者随意上传服务器上的任意文件 修复方案: 添加上传页面的认证,过上传内容进行过滤 4 ) 任意文件读取安全漏洞 漏洞描述: 没有经过身份识别可随意读取文件 安全隐患: 该漏洞可让攻击者随意读取服务器上的任意文件 修复方案: 限制文件读取函数读取的文件,或者读取文件名非用户可控 5 ) 目录遍历安全漏洞 漏洞描述: 1 、如果必须开启该目录的目录列表功能,则应对该目录下的文件进行详细检查,确保不包含敏感文件。 2 、如非必要,请重新配置WEB服务器,禁止该目录的自动目录列表功能。 安全隐患:攻击者可以任意浏览目录结构,容易下载到敏感信息 修复方案: 1 . Apache禁止列目录: 方法一,修改 httpd.conf配置文件,查找 Options Indexes FollowSymLinks,修改为 Options -Indexes; 方法二,在www 目录下的修改.htaccess 配置文件,加入 Options -Indexes。 (推荐) 2 . Tomcat 禁止列目录: 在Tomcat的conf/web.xml文件里把listings值改为 false 。 PS:修改完httpd.conf后,一定记得重启web服务,才能生效噢! 3 . IIS中关闭目录浏览功能:在IIS的网站属性中,勾去“目录浏览”选项,重启IIS; 6 ) struts2安全漏洞 漏洞描述: 攻击者可以提交恶意构造语句,并交由服务器端执行。 安全隐患: 这段代码允许黑客远程执行恶意代码,并在服务器上部署后门。 修复方案: 升级struts到 2.3 . 16.1 ,并重启Web服务器。 7 ) struts debug模式安全漏洞 漏洞描述: 用户打开了struts调试模式 安全隐患: 可以让攻击者得到服务器的敏感信息 修复方案: struts.xml设置 <constant name= "struts-devMode" value= "false" > 8 ) SQL注入安全漏洞 漏洞描述: SQL注入是由于程序中对使用到的sql没有做到数据和结构分离导致程序的sql能被恶意用户控制,从而引发的数据库信息泄漏,修改,服务器被入侵等一系列严重后果。 安全隐患: 数据库信息泄露或被修改,还有可能威胁服务器的安全。 修复方案: 根据SQL语句,查找代码中的注入点(SQL语句拼接时包含可能从get参数/post参数中得到的变量,导致SQL注入), 使用参数化查询避免SQL注入; 参考文档: //open.taobao.com/doc/detail.htm?spm=0.0.0.0.yPXkfW&id=813#ss3 9 ) shopEx本地文件读取安全漏洞 漏洞描述: 没有经过身份识别可随意读取文件 安全隐患: 该漏洞可让攻击者随意读取服务器上的任意文件 修复方案: web应用程序升级到最新版 10 ) shopadmin任意文件读取安全漏洞 漏洞描述: 没有经过身份识别可随意读取文件 安全隐患: 该漏洞可让攻击者随意读取服务器上的任意文件 修复方案: 升级到最新版本的shopadmin 11 ) php代码注入安全漏洞 漏洞描述: 网站被写如后门,直接沦为肉鸡。 安全隐患: 根据漏洞参数定位问题函数,进行过滤。 修复方案: 在PHP中可以执行代码的函数。如eval()、 assert ()、``、system()、exec()、shell_exec()、passthru()、 escapeshellcmd()、pcntl_exec() 等由于程序使用以上个别函数,并从客户端获取输入,如未正确处理,极可能导致代码执行漏洞。 12 ) phpmyadmin setup.php代码注入安全漏洞 漏洞描述: phpMyAdmin是用PHP编写的工具,用于通过WEB管理MySQL。 安全隐患: phpMyAdmin的Setup脚本用于生成配置。如果远程攻击者向该脚本提交了特制的POST请求的话,就可能在生成的config.inc.php配置文件中包含任意PHP代码。由于配置文件被保存到了服务器上,未经认证的远程攻击者可以利用这个漏洞执行任意PHP代码。 修复方案: 升级到最新版本的phpmyadmin 13 ) openssl安全漏洞 漏洞描述: OpenSSL软件存在“心脏出血”漏洞,该漏洞使攻击者能够从内存中读取多达 64 KB的数据,造成信息泄露。 安全隐患: 可被用来获取敏感数据,包括会话Session、cookie、账号密码等。 修复方案: 第一步: Debian/Ubuntu: # apt-get update # apt-get install openssl libssl1. 0.0 CentOS/Redhat/Fedora: # yum update openssl openSUSE: # zypper in -t patch openSUSE- 2014 - 277 如果没有源或者不想从源安装,请手工将OpenSSL升级至 1.0 .1g版本 第二步: 修复完毕后,请重启WEB服务,Apache/Nginx/Httpd的重启方式分别如下: # /etc/init.d/apache2 restart # /etc/init.d/ngnix restart # /etc/init.d/httpd restart 还需要重启其他与OpenSSL相关的服务。(可通过 lsof | grep libssl | awk '{print $1}' | sort | uniq 查看与OpenSSL库相关的服务)。 重启完毕后,可以通过上面的检查框进行验证。 14 ) nginx文件解析安全漏洞 漏洞描述: 攻击者可以文件解析漏洞,指定任意文件作为PHP文件进行执行; 安全隐患: 恶意攻击者可以通过上传图片或TXT格式的文件,在文件中注入PHP代码,从而达到执行恶意代码的目的; 修复方案: 修改php配置文件,设置cgi.fix_pathinfo为 0 ; 或者 在nginx配置文件中添加 if ( $fastcgi_script_name ~ ..*/.*php ) { return 403 ; } 15 ) jmx-console无认证访问安全漏洞 漏洞描述: 攻击者没有经过认证便可访问jmx-console页面 安全隐患: 攻击者可以未经验证进行敏感操作 修复方案: 1 .升级JBoss到最新的版本 2 .删除 $JBOSS_HOME/[server]/all/deploy 和$JBOSS_HOME/[server]/ default /deploy下的Jmx-console.war 、Web-console.war这两个.War文件来禁止对Jmx-console和Web-console的访问 16 ) jboss远程代码执行安全漏洞 漏洞描述: 由于开发人员编写源码,没有针对代码中可执行的特殊函数入口做过滤,导致客户端可以提交恶意构造语句提交,并交由服务器端执行。 - 收起 由于jboss未对/invoker/JMXInvokerServlet以及/invoker/EJBInvokerServlet这两个servlet的请求做验证,导致能够远程部署任意war包。 安全隐患: 这段代码允许黑客远程部署恶意war包,生成jsp后门文件,从而远程执行任意系统命令 修复方案: 限制文件读取函数读取的文件,或者读取文件名非用户可控 17 ) FTP匿名登入安全漏洞 漏洞描述: FTP Server允许匿名登录(使用ftp或者anonymous用户,密码为空)。 安全隐患: 可能会泄漏一些敏感信息。 修复方案: 配置FTP Server为禁止匿名登录。以vsftp2. 2.0 为例,需按照如下说明修改配置文件: ( 1 )将anonymous_enable值改为为NO(如果没有这一行,加上anonymous_enable=NO即可)。 ( 2 )添加local_enable=YES(开启本地用户访问)。 18 ) mysql弱口令安全漏洞 漏洞描述: mysql登陆密码过于简单 安全隐患: 密码容易被攻击者猜测到或被破解工具破解 修复方案: 更改密码,并达到一定的复杂度。 19 ) tomcat弱口令安全漏洞 漏洞描述: tomcat登陆密码过于简单 安全隐患: 密码容易被攻击者猜测到或被破解工具破解 修复方案: 更改密码,并达到一定的复杂度。 20 ) mangodb弱口令安全漏洞 漏洞描述: mangodb登陆密码过于简单 安全隐患: 密码容易被攻击者猜测到或被破解工具破解 修复方案: 更改密码,并达到一定的复杂度。 21 ) URL安全漏洞 漏洞描述: 未经授权及身份识别可查看或下载敏感信息 安全隐患: 攻击者可在未授权情况下获得大量敏感信息 修复方案: 1 、增加权限验证(验证登录中的cookie),所有接口必须登录后才可以调用。 2 、之前使用session等方式验证的url,需要把验证字段使用cookie传送,不能在get请求中传送。 3 、所有excel文件不许直接可以下载 需要使用php或者aspx读取下载 然后在这个读取页面里面加上权限验证。 4 、callback类型的url,请在与taobao进行oauth交互的时候,将淘宝返回的token和nick写入用户浏览器的cookie中,然后在该url中验证cookie登陆情况。 22 ) WebShell入侵安全漏洞 漏洞描述: 攻击者留下了恶意后门 安全隐患: 攻击者可以通过恶意后门掌控服务器 修复方案: 1 、重置机器(止损,黑客已控制整个服务器); 2 、操作系统密码更新; 3 、部署干净的应用代码,不允许直接拷贝原应用的老代码和缓存数据(代码部署前,手动开启云盾进行扫描一遍); 4 、服务器中所有站点的所有密码更新,并确保为强密码; 5 、确保云盾升级为最新版,开启全盘扫描 6 、数据库密码更新,并确保为强密码; 7 、机器上如果有调用topapi,则必须更换top api 的secret,防止数据泄露; 8 、确保机器和原来老机器配置相同的外网端口限制策略。 23 ) RDS安全漏洞 漏洞描述: SQL注入是由于程序中对使用到的sql没有做到数据和结构分离导致程序的sql能被恶意用户控制,从而引发的数据库信息泄漏,修改,服务器被入侵等一系列严重后果。 安全隐患: 数据库信息泄露或被修改,还有可能威胁服务器的安全。 修复方案: 对程序中使用到的SQL语句,使用变量绑定的方式进行数据和结构的分离。 1 、JSP代码 问题代码示例: HttpServletRequest request, HttpServletResponse response) { JdbcConnection conn = new JdbcConnection(); final String sql = "select * from product where pname ='" + request.getParameter( "pname" ) + "'" ; conn.execqueryResultSet(sql); 修复范例: com.mysql.jdbc.Connection conn = db.JdbcConnection.getConn(); final String sql = "select * from product where pname = ?" ; java.sql.PreparedStatement ps = (java.sql.PreparedStatement) conn.prepareStatement(sql); ps.setObject( 1 , request.getParameter( "pname" )); ResultSet rs = ps.executeQuery(); 2 、PHP代码 问题代码示例: 修复范例: prepare($sql); $stmt->execute(array( ':id' =>$id)); 漏洞类型与修复方案持续更新中。 </constant> |