月度归档:2015年01月

linux安全配置检查项

1.查看系统口令长度、强度检查

查看系统口令长度

cat /etc/login.defs

PASS_MIN_LEN=8 #设定最小用户密码长度为8 越大越好

查看系统口令强度

cat /etc/pam.d/system-auth
 
password required /lib/security/$ISA/pam_cracklib.so retry=3 minlen=9 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1

从上面使用pam_cracklib.so的策略看,要求用户修改密码时必须要满足9位,并且密码中至少要包含一个大写字母、小写字母、数字和特殊符号

2.系统口令防破解时间限制检查

cat /etc/pam.d/system-auth

在第一行下即#%PAM-1.0的下面添加:
auth required pam_tally2.so deny=3 unlock_time=600 even_deny_root root_unlock_time=1200

各参数解释:
even_deny_root 也限制root用户;

deny 设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户

unlock_time 设定普通用户锁定后,多少时间后解锁,单位是秒;

root_unlock_time 设定root用户锁定后,多少时间后解锁,单位是秒;

3.系统文件权限检查

ls -l /etc/passwd 644 or 600 or 000
ls -l /etc/shadow 600 or 000
ls -l /etc/group 644 or 600 or 000

4.系统用户缺省访问权限

cat /etc/login.defs 查看umask 是否为027 or 077

5.查看是否开启日志

cat /var/log/messages
cat /var/log/secure

6.查看开机启动项

rc_local=`find / -name rc.local`
if [ "$rc_local" ]
then
find / -name rc.local|while read rc_filename
do
echo '[*]filename: '$rc_filename
cat $rc_filename
echo ''
done
else
echo '[x]Find rc_local not exists'
fi

7.查看定时任务

crontab -l

8.查看登录过用户

last|awk '{print $1}'|sort|uniq

9.查看成功登录的用户

if [ -f /var/log/secure ]
then
cat /var/log/secure|grep -i 'Accept'|awk '{print $1" "$2" "$3" "$11}'
else
echo '[x]/var/log/secure file not found'
fi

浅谈UTF-32编码

最近在收集曾经没完全弄明白例子(新手一枚),http://zone.wooyun.org/content/4448 这篇文章里介绍utf-32编码绕过google的xss过滤,成功在ie9以下版本执行js脚本。那么开始分析以下字符是如何转换的。
[0x00][0x00][0x22][0x00] –> ∀
[0x00][0x00][0x3C][0x00] –> 㰀
[0x00][0x00][0x3E][0x00] –> 㸀
通过文章介绍得到utf-32由4个字节组成
%00%00%22%00 –> ∀ (∀字符是%00%00%22%00 通过 utf-32转换utf-8得到的)接下来看例子

<meta charset="UTF-8">
 <?php 
$str='%00%00%22%00'; 
$str=urldecode($str); 
$str=mb_convert_encoding($str,"UTF-8","UTF-32"); 
echo urlencode($str); 
?>

运行后输出:%E2%88%80  也就是∀字符

接着我们就可以写出二哥demo页面 http://www.leesec.com/utf-32.php?charset=utf-32&v=%E2%88%80%E3%B8%80%E3%B0%80script%E3%B8%80alert(1)%E3%B0%80/script%E3%B8%80

<!DOCTYPE html> 
<html> 
<head> <meta charset="utf-8"></meta> 
</head>
 <body> 
<input type="text" value="<?php echo mb_convert_encoding(htmlspecialchars($_GET['v']),$_GET['charset'],"UTF-8"); ?>">
</input>
 </body> 
</html>

代码运行图片