常见漏洞修复方案
1. 管理后台对外
Apache 配置文件中修改:
vi /etc/httpd/conf.d/wp.conf |
修改.htaccess文件
在.../admin/ 目录下设置 .htaccess文件 |
Nignx配置
location /private/ { allow 192.168.1.0/24; deny all; } location ~ ^/private/.*\.php$ { allow 192.168.1.0/24; deny all; include conf/enable_php5.conf; } location ~ \.php$ { include conf/enable_php5.conf; } |
BAE 中修复管理后台对外的方法是修改配置文件bae.conf 示例模板如下:
appid : ecomue auth : TrmQpGbPzZyvrugkW6qyd5c0 version : 1.2.5 handlers: - ipwhitelist: ^/wp\-login\.php 61.135.165.*,220.181.50.*,61.135.169.*,220.181.38.* - ipwhitelist: ^/wp\-admin 61.135.165.*,220.181.50.*,61.135.169.*,220.181.38.* - ipwhitelist: ^/wp\-includes/js/swfupload/swfupload.swf 61.135.165.*,220.181.50.*,61.135.169.*,220.181.38.* |
PHP文件中修改:
$laiyuanip=$_SERVER['REMOTE_ADDR']; { }else { } |
2. 跨站脚本攻击漏洞
2.1 普通XSS
1、Htmlspecialchars、htmlentities $help_array = htmlspecialchars($params['help_array']); 2、str_replace str_replace(array('<','>'), array('<','>'), $question['title']); |
2.2 json XSS
(1)设置响应类型为 header("Content-Type:text/javascript; charset=UTF-8"); (2)白名单法: $score = $_REQUEST['score']; |
2.3 flash xss
(1)将ExternalInterface.call参数写死 (2)过滤法: _loc_1 = this.loaderInfo.parameters; ExternalInterface.addCallback("capture", this.capture); _loc_2 = /\W/g; ExternalInterface.call(_loc_2.test(_loc_1["loadedCallback"]) ? ("a") : (_loc_1["loadedCallback"])); |
3. SQL注入
1、对字符串 mysql_escape_string $paramStr = mysql_real_escape_string($paramStr); 2、对数字 intval $param = intval ($param); |
4. FastCGI解析漏洞
(1)php.ini中 cgi.fix_pathinfo = 0 |
5. URL跳转漏洞
function checkurl($url) { |
6. 文件包含漏洞
(1)过滤法: $filename = $_GET("filename"); (2)正则法: $filename = $_GET['filename']; if(preg_match("/^[a-zA-Z0-9_-]+$/",$filename) || preg_match("/^[a-zA-Z0-9_-]*\.[a-zA-Z]{3}$/",$filename)) { } else { echo "非法字符"; exit(); } |
7. 命令执行漏洞
7.1. Strusts命令执行
Strusts命令执行,升级版本
1、升级版本 2、在struts.xml中加入了excludeParams从而限制范围 3、过滤法 private String filterOnglString(String url){ if(url != null){ return url.replaceAll("%\\{.*\\}", ""); }else{ return url; } } |
7.2. Linux GNU Bash 远程命令执行漏洞
GNU Bash 4.3及之前版本在处理某些构造的环境变量时存在安全漏洞,向环境变量值内的函数定义后添加多余的字符串会触发此漏洞,攻击者可利用此漏洞改变或绕过环境限制,以执行shell命令。某些服务和应用允许未经身份验证的远程攻击者提供环境变量以利用此漏洞。可能允许攻击者远程执行任意命令。
升级bash到最高版本 |
8. 信息泄漏类
8.1. 列目录
修改Apache配置文件:
已经对wm.baidu.com/kr目录进行权限控制 或者 <Directory "/home/work/kr/kr "> |
8.2. apache httponly cookie泄露
当apache接收到一个大于4k的cookie的时候,会返回一个400的错误,并且把所有的cookie完整的在页面当中显示出来,提示这个 cookie过大,那么我们的攻击方式便是利用xss,给用户在正常的cookie的基础上再增加一些无用的cookie,使用户的cookie大于 4k,然后js再发包请求一次网站,这时apache返回的响应就是400,并把cookie显示出来,这时我们只要用js正则匹配出正常的cookie 即可,由于不是js直接获取cookie,而只是正则匹配出返回的字符串而已,便相当于绕过了cookie的httponly的属性,完整的攻击再加上把 匹配的字符串再发送到自己的一个接受文件当中即可。
解决方案:
建议一:升级apache 版本 > 2.2.22 建议二:自定义400错误页面输出一个简单生硬的错误代码: ErrorDocument 400 "Bad Request 400" |
8.3. 版本信息泄露
(1)Nginx 修改nginx配置文件nginx.conf中的server_tokens为off (2)Apache 修改httpd.conf |
8.4. SVN信息泄露
find ./ -type d -name ".svn" |xargs rm –rf {} |
8.5. BAIDUID信息泄露
不要在页面中明文保存BDUSS信息 |
最后更新:2017-01-13 09:52:12