五月 5th, 2009

WAVDB漏洞库正式对外访问

3 Comments, 安全防护, by Neeao, 405 views.

历时一年的数据架构重组以及功能改版之后,原OpenBugSystem已经正式完成了。

关于我们(About)
WAVDB是Web Application Vulnerability DataBase(Web应用程序漏洞数据库),是由Code Defense Lab建立并维护的国内唯一一个专注于Web应用程序漏洞数据库,WAVDB囊括了国内外大部分的Web应用程序漏洞以及缺陷,从1993年至今 WAVDB已经收集并且整理了652个程序厂商1300多条漏洞信息。

WAVDB发展历程(History)
2005-08-11 – OpenBugSystem建立,并且开始进行有关的漏洞信息录入以及整理。
2005-10-30 – OpenBugSystem已经录入了有关信息840条。
2006-07-20 – OpenBugSystem注册域名 www.open-bug.org,并且正式对外开放访问。
2006-02-12 – OpenBugSystem更新版本,发布Beta 1.0。
2006-03-2008-09 OpenBugSystem关闭对外访问,并且停止更新达两年半之久。
2008-10-02 – OpenBuySystem重新启动,由Code Defense Lab负责更新以及整理。
2009-02-20 – OpenBuySytem更名为WAVDB,使用新域名 www.wavdb.com,WAVDB录入量达到653个程序厂商1332条漏洞信息。
2009-03 WAVDB为了更好的突出漏洞库的数据,重新整理了数据库的架构。
2009-04 WAVDB添加漏洞类型统计图以及个别热门程序的漏洞走势图。

经过艰难的十月怀胎,Ph4nt0m Webzine 0x03终于降生,这归功于文章的作者们,他们一
直坚持着的钻研和分享的精神是我们前进的动力。

    最近腾讯召开第二届安全会议,邀请了包括本期杂志的一些作者在内的多位安全专家与
会演讲。多年以来安全会议多由乙方安全厂商举办,近两年腾讯和阿里相继举办安全会议,标
志着安全在甲方企业越来越受重视,也反映出国内由乙方举办的安全会议的议题设置上的不
足:关于企业信息安全建设方面的内容较少,无法满足甲方安全人员交流的需要。

    本期杂志为大家带来一篇专访和五篇技术文档:

    第二篇是本刊特别记者zhenhan.liu对圈内著名神秘八卦ID——wordexp的专访,采访涉及
了多个大家感兴趣的八卦的、科普的、技术的问题。

    第三篇是wzt写的关于linux内核hook方面的文章,wzt长期坚持linux内核以及rootkit方
面的研究。

    第四篇是我写的关于如何编写更加短小的xss payload的技巧总结性的文章,是这一期中
最短的一篇。

    第五篇是茄子的关于浏览器安全文章,姑且先在这里卖个关子:茄子出品必有0DAY。

    第六篇可以说是本期的扛鼎大作,作者把多年PHP应用安全研究的积累总结成这篇文章,
其中的价值不用我多言,只需要用心去阅读。

    第七篇是刺关于WEB应用安全设计方面的思考以及实践的总结和提炼,对WEB产品安全人
员和架构师有很好的指导意义。

    内容的简介就到这里。

    随时欢迎大家给我们投稿,还有您的意见和建议,请发邮件到root#ph4nt0m.org。

    最后再次感谢Ph4nt0m Webzine 0x03的所有作者们!

   在这里浏览: http://www.neeao.com/pstzine/0x03/
   Ph4nt0m Webzine 0x02 http://www.neeao.com/pstzine/0x02/

五月 4th, 2009

Facebook 如何管理150亿张照片

1 Comment, 技术文档, by Neeao, 407 views.

Facebook 的照片分享很受欢迎,迄今,Facebook 用户已经上传了150亿张照片,加上缩略图,总容量超过1.5PB,而每周新增的照片为2亿2000万张,约25TB,高峰期,Facebook 每秒处理55万张照片,这些数字让如何管理这些数据成为一个巨大的挑战。本文由 Facebook 工程师撰写,讲述了他们是如何管理这些照片的。

旧的 NFS 照片架构
老的照片系统架构分以下几个层:
# 上传层接收用户上传的照片并保存在 NFS 存储层。
# 照片服务层接收 HTTP 请求并从 NFS 存储层输出照片。
# NFS存储层建立在商业存储系统之上。

因为每张照片都以文件形式单独存储,这样庞大的照片量导致非常庞大的元数据规模,超过了 NFS 存储层的缓存上限,导致每次招聘请求会上传都包含多次I/O操作。庞大的元数据成为整个照片架构的瓶颈。这就是为什么 Facebook 主要依赖 CDN 的原因。为了解决这些问题,他们做了两项优化:
# Cachr: 一个缓存服务器,缓存 Facebook 的小尺寸用户资料照片。
# NFS文件句柄缓存:部署在照片输出层,以降低 NFS 存储层的元数据开销。

新的 Haystack 照片架构
新的照片架构将输出层和存储层合并为一个物理层,建立在一个基于 HTTP 的照片服务器上,照片存储在一个叫做 haystack 的对象库,以消除照片读取操作中不必要的元数据开销。新架构中,I/O 操作只针对真正的照片数据(而不是文件系统元数据)。haystack 可以细分为以下几个功能层:
# HTTP 服务器
# 照片存储
# Haystack 对象存储
# 文件系统
# 存储空间

存储
Haystack 部署在商业存储刀片服务器上,典型配置为一个2U的服务器,包含:
# 两个4核CPU
# 16GB – 32GB 内存
# 硬件 RAID,含256-512M NVRAM 高速缓存
# 超过12个1TB SATA 硬盘

每个刀片服务器提供大约10TB的存储能力,使用了硬件 RAID-6, RAID 6在保持低成本的基础上实现了很好的性能和冗余。不佳的写性能可以通过高速缓存解决,硬盘缓存被禁用以防止断电损失。
文件系统
Haystack 对象库是建立在10TB容量的单一文件系统之上。文件系统中的每个文件都在一张区块表中对应具体的物理位置,目前使用的文件系统为 XFS。
Haystack 对象库
Haystack 是一个简单的日志结构,存储着其内部数据对象的指针。一个 Haystack 包括两个文件,包括指针和索引文件:

Haystack 对象存储结构

指针和索引文件结构


Haystack 写操作
Haystack 写操作同步将指针追加到 haystack 存储文件,当指针积累到一定程度,就会生成索引写到索引文件。为了降低硬件故障带来的损失,索引文件还会定期写道存储空间中。

Haystack 读操作
传到 haystack 读操作的参数包括指针的偏移量,key,代用Key,Cookie 以及数据尺寸。Haystack 于是根据数据尺寸从文件中读取整个指针。

Haystack 删除操作
删除比较简单,只是在 Haystack 存储的指针上设置一个已删除标志。已经删除的指针和索引的空间并不回收。

照片存储服务器
照片存储服务器负责接受 HTTP 请求,并转换成相应的 Haystack 操作。为了降低I/O操作,该服务器维护着全部 Haystack 中文件索引的缓存。服务器启动时,系统就会将这些索引读到缓存中。由于每个节点都有数百万张照片,必须保证索引的容量不会超过服务器的物理内存。

对于用户上传的图片,系统分配一个64位的独立ID,照片接着被缩放成4种不同尺寸,每种尺寸的图拥有相同的随机 Cookie 和 ID,图片尺寸描述(大,中,小,缩略图)被存在代用key 中。接着上传服务器通知照片存储服务器将这些资料联通图片存储到 haystack 中。

每张图片的索引缓存包含以下数据

Haystack 使用 Google 的开源 sparse hash data 结构以保证内存中的索引缓存尽可能小。
照片存储的写/修改操作
写操作将照片数据写到 Haystack 存储并更新内存中的索引。如果索引中已经包含相同的 Key,说明是修改操作。

照片存储的读操作
传递到 Haystack 的参数包括 Haystack ID,照片的 Key, 尺寸以及 Cookie,服务器从缓存中查找并到 Haystack 中读取真正的数据。

照片存储的删除操作
通知 Haystack 执行删除操作之后,内存中的索引缓存会被更新,将便宜量设置为0,表示照片已被删除。

重新捆扎
重新捆扎会复制并建立新的 Haystack,期间,略过那些已经删除的照片的数据,并重新建立内存中的索引缓存。

HTTP 服务器
Http 框架使用的是简单的 evhttp 服务器。使用多线程,每个线程都可以单独处理一个 HTTP 请求。

结束语
Haystack 是一个基于 HTTP 的对象存储,包含指向实体数据的指针,该架构消除了文件系统元数据的开销,并实现将全部索引直接存储到缓存,以最小的 I/O 操作实现对照片的存储和读取。

本文国际来源:http://www.facebook.com/FacebookEngineering#/note.php?note_id=76191543919&ref=mf
中文翻译来源:COMSHARP CMS 官方网站

intval()使用不当导致安全漏洞的分析

author: xy7#80sec.com
from:http://www.80vul.com/pch/

一 描叙

intval函数有个特性:"直到遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束时(\0)结束转换",在某些应用程序里由于对intval函数这个特性认识不够,错误的使用导致绕过一些安全判断导致安全漏洞.

二 分析

 PHP_FUNCTION(intval)
{
        zval **num, **arg_base;
        int base;
      switch (ZEND_NUM_ARGS()) {
                case 1:
                        if (zend_get_parameters_ex(1, &num) == FAILURE) {
                                WRONG_PARAM_COUNT;
                        }
                        base = 10;
                        break;
                case 2:
                        if (zend_get_parameters_ex(2, &num, &arg_base) == FAILURE) {
                                WRONG_PARAM_COUNT;
                        }
                        convert_to_long_ex(arg_base);
                        base = Z_LVAL_PP(arg_base);
                        break;
                default:
                        WRONG_PARAM_COUNT;
        }
        RETVAL_ZVAL(*num, 1, 0);
        convert_to_long_base(return_value, base);
}

Zend/zend_operators.c->>convert_to_long_base()
……
case IS_STRING:
            strval = Z_STRVAL_P(op);
            Z_LVAL_P(op) = strtol(strval, NULL, base);
            STR_FREE(strval);
            break;

当intval函数接受到字符串型参数是调用convert_to_long_base()处理,接下来调用Z_LVAL_P(op) = strtol(strval, NULL, base);通过strtol函数来处理参数。

函数原型如下:

long int strtol(const char *nptr,char **endptr,int base); 

这个函数会将参数nptr字符串根据参数base来转换成长整型数,参数base范围从2至36,或0.参数base代表采用的进制方式,如base值为10则采用10进制,若base值为16则采用16进制等。

流程为:
strtol()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束时(\0)结束转换,并将结果返回。

那么当intval用在if等的判断里面,将会导致这个判断实去意义,从而导致安全漏洞.

三 测试代码

<?
//intval.php
$var="20070601";
if (intval($var))
echo "it's safe";
echo '$var='.$var;
echo "<br>";
$var1="1 union select 1,1,1 from admin";
if (intval($var1))
echo "it's safe too";
echo '$var1='.$var1;
?>

四 实际应用

WordPress <= 2.0.6 wp-trackback.php Zend_Hash_Del_Key_Or_Index / sql injection exploit
[http://superhei.blogbus.com/logs/4255503.html]

Microsoft Internet Infomation Server 6.0 ISAPI Filename Analytic Vulnerability

function Copyright()
{

var Author=”80sec”;
var Email=”kEvin#80sec.com”.replace(”#”,”@”)
var Site=”http://www.80sec.com”;
var Date=new Date(2009,4,24).toLocaleString();
var Reference=”http://www.80sec.com/Microsoft-Internet-Infomation-Server-6-ISAPI-filename-analytic-Vulnerabilitie.html”;
return Reference;

}

/*

漏洞描述:

IIS6 (Internet Infomation Server 6.0) 是微软出品的一款WEB服务器系统, 广泛用于各种个人/商业信息发布/网站架设领域。80sec在测试中发现, IIS设计上在处理畸形文件名的时候存在一个严重的安全漏洞, 可能绕过web程序的逻辑检查从而能导致服务器以IIS进程权限执行任意恶意用户定义的脚本, 黑客可以通过制造畸形的服务器文件来触发该 漏洞, 并从而控制服务器.

漏洞厂商:

Microsoft [ http:\/\/www.microsoft.com ]

漏洞测试:

Undefined

解决方案:

等待微软更新官方补丁.

*/

四月 24th, 2009

关于html本地权限问题

1 Comment, 安全防护, by Neeao, 535 views.

by:lcx

最近看了两篇文章,一篇是Google Chrome使用ajax读取本地文件漏洞,另一篇是本地执行ajax的权限问题,对此我有一点自己的想法,我认为这都不算是安全问题,好像这两篇文章没有对本地html的权限有足够的了解。

举两个例子,一个是html读出本地txt内容,一个是html操作本地数据库,关键是用户允许执行本地的js了。

如果还不清楚html权限有足够大的话,请执行C:\WINDOWS\pchealth\helpctr\System\sysinfo下面的相关 的html,如C:\WINDOWS\pchealth\helpctr\System\sysinfo\sysinfosum.htm,你就有足够的了 解。

如果有了用户执行本地active权限的操作,对IE来讲是不分浏览器的版本的,像html读出本地txt内容同样在IE8下就适用(win7+ie8以及xpsp2+ie7测试通过)。所以我认为空虚浪子心发的一会对这个浏览器测试一会对那个浏览器测试ajax读本地内容,以及xeye团队对这个议题研究的意义不大,本身是允许用户执行了本地js了。

如果没有提示来执行的话,才算是安全问题。举个例子,像ms06014网马在xp系统上补丁打了,你本地执行ms06014网马,如果一步一步允许所有执行都同意的话,它同样是可以执行的。

一家之言,希望以上两篇文章的作者不要骂我。

新闻来源:milw0rm.com
Linux的udev程序再爆本地提权漏洞,本地用户可以轻易获得root权限,请立即更新udev程序。(2.4内核系统不受影响)
修复方法(修复前请备份重要数据): debian用户请执行apt-get update ; apt-get upgrade -y

centos用户请执行yum update udev

RedHat用户请使用官方rpm包更新或者购买RedHat的satellite服务。

攻击效果展示:
libuuid@debian:~$ sh a 890
sh-3.1# id
uid=0(root) gid=0(root) groups=105(libuuid)
sh-3.1# cat /etc/debian_version
lenny/sid
sh-3.1# dpkg -l | grep udev
ii  udev                              0.114-2               /dev/ and hotplug management daemon

现在确认的是此攻击方式对Debian和Ubuntu相当有效,对RedHat的攻击效果有待确认。

最新战况请查阅 http://baoz.net/linux-udev-exploit/

在周四于迪拜举行的HITB安全大会上,安全研究人员演示了如何通过软件,来入侵微软的新系统Windows 7,他们利用的是该系统中无法修复的设计漏洞来进行的。研究员Vipin Kumar和Nitin Kumar利用自己开发的VBootkit 2.0,演示了黑客如何在Windows 7启动时获得系统的控制权。

据悉,这个攻击方式和其他的不太一样,它只能用于Windows 7。尽管此攻击过程不能通过远程控制来完成,需要黑客直接接触目标PC,但是Vipin指出:“目前该问题还未修复,而且它无法被修复,因为这是个设计上的问题。”

该程序只有3KB大小,允许攻击者在系统启动时更改系统内存中加载的文件。由于没有更改硬盘中的数据,所以VBootkit 2.0 很难被察觉,重启电脑之后可以消除此安全问题。

一旦成功使用该软件进行入侵,黑客可以远程控制目标机器,并改变用户的访问权限。正像它的版本号一样,VBootkit 2.0是这两位开发者开发的第二款程序,原先的版本在07年曾经用来演示如何入侵Windows Vista。目前微软尚未对此事发表评论。

cnBeta编译
来源:
Electronista

一位计算机安全研究人员发布了一款升级工具,它可以简单的在微软Windows系统中的.Net Framework里,安置难以被察觉的恶意软件。该工具名为.Net-Sploit 1.0,可以用来修改.Net Framework,后者是安装在Windows机器上用来执行特定类型程序的软件。

据 该软件的作者,2BSecure的软件安全工程师Erez Metula称,.Net-Sploit允许黑客修改目标机器上的.Net Framework,并在安全软件没有触及,安全人员也不注意的位置,注入rootkit类的恶意软件。他在周五的黑帽安全大会上指出:“你将会对它攻击 过程的简易的程度感到吃惊。”

.Net-Sploit可以让黑客使用恶意代码取代.NET Framework中的合法代码。当一些依赖于.Net framework 的程序运行之后,恶意软件可以影响到这些程序的功能。比如某个程序携带身份认证机制,一旦被攻击之后,.Net framework 能自动拦截用户名和密码,并发送到远程服务器中。

此外,.Net-Sploit还能自动执行一些代码任务,来加速该框架的腐化速度,使得攻击的速度加快,比如,它可以感染到该框架相关的DLL,从而部署这些恶意的DLL。

Metula指出,在使用该工具之前,黑客必须首先要取得对目标机器的控制,之后利用被修改的.Net framework,攻击者可以秘密的控制这台机器很长一段时间而可能不会被察觉。

cnBeta编译
来源:
Networkworld

四月 23rd, 2009

福州网龙公司招聘反黑专员

2 Comments, 业界咨询, by Neeao, 503 views.

福州网龙公司招聘反黑专员,要求如下:

1、男女不限,工作年限不限,本科以上学历、计算机应用、计算机网络等相关专业;
2、对脚本编程有较深了解,对各项WEB应用技术的安全问题熟悉;
3、熟悉至少两种安全攻防技术;熟悉系统漏洞、木马外挂技术、恶意脚本原理;
4、理解网络原理,入侵检测、漏洞扫描等原理,有一定的黑客入侵分析和防范经验;
5、有丰富安全项目实施经验者优先考虑;
7、具有较强的沟通及团队协作能力。

网龙公司简介:http://www.nd.com.cn/cn/about/intro.shtml

招聘人数:5人

工作地点:福州

待遇:3k以上,有能力者上不封顶

联系方式:

QQ:88952634

电话:13696855342

邮箱s0_6[at]hotmail.com