关于本地Cookies和服务端的Session机制分析

今天看到Cookies里面有一串参数,__utma,__utmb,__utmc,__utmm,__utmv,然后查了下,这些是谷歌统计留下的Cookies信息。另外还有一个Jsession,几年前存在Cookies欺骗,用session保存在服务端安全,众所周知,Cookies是保存在客户端,客户端如果篡改了,服务端的验证也就失效了,故Cookies存在欺骗,Session虽然是在服务端,但是在客户端也不可能没有信息。为嘛没有人去破解呢,还有session跟cookies一样有有效期,会话注销后session可以也注销,如果会话注销后,session还是有效的,这样就离不开客户端了,是怎么实现的呢。晚上写代码研究下,还有session可以保存在服务器上,同样也可以保存在数据库中,保存到那里更安全一些呢?值得研究一下。

首先用php创建一个session,代码如下:

<?
ini_set('session.save_path', dirname(__FILE__).'/'); //设置保存到服务器根路径,默认session在win是保存到C:\windows\temp,lin//ux是保存到/usr/local/php/tmp/session/,可以在php.ini修改或者ini_set设置。
$username = $_GET['id'];
session_start();
$_SESSION[$user];

session原理
上图为查看PHPSESSION在cookies中的值。
 

在服务端有一个文件,sess_***********,后面的*******就是Cookies里面的PHPSESSION的值。
于是猜测每个会话在Cookies的PHPSESSION值,传到apache去,apache会以系统的方式到对应的目录去查找这个文件。文件保存的内容就是Session的值。这样如果客户端的Session被穷举了呢,Session只有登陆了才有,这个文件名像一个庞大的随机数,破解的可能性很小,Session的验证机制看大神们讨论与主机头请求,ip也有关系,不过都是可以绕过的。没有100分的安全,尽力做到99分就好了。
Session存到服务器安全呢,还是存到数据库安全呢,各有利弊,如果暴力破解了session名,如果服务器安全做的比较好的话,就放到服务器(存在任意文件下载漏洞就会导致安全问题了),如果防sql注入做的比较好的话就放到数据库(有sql注入漏洞就会导致安全问题了)。所以放到那里都没有100分的安全。
 

Linux对外发包的缓兵之计iptables

# Generated by iptables-save v1.4.7 on Fri Sep 11 09:54:56 2015
*filter
:INPUT DROP [3338:200864]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [184:18178]

#for http
-A INPUT -p tcp –dport 80 -j ACCEPT
-A OUTPUT -p tcp –sport 80 -j ACCEPT
#允许UDP服务IP
-A OUTPUT -p udp –dport 53 -d 8.8.8.8 -j ACCEPT
#禁止udp服务
-A OUTPUT -p udp -j DROP
#禁用ping
-A INPUT -p icmp –icmp-type 8 -s 0/0 -j DROP
COMMIT
# Completed on Fri Sep 11 09:54:56 2015
 
遇到服务器对外发包,用这段iptables规则可以暂时不对外发包,给予充足的时间去检查恶意发包程序。

Kali之nmap基础命令学习

nmap 192.168.0.1-255 或者nmap 192.168.0.1/25? 批量扫描网段
(10.1.1.1/8, 172.16.1.1/12, 192.168.1.1/16 这些是内网网段)
-sP?? ??? ?扫描在线主机
iL ?? ??? ?文件名,导入IP扫描
-sT 4 ?? ??? ?常用扫描类型

-oN?? ??? ?输出到文件 nmap -oN log.txt 192.168.0.1 普通输出
参数:
-oX xml文件输出
-oG GREPable输出
-oS 脚本小子输出

-F ?? ??? ?快速扫描
-O ?? ??? ?操作系统指纹识别
-p- ?? ??? ?扫描全部端口
-p 端口号?? ?扫描指定端口
–scan_delay??? 时间,扫描延时
-vv?? ??? ?扫描详细信息
-v?? ??? ?扫描信息
-sS?? ??? ?TCP同步扫描(TCP SYN) –隐式扫描
-sF -sX -sN?? ?秘密FIN数据包扫描、圣诞树(Xmas Tree)、空(Null)扫描模式
-sP?? ??? ?ping扫描
-sU?? ??? ?UDP扫描
-sA?? ??? ?ACK扫描 确定TCP端口是否被过滤
-sW?? ??? ?对滑动窗口的扫描
-sR?? ??? ?RPC扫描
-b?? ??? ?FTP反弹攻击(bounce attack)

下面是Nmap支持的四种最基本的扫描方式:
⑴ TCP connect()端口扫描(-sT参数)。
⑵ TCP同步(SYN)端口扫描(-sS参数)。
⑶ UDP端口扫描(-sU参数)。
⑷ Ping扫描(-sP参数)。

1)扫描主机
nmap -sP ip/[mask]
2)扫描TCP端口
基本扫描,完成三次握手:nmap -sT ip
3)UDP连接扫描
nmap -sU
4)协议扫描
nmap -sO
5)隐藏扫描行为
FTP反弹:nmap -b anonymous@ftp.lame_host.com -p 6000 192.168.1.1
6)TCP Reverse Ident扫描
-I选项激活这种类型的扫描,因为nmap必须与identd服务进行有效的连接以得到相应信息,所以-I标志不能被用于隐蔽扫描。
nmap -sT -I ip
7)OS“指纹识别”
8)版本检测
nmap -sV ip
/usr/local/share/nmap下的nmap-service-probes文件
使用方式:~#:nmap 192.168.1.1/24 –script=smb-check-vulns

常用nmap命令:
nmap -sS -Pn -A? #用nmap 探测开放端口和服务
nmap -T4 -A -v #深入式扫描
nmap -sS -sU -T4 -A -v #同上,且扫UDP
nmap -p 1-65535 -T4 -A -v #扫描所有TCP 端口
nmap -T4 -A -v -Pn #不使用ping
nmap -sn #使用ping
nmap -T4 -F #快速扫描
nmap -sV -T4 -O -F –version-light #加强版快速扫描
nmap -sn –traceroute #快速路由跟踪扫描
nmap -sS -sU -T4 -A -v -PE -PP -PS80,443 -PA3389 -PU40125 -PY -g 53 –script #慢速全面扫描
nmap –script=banner -p 8000 218.6.246.161 # 端口,ip,通过ip端口识别服务 jdwp
nmap –script=banner 218.6.246.161 # 扫描服务信息

Kali ssh配置 win7下访问

用虚拟机搭建的kali,本地win7用putty访问看了网上一些资料都不全或者是过时了,要汇总到一起才管用。
开始配置,虚拟机与本地ip不在一个网段,一直ping不通,于是查了下,虚拟机的网络配置中选择桥接:直接链接到物理网络,下面的NAT:使用共享主机的ip地址要打勾选上去才可以,这样保证了虚拟机和本机在一个段中,或许也有其他的设置方法,我是用的这种方法。
修改sshd_config文件,命令为:vi /etc/ssh/sshd_config
将#PasswordAuthentication no的注释去掉,并且将NO修改为YES? //我的kali中默认是yes
其他的看了下与ssh相关的,端口了什么的都把注释#去掉了,网上说的#PermitRootLogin在新版的kali里面没有找到这个选项,然后启动ssh(service ssh start),验证ssh是否启动的命令为/etc/init.d/ssh status。
最后就是自启动了,看了下网上的几种方法都配置不成功,于是找了系统启动加载的一种方法。
vi /etc/rc.local
在exit 0之前添加上service ssh start或者/etc/init.d/ssh start就好了。
顺利链接成功,这样本地直接访问虚拟机使用里面的工具就好了,部分工具还是要直接去虚拟机操作的。