Archive for the '网络安全' Category

骇客帝国…

Saturday, August 25th, 2007

今天看CCTV2经济半小时的”骇客帝国“真是看的我狂晕。。。
里面举了个例子:记者和骇客张在同一局域网内,记者在sina的网站上登录邮箱,骇客张用抓包软件得到了记者的用户和密码。。哇好厉害呀。。。崇拜ing…
刚刚我特意看了看sina邮箱的登录:http://mail.sina.com.cn/cgi-bin/login.cgi
丫的,有点计算机知识的都知道http,ftp,smtp,pop之类的协议是怎么回事。。。你怎么不来个更NB的,直接练就火眼金睛在人家边上看得了。
骇客张还说骇客们一年可以收入几百几千万(当然是有可能的),可是我所知道的那些牛人好像都没有吧?不好意思我孤陋寡闻了,真是NB的殃视,估计又有无数的娃娃们义无反顾的投身骇客事业去抓肉鸡,监听局域网,破QQ密码了。。

我们每天要受多少的试探性攻击。

Wednesday, March 22nd, 2006

昨天晚上看了一下apache的access_log和error_log,发现非常多的扫描记录,怪不得最近机子负荷这么大,稍稍统计一下每天有好几十个IP对主机进行扫描,更郁闷的是这些家伙连接服务器类型都不判断一下,在linux上狂扫关于asp的内容,而最多的竟然是想获取dvbbs的access数据库文件。从记录上看好像用xfocus的x-scan的居多。IP上看网吧和adsl的居多。还是不放心,认真检查了一下最近的登录日志、开放端口、服务并用各种工具也扫了一下没发现什么问题,终于放下心来。不过还是要经常检查检查,以防万一。

从CVS check out 后请记得删除CVS目录

Monday, February 27th, 2006

一个朋友(A)发现自己的服务器上有别的产商留下的一些东西,发现了一个CVS目录,很明显这些文件和目录是从CVS服务器上取下来的数据。CVS目录下有一个Root文件,内容是连接CVS服务器的一些参数::pserver:user_name@xxx.xxx.xxx.xxx:/cvs/path。啊,协议、用户名、服务器IP及以路径,多么重要的信息啊!于是A用自己的CVS客户端连上了这台服务器并根据user_name来猜测用户密码,没想到第二次猜测时就猜对了,于是这个产商的………..
相信大家明白放在CVS上的东西对于公司来说意味着什么….
所以当我们从CVS服务器上check out某些数据后,如果不需要再check in或是做别的跟CVS服务器交互时请及时删除CVS目录。也请朋友们提高安全意识、讲究卫生不要随便扔垃圾(文件),更要注意密码强度。你的密码安全吗?生日,名字的拼音或缩写,英语单词….或者干脆空密码、用户名?
有人要说了:你哪次写安全方面的东西不是这几句,就不能来点新鲜的?
wahahaha,安全其实就这么点东西(从某种角度上说)。提高安全意识永远是第一位的,然后是学习技巧。
ps:发现现在真是不如当年了,有时候做些事情时手会发抖了,难道当年真是无知无谓?说到安全想到前几天遇到的系统关于安全性的修改,别的人修改让我花了两天的时间来修正,让我十分的光火。绝对安全是不可能的,也不要一味的为了提高安全性而牺牲系统的可用性和方便性(再说你做的调整就一定有效?简直是对安全专家们一生努力的侮辱。不要跟我说”防君子不防小人”之类的话啦。)。系统安全达到系统建设要求时就请适度而止,盲目追求所谓的安全性只会劳命伤财。

浅淡C语言程序安全(一)

Wednesday, December 21st, 2005

一年半前写的东西,呵呵,随便翻出来的。——————-

今天终于把前几天那个Bug找出来了,找了好久,原来strncpy时多拷了两位,往栈的高位写了两个字节,结果刚好将一个关键变量的内容覆写了,晕….说到堆栈想起前段时间说的缓冲区溢出来,小议一下。说实话以下说的内容其实我自己也没做到,总觉自己老是在说什么这也不是那也不是的有些过意不去,特别是自己都没做到的时候。不过单纯从学习技术的角度上来看,简单的说说也是有必要的。
堆栈溢出非常的常见,比如往一个字符数组中写入一个大于定义长度的字符串时:char sCont[5];strcpy(sCont,”AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA”);就产生一次溢出,比较常见的结果是出现Segmentation fault错误。当这个函数局部变量较多的时候甚至没有出错提示,比如我开篇时说的就是这那情况。
下文在X86平台下以C语言为例进行说明。
先从基础说起.
一.堆栈:堆栈是一片连续的内存空间,是一种后进先出结构,其生长方向与内存的生长方向相反,内存由低位往高位生长,而堆栈由高位往低位生长。入栈操作push=ESP-4,出栈操作pop=ESP+4. 也就是说执行push eax;push ebx;序列后,eax的存放的地址比ebx的存放地址要小.这是堆栈溢出的理论依据。二.函数调用:执行一次函数调用时,将在堆栈中依次压入:参数(由右至左),返回地址,EBP,及可能有的局部变量,在函数执行结束后局部变量丢失,在函数返回的时候,弹出返回地址给EIP,以继续执行程序。
现在看看一下简单的溢出过程.
void OverflowTest(){char sCont[5];strcpy(sCont,”AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA”);}
调用OverflowTest时堆栈如下分配:–栈底(低位) —— 栈顶(高位)局部变量 EBP 返回地址 参数[…[XXXXX(注:sCont[5])] [0x…] [0x…] [没有参数]……]当我们正常往sCont写字符串值时内存应该是这样子的:–栈底(低位) ——栈顶(高位)局部变量 EBP 返回地址 参数[…[abcd\0] [0x….] [0x….] [没有参数]……]
这样的的结果是正确的,但是当我们写入一个大于5位的值时,因为sCont中存放不下所写的内容所以, 只好向内存顶部继续写执行strcpy(sCont,”AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA”);这条语句后内存的情况是这样子的:–栈底(低位) —— 栈顶(高位)局部变量 EBP 返回地址 参数[…[AAAAA] [AAAA] [AAAA] AAAAA…]
可以看出EBP和返回地址的值被改成成了AAAA,当函数执行结束要返回的时候,CPU将”AAAA”的ASCII码:0×41414141作为返回地址,CPU会试图执行0×41414141处的指令,CPU访问不存在的指令,结果出现错误。这就是一次堆栈溢出。Segmentation fault。
你可能已经注意到了,当溢出发生时我们改变了程序的执行过程,如果返回地址是一个有效的指令地址时,CPU将转向这个地址去执行从这个地址开始的指令序列,当你精心构造一个要执行的指令序列(当然要存放在进程的4Gb地址空间中)并将返回地址指向这个序列时,以实现缓冲区溢出攻击了,在UINX系统中,我们的指令可以执行一个shell,这个shell将获得和被我们堆栈溢出的程序相同的权限。如果这个程序是setuid的,那么我们就可以获得root shell。而这个指令序列就是我们常说的shell code。
这不是一篇缓冲区溢出的攻击教程,我也不打算详细说明如何去做下面的事情。相反我想通一些例子代码来说明如何编写缓冲区安全的程序。
HJLEOCHEN 2004/04/28

oracle的library,安全问题?

Monday, November 14th, 2005

很久没说关于技术方法的东西,随便说说。
前两天在中安看了个关于oracle存储过程蠕虫的东西,后来看到些关于library的资料,发现竟然可以在oracle中使用共享库或是动态链接库(根据平台而定)。
几经尝试写出如下代码:
create or replace library test as ‘/lib/libc-2.2.5.so’;
create or replace package test_p
as
function systems(s varchar2) return pls_integer
as language c name “system” library test;
end test_p;
/
select test_p.systems(’id > /tmp/a.log’) from dual;
以下命令在的测试的linux下的执行结果是:
cat /tmp/ a.log
uid=501(oracle) gid=501(oinstall) groups=501(oinstall),500(dba),502(oper)
也就是在oracle命令行可能执行程序的shell了,以上只是个简单的示例大家可以自由发挥了,
虽然在create library时需要dba权限,但是我发现很多主机的sys或是system的密码在安装后并没有修改,所以提醒数据库管理员们记得一定修改数据库默认密码和注意密码强度。
一般这dba组(指操作系统上的)拥用不少权限了,特别是很多其它用户是属于这个组的(比较说我的环境),而且存储过程这种东西很不容易被发现,所以要做个木马这倒是个不错的主义。。。。
虽然我用oracle三四年了但是比较少的书本说到library或者我自己没系统的学习用,所以这几天才知道这东西,原来存储过程也可以这么写的啊。哈哈。不知道都用系统库写存储过程是不是很爽哪。。估计也可以写出功能很强大的存储过程了。
其实很多东西浅尝是不行的,要深入,深入后自然知道其中很多美妙的地方。

找回qiuli的QQ密码。

Sunday, July 24th, 2005

首先说明,写这段文字并没有什么目的,也不是为了炫耀什么,只是记录下生活的点点滴滴,也请朋友们不要叫我来帮你找QQ密码,这方面我懂得并不多,而且已经很久没有看网络安全方面的内容了,对于这些也没什么激情了,今天能拿回密码纯属运气…..
前天qiuli的QQ被盗以后,昨天想了些方法改回了密码,还好那小伙子(85年1月出生的,呵呵,年轻)没删除里面的好友,只是用这个号码开了些网上业务,花了不少手机信息费。我简单的看了一下他的做案记录在这个月内大概有5个6位数的QQ号码被他通过QQ病毒之类的方式改了密码(一点技术含量都没有–天下无贼),我是没精力帮这些人找回密码了,希望他们通过密码保护已经找回QQ密码吧,呵呵。对于他的这种行为我还是比较不齿的(为了给予警告我改了他几个邮箱和游戏帐号的密码–小子那天我可是提醒你改回QQ密码的哪,你不愿意也就算了,你不仁就不要怪我不义了。),就像当年在学校机房上网时,隔壁班的一个小子,跑到我机子上让我把机子借他用两分钟,我回来后发现他在我机子上运行了“冰河”,还发了个消息说“hi,你好,我是黑客。”,呵呵,我当即冲上去把他给灭了。
闲话就不多说了,不过还是要强烈谴责这种行为, 其实QQ号倒是真不值几个钱,只是里面很多好友是积累了好些年的,QQ号没了,和所有的朋友都失去了联系,是一件很痛苦的事情,就像我前段时间丢了手机,号码全没了,痛苦哪。。。。
说到底,还是请大家提高安全意识,也提醒那些爱好网络安全的年轻朋友,多做点实事,使自己能力多提高点,别把花心思在这种无聊的东西上,害人不利己。
偷QQ的那小伙子如果看了这段话,跟我联系吧,把那些帐号还给你,我拿着也没什么用。

从QQ被盗谈安全意识。

Saturday, July 23rd, 2005

Qiuli的QQ密码被盗(wa,hahaha….),再次提醒各位朋友提高网络安全意识.
一.重要地方的密码,密码强度一定要非常高,一定要字母、数字,符号的合,且长度一定要大于6位。我认为重要的东西的密码,长度一定要8位以上且一定多种情况组合,并且不是常用单词,或和生活相关的内容。
二.在网上各种地方随意注册的时候使用的密码千万不要和重要密码相同.很多网站的会员密码是明码保存的。且不说站长人格问题会不会用你的密码做坏事,如果他的网站被黑,你的密码就被入侵都获取了,还有安全可言吗?
三.中毒一定不要大意,Ql的QQ中毒至少三个月了都没杀除,结果发作了吧,密码被盗。
四.从现在的网络安全情况看来,一定要安装防火墙(至少winxp-sp2自带的防火墙吧.)和防病毒软件。并且及时升级病毒库和对系统进行升级。我至少一周我升级一次。
五.通过各种渠道(qq,msn,mail等)传过来的文件和其它东西,在你确认它是对方人为发给你,并且你了解里面是什么东西时千万别打开。各种网络来源的文件打开时千万别用双击,而是用右键选择打开方式,因为很多病毒,木马会改变自己的图标(如把exe文件设置成rar的图标),你不注意或不显示扩展名时就会中计啦(haha).最好在文件夹选项中打开显示文件扩展名的选项。
今天先说到这里,希望大家自己注意。。安全是一项浩大的工程,但是需要从细节做起。。。

浅谈B/S系统安全

Saturday, July 16th, 2005

这是发表在原公司(已经在股东们个人利益斗争中轰然倒塌)内部BBS上的一篇贴子,随便贴上来,(为保护在用系统及其它有部分删节及修改),适合初学者!
版权声明:可以任意转载,转载时请务必标明文章原始出处、作者及本声明http://www.upulife.com
———————————————————–
浅谈B/S系统安全
随着这些年的发展B/S系统已经超出了个人主页,留言本之类的应用,各种公司的核心应用都逐渐构建在WEB上了,而WEB服务器端的程序安全也倍受瞩目,本文先通过几个实例引入一些常见的安全问题,然后讨论一下WEB应用代码编写的一些基本准则和建议。由于本人已很长时间不从事这方面的工作了,所讲的内容可能有些过时或不对的地方,各位看官就权当笑话。
如果不想看冗长无味的论述,就直接翻到:“一些编程原则”部分。

一. SQL注入(SQL Injection)
这是现在出现的最多也最易应用的一个问题,使用数据库的系统就有可能出现这种问题,成因是对用户的输入没有做必要的检测及过滤,导致用户执行非法SQL语句。常见的如登陆程序,使用1’or ‘1’=’1进行任意用户登陆,记得98年台湾李登X的网站就是因此被黑….呵呵,好些年了,不过问题依然。 对于这类问题的网上已经有无数的实例和教学,本来不想趟这混水,不过正是由于其普遍性(我见过至少5个厂商10个以上的电信行业中的各种web系统存在不同程度上的登陆问题)和埋在其深处的语义方面的内容,所以决定从2003年底某系统的代码分析记录谈起。
例一:
以下内容来自2003年底的代码分析记录,代码文件的最后修改日期为2003.12.XX
XX帐务–XX管理系统
等级:AAA 严重
情景:登陆
条件 已经某合法用户名(非必要条件),如:tt。
过程:登陆界面中输入
操作员:1’or ‘1’=’1
口令:随便
执行结果:登陆成功,拥有所有操作权限。
问题分析
login_check.jsp
line 15处开始:
此处没进行用户输入有效性处理………
user_code = request.getParameter(”user_code”).trim();
strSql = “select count(*) from UserInfo where user_code = ‘”+ user_code +”‘ and password = ‘” +password+ “‘ and status=1″;
以上查询为问题出处,当user_code为tt’ or […]

动网论坛入侵之插件篇

Saturday, July 16th, 2005

动网论坛入侵之插件篇
本文为非技术文章,属搞笑网文,以博君一笑!
版权声明:可以任意转载,转载时请务必标明文章原始出处、作者及本声明http://www.upulife.com
——————以下是一些废话,没兴趣的人直接看最后几段———–

关于动网论坛入侵的文章很多,由于对asp不感兴趣所以一直不曾尝试过做些什么,其实在各位的努力下动网的安全性已经提高了很多了,版本也已经发展到7.0.0 sp2了,入侵也不是那么简单了。下文通过动网一个比较常用的插件为入口….呵呵,我也有幸插一脚!
故事发生在公元前不久,公司内部论坛开了个什么宠物领养的功能,上至公司老总下到像我这样的草根层,都兴致勃勃,由于我不喜欢灌水,所以社区币很少,看着那些高等级的人,心里实是不爽,于是想找点另类的方法来提高等级,于是乎历史上多了这么段小插曲……
公司论坛装的是大名鼎鼎的DVBBS,上safechina.net搜了一把没发现在方面的内容,看来现在比以前是好很多了,不就是要社区币嘛嘛,从哪里来?一.发贴,二…..呵呵,银行啊!走抢银行去!!!论坛有个社区银行,说不定有突破呢!上dvbbs.net看了一下没有这功能,看来是第三方厂商的插件了(窃笑),看来希望大多了,惯性的找些有输入框的地方,先看到的是“事件”,原来是银行历史记录的查询,照例输入一个单引号’,呵呵,出错了:打印出:user=’’’ order by ID 没有过滤,输入1’ or user name like’%a% 结果正确。可惜是JET DB驱动,一般是ACCESS了,累,既然这么基本的输入过滤都没做,那么看来作者的安全意识不是很高了,反正我只要钱,不用这么累,找找有没能直接update的,抽烟ing….,呵呵,银行事务,存款,取款,转账,贷款每个测试一下,发现只有转账中的目标用户名能输入字符,其它都限制只能输入数字了,嘿嘿,这个功能肯定update用户的金钱,又是单引号’,又出错了,直觉告诉我能行了,于是转1块钱给 a’ or username=’b,提交….,错误信息,郁闷ing….,看看b用户,多了一块钱,a用户一分钱都没少(明白了吗?我的一块钱变成两块了,如果你多几个 or 就多更多了,其实它的语句就是update aa set money=money+xxx where username=’$username’),hahaha,五分钟后,我就拥有了500万!!呵呵,这可是我这辈子第一次抢银行啊(要不你还能活着在这废话),如果现实中我能有这么多钱该多好啊^_^
好了,我目的也达到了,要做别的什么的话也可能只是时间的问题,我没兴趣也没时间去做那些了,不过,我google了一下,发现用这个插件的BBS还真是不少,本来也想看看它源代码,但是找了半天没找到,所以我也不知道是谁开发的,也没法发什么BUG报告了,算了!希望没人做什么坏事吧!!
—————————————-本文我所想说的——————
其实上面的都是些无聊的废话,任何一个知道SQL注入的人都能轻易做到,我想说的就是所谓的“系统安全”,其实系统安全是一个浩大的工程,从硬件到系统再到应用,任何一个环节出了问题,都可能导致全盘皆输(这就是所谓的木桶理论),正如许多讲述网络安全的书籍所说的:“无论你内部网络安全措施做得如何好,可能都顶不过一个用户的拨号。”呵呵,经典!这个例子中,硬件做得很好,系统也做得很好了,而且动网也做得很不错了,可是插件没有做好,所以整个系统都没做好!这不仅仅是管理员的问题,更是开发者的问题,其实这里也“验证”了一条网络安全“原则”:最少服务原则。
有人说:开源需要勇气!
我觉得,开源需要勇气,更需要责任!做系统,开发者不是写完一个程序,做完一个功能就可以了。你还要负起作为开发者的责任,也许在你的license中已经写得很清楚了:本人不对由于使用本系统而引起的任何问题负责。但是这不是你所应该做的,不是一名合格的程序员所应该做的,既然你做了,你就对这一切负有责任,即使别人的系统被毁了对你没影响,那么你也应该觉得羞愧,也应该在午夜梦回时感到惊心,因为这是你的责任。
不仅仅开源系统,免费系统,你所做的任何事情都如此,不要说我不懂安全,不要说这不是我的特长,因为还有更多比你更不懂得安全的人,还有更多比你更不懂得计算机、不懂得网络的人们,在使用你所公布的东西。你不觉得你对这一切负有责任吗?文人中都有”文责自负”的说法,他们能对自己所写的那些虚无缥缈的东西担负起自己的责任,但是作为一个开发人员,一个程序员为什么对自己生产的看得见,摸得着的东西说与本人无关呢?这绝不是我们应该做的!醒醒吧!!做一个能把信送给加西亚的人(《致加西亚的一封信》)
回头看看,不知不觉没想到上文竟成了关于责任的说教了,其实作为一个有独立人格的人就应该做到这些,应该对自己的行为负责,这也是我最近感触深刻的东西,也许你做一个BBS并不会给使用者带来什么灾难性后果,换个角度想想,如果你做的是一个事关企业生存攸关的核心业务系统呢?比如电信计费、生产控制、更甚于导弹发射系统呢?不要告诉我你到时候会做得更好,我不相信,也没人会相信的!
从小事做起,从现在做起(别说我土),做个对自己,对自己的程序,自己的行为负责的人。
做一个能把信送给加西亚的人!!
Hjleochen
2004-6-10
_____________________________
后:这篇短文写了很久了,一直没想要贴出来,那段时间我写的代码出了很多问题,非常郁闷,由感而发,以警示自己。
@Copyright All Reserved By CFNET 2000-2004
hjleochen@safechina.net