文章目录
  1. 1. 管理后台对外
  2. 2. XSS漏洞
    1. 2.1. 普通XSS
    2. 2.2. json XSS
    3. 2.3. flash xss
  3. 3. Sql注入
  4. 4. Nginx解析漏洞
  5. 5. URL跳转
  6. 6. SVN信息泄露
  7. 7. 文件包含
  8. 8. Strusts命令执行
  9. 9. 列目录
  10. 10. WEB-INF目录被访问
  11. 11. apache httponly cookie泄露
  12. 12. 版本泄露

总结和收集了一些前后台漏洞修复的方案。

管理后台对外

Apache 配置文件中修改: vim /etc/httpd/conf.d/wp.conf

1
2
3
4
5
6
7
8
<Directory /var/www/html/wp/wp-admin>
Order Deny,Allow
Deny from all
Allow from 61.135.165
Allow from 220.181.50
Allow from 61.135.169
Allow from 220.181.38
</Directory>

在…/admin/ 目录下设置 .htaccess文件

1
2
3
4
5
6
7
8
order deny,allow
deny from all
allow from 61.135.165.142/26
allow from 220.181.50.206/26
allow from 61.135.169.68/27
allow from 220.181.38.100/27
allow from 172.0.0.0/8
allow from 10.0.0.0/8

Nignx配置

1
2
3
4
5
6
7
8
9
10
11
12
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;
}

PHP文件中修改:

1
2
3
4
5
6
7
$laiyuanip=$_SERVER['REMOTE_ADDR'];
if ($ceshijieguo=ereg('^(220.181.50|61.135.165|61.135.169|123.125.64|123.125.113|220.181.38 |10. )', "$laiyuanip") ){
echo "";
} else {
echo 'IP 未授权';
exit;
}

XSS漏洞

普通XSS
1
2
3
4
5
1、Htmlspecialchars、htmlentities
$help_array = htmlspecialchars($params['help_array']);
2、str_replace
str_replace(array('<','>'), array('&lt;','&gt;'), $question['title']);
3、如果是smarty ,参考利用Smarty自动转义来避免简单XSS
json XSS
1
2
3
4
5
6
(1) 设置响应类型为 header("Content-Type:text/javascript; charset=UTF-8");
(2) 白名单法:
$score = $_REQUEST['score'];
if(preg_match('/[0-9]{1,2}/$', $score)!==1){
echo ""; return;
}
flash xss
1
2
3
4
5
6
(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"]));

Sql注入

1
2
3
4
1、对字符串 mysql_escape_string
$paramStr = mysql_real_escape_string($paramStr);
2、对数字 intval
$param = intval ($param);

Nginx解析漏洞

1
2
3
(1)php.ini中 cgi.fix_pathinfo = 0
(2)lighttpd增加rewrite规则:
"\..*/.*\.php" =>"/index.php",

URL跳转

1
2
3
4
5
6
7
8
9
10
(1)校验refer:
if (strpos($_SERVER['HTTP_REFERER'], 'baidu.com') ==false){
echo “非法跳转”;
exit();
}
(2)校验url:
if(strpos($red_url[0],"baidu.com/" ) === false){
echo “非法跳转”;
exit();
}

SVN信息泄露

1
find ./ -type d -name ".svn" |xargs rm –rf {}

文件包含

1
2
3
4
5
6
7
8
9
10
11
(1)过滤法:
$filename = $_GET("filename");
$filter_tags = array('..','%00');
$filename = str_replace($filter_tags,'',$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();
}

Strusts命令执行

1
2
3
4
5
6
7
8
9
10
1、升级版本
2、在struts.xml中加入了excludeParams从而限制范围
3、过滤法
private String filterOnglString(String url){
if(url != null){
return url.replaceAll("%\\{.*\\}", "");
}else{
return url;
}
}

列目录

修改Apache配置文件:

1
2
3
4
5
6
7
已经对wm.baidu.com/kr目录进行权限控制
&lt;Directory "/home/work/kr/kr">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
deny from all
&lt;/Directory>

或者:
1
2
3
4
5
6
&lt;Directory "/home/work/kr/kr ">
Options -Indexes -MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
&lt;/Directory>

WEB-INF目录被访问

1
2
3
&lt;Directory "/home/work/local/apache/htdocs/WEB-INF">
Deny from all
&lt;/Directory>

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"

版本泄露

1
2
3
4
5
6
(1) Nginx
修改nginx配置文件nginx.conf中的server_tokens为off
(2) Apache
修改httpd.conf
ServerSignature Off
ServerTokens ProductOnly
文章目录
  1. 1. 管理后台对外
  2. 2. XSS漏洞
    1. 2.1. 普通XSS
    2. 2.2. json XSS
    3. 2.3. flash xss
  3. 3. Sql注入
  4. 4. Nginx解析漏洞
  5. 5. URL跳转
  6. 6. SVN信息泄露
  7. 7. 文件包含
  8. 8. Strusts命令执行
  9. 9. 列目录
  10. 10. WEB-INF目录被访问
  11. 11. apache httponly cookie泄露
  12. 12. 版本泄露