最简单的几种攻击和防范方法

来源:百度文库 编辑:神马文学网 时间:2024/04/27 21:40:34
 
本节介绍的攻击方法是为后面专门介绍相关内容做铺垫,读者在学习的时候应该多了解一些有关Perl和网站的知识,如果可能,最好在自己的系统中安装一套网站服务程序,然后寻找一些免费的Perl代码进行调试、研究。
一、攻击免费论坛:
这里介绍的攻击非常简单,它所达到的效果就是获得论坛管理员密码、具有修改论坛的权限等,所以并不设计漏洞扫描和清除痕迹等步骤。首先介绍一下问题的起源:在网络上很多网站都提供了论坛或者电子留言版,这些服务大多数使用asp、php、cgi或者perl编写完成,而对于这些免费的论坛代码黑客也能够获得,因此只要经过分析就可以找到“免费软件中的缺陷”,进而对网站上提供的论坛进行攻击。
例如http://www.ls1238.com/网站提供的“稿件管理系统”就存在一个很严重的问题(本人已经和他们联系并说明此漏洞、相关漏洞现已修复),让我们看看通过浏览器访问它的形式,当我们阅读其中的稿件时,会发现在URL内的地址是/list.asp?articleid=nnnn,显然list.asp是显示文章的程序,而后面的?articleid=nnnn则是它的参数,nnnn是文章的编号。当黑客申请成为tougao网站的一员后,便拥有了上传文章和修改、删除自己发表文章的权利,修改文章使用editarticleself.asp?articleid=nnnn,其中的nnnn应该是自己的文章代码,但是如果黑客将文章代码改变会怎么样呢?
修改了文章代码后发现,可以对其他文章进行修改!也就是说任何经过免费注册成为tougao网站的用户都可以拥有修改任意文章的权利,同时使用delarticleself.asp则可以删除任何文章!
一次攻击过程我已经叙述完了,是不是非常简单?其实像这种问题网络上随处可见,好好想一下,如果对nnnn的修改进行的更“不着边际”,例如输入几个英文字母或者标点符号会出现什么情况?经过尝试发现,当属的数值为“单引号”是,系统会出现错误并报告数据库文件的名称、磁盘物理路径等敏感信息,这样就可以直接通过下载软件将他们的数据库下载到本地并从中找到管理员账号。
在早期的YukiBBS3000上,当注册者的注册信息内包含单引号时,也会出现“程序运行错误”的提示,并且造成论坛的内部数据错误,彻底终止论坛的正常运行。
二、防范攻击:
相对来说,网易、新浪等大型门户网站在这方面做的比较好,他们对文章ID号进行了判断,防止特殊字符的介入,如果使用者输入了非法的字符,经过检测系统会提示输入的ID号码非法,并且拒绝接受请求,返回一个“输入字符非法”的界面。
另外对于文章的修改,他们也考虑的非常周到,在进行每一次文章修改的时候,系统都会检测用户身份,确定准备修改的文章是否属于登陆身份,如果不属于则会提出警告信息。而实际上,这种问题在早期他们的网站上也是存在的,只不过因管理员网络安全意识比较强,因此即使的发现并修补了漏洞。
cgi、perl等程序在设计的时候,必须考虑到各种可能出现的情况,例如对文件名的提交必须考虑周到,一个程序没有考虑到的特殊名称也许会对系统造成非常严重的后果,用户输入一个文件名,有可能就试图打开输入危险字符串!例如用户输入的文件名中包含路径字符,如目录斜杠和双点!尽管你期望的是输入公用的文件名(例如report.txt),但结果却可能是/report.txt或../../report.txt等等,系统中所有文件就有可能泄露出去,后果是可想而知的。
设计cgi、perl程序,最好能够在代码中加入下面的非常字符检测代码:
if(($file_name=~/[^a-zA-Z_\.]/)||($file_name=~/^\./))
{ #文件包含有不合法字符 }
另外还要注意对大于号、小于号的判断,因为这两种符号是html文档中的属性符号,不进行屏蔽会对论坛造成严重的后果,网络上不是有很多“小儿科”的聊天室踢人术吗?简单的方式是不允许小于号和大于号的出现,因为所有HTML语法必须包含在这两个字符间,如果程序检测到它们就返回一个错误提示,下面一行Perl代码快速地清除了这两个字符:
$user_input=~s///g;
当然还有比较好的选择,就是将这两个字符转换成它们的HTML换码(特殊的代码),用于表示每个字符而不使用该字符本身。下面的代码通过全部用替换了大于符号,从而完成了转换过程:
$user_input=~s//& gt;/g;
三、编写简单的邮件炸弹:
利用Perl程序可以非常快速的编写邮件炸弹程序,这种方法比起直接使用别人编写的邮件炸弹要好的多,至少学习者能够真正“体会一下”什么才是黑客。有关这个炸弹的编译环境是具备一台有CGI权限的网络服务器,同时这台服务器上提供了sendmail命令(当然这一切可以在自己的系统上进行设置),并且学习着还要初步了解有关perl语言的知识。
程序的原理非常简单,就是利用sendmail命令向目标重复发送相同内容的电子邮件,为了控制发送邮件的数量,我们声明一个计数器变量,同时将程序用while()函数做循环,下面我们看一下程序的源代码:
#!/bin/perl
$file=‘/user/lib/sendmail‘;
$target=‘someone@target.com‘;
$count=0;
while($counthttp://www.newhua.com/down/Cmospwd.zip下载一个专门破解CMOS密码的工具软件Cmospwd。然后在DOS启动该程序,它就会将用户的CMOS密码显示出来(Cmospwd支持Acer、AMI、AWARD、COMPAQ、DELL、IBM、PACKARD BELL、PHOENIX、ZENITH AMI等多种BIOS),使用非常方便。
(2)System密码:
若没有密码根本不能启动计算机(即设置了System密码),那我们就无法通过软件来解决密码遗忘的问题了。此时惟一的方法就是打开机箱,给CMOS放电,清除CMOS中的所有内容(当然也就包括密码),然后重新开机进行设置。另外,有些主板设置了CMOS密码清除跳线,将该跳线短接也可达到同样的目的(详情参见主板说明书)。
2、Windows***作系统密码:
(1)Windows启动密码:
遗忘Windows的启动密码虽然不会影响系统的启动,但它将导致用户无法进入自己的个人设置,因此破解Windows的启动密码以找回“丢失”的“个性”也是很有必要的。为此,我们可删除Windows安装目录下的*.PWL密码文件及Profiles子目录下的所有个人信息文件,然后重新启动Windows,系统就会弹出一个不包含任何用户名的密码设置框,我们无需输入任何内容,直接点击“确定”按钮,Windows密码即被删除。另外,运行“regedit.exe”,打开注册表数据库“HKEY_LOCAL_MACHINE”→“Network”→“Logon”分支下的“UserProfiles”修改为“0”,然后重新启动Windows也可达到同样的目的。
(2)电源管理密码:
Windows的电源管理功能也可以设置密码,设置此功能后,系统在从节能状态返回时就会要求输入密码,从而在一定程度上实现保护系统的目的。不过由于电源管理功能的密码与Windows的启动密码完全一样,因此我们只要按照前面的方法破解了Windows的启动密码,其电源管理密码也就不攻自破了。
(3)屏幕保护密码:
Windows的屏幕保护程序中有一个“密码设置”,可以通过设置让系统在处于屏幕保护状态时无法终止程序,这样做可以有效的避免他人***作个人系统,但是这一屏幕保护密码也是有它的安全隐患的,经过下面几种***作都可以轻易绕过屏幕保护的密码验证机制。
第一种方法比较简单,在屏幕保护出现弥马提示窗口的时候,直接在电脑的光驱中放入一张带有Aurorun的光盘,光盘放入之后系统会自动执行光盘内容,屏幕保护程序被终止,同时不需要输入任何密码!
另外还可以使用OOB攻击,通过WinNuke之类的OOB攻击工具对系统进行攻击,存在问题的Windows系统会出现蓝屏,随便输入任意键系统就会终止屏幕保护程序了。
如果一台机器尚未运行屏保,那就更简单了,运行regedit,看看\HKEY_CURRENT_USER\Control Panel\desktop\ScreenSave_Data,里面就是加过密的屏幕保护密码了。如果不想练练解密,就干脆删了它,如果想当回hacker,那就自己试试加不同的密码看看能不能找出它的算法。Windows屏保的加密算法很弱智,从这里也能看出微软对Windows的安全性其实并不在乎。
(4)拨号账户密码:
个人拨号上网的账号和密码都是保存在系统的windows\*.pwl文件中的,从网络上下载一个可以察看Windows密码的Passthief软件,然后运行软件并输入准备破解的pwl文件,很快个人上网密码就可以显示出来了。
从上面的介绍中可以看出,Windows的密码保护功能并不完善,无论是开机密码还是屏幕保护、电源管理密码都非常脆弱,我们必须辅之以其他控制措施才能达到防止他人入侵的目的。
八、防范上网账号、密码被盗:
在网络上使用的很多密码中,上网账号的密码最为重要。它最初是网络服务商给的,网络服务商当然知道你的密码。一般来说,当你购买了网络服务商的上网帐号后,网络服务商都会叫你上网之后尽快更改你的密码。设置的新密码最好是数字、字母、特殊符号的结合。如果你的上网账号密码被别人窃取,那么他就可以使用你的账号上网,而网络费用却都要记在你的账号上。
因此这个密码对于上网者来说是比较重要的,要保证密码的安全,应该考虑一下几点:
1、在上网的拨号程序中不要选择保存密码,因为选择了保存密码,Windows就会将密码保存到电脑里,它会给这个密码起一个后缀为pwl的文件,别人接触你的电脑就能很容易地看到这个文件,密码也就会暴露无遗。假如有黑客从网络上进入你的电脑,他可以用一种黑客程序攻破系统,找到你保存的密码文件,并获取你的上网账号和密码。如果你不保存密码,你的电脑里就不会有后缀为pwl的有关密码的文件,黑客也就不好窃取。
2、在申请上网账号的时候,要选择只允许一次接入,就是当你拨号上网的时候,其它机器再次使用这个账号无法拨号上网,那么当你拨号上网时发现无法拨入的时候一定是其他人在盗用你的账号让你无法拨号上网。
3、在申请上网账号的时候,一定要指定电话号码拨入,可以设定几个你常用的电话号码(家里的或单位的)。只有你指定的电话号码才可以使用这个账号拨号上网。即使别人拿到了你的密码也无法使用。
4、设置不同的密码。网络上要求你设置密码的地方很多,你在设置这些密码时可不要图省事设成相同的,这样你的密码很快就会变成“明码”。因为,黑客一旦获取了你的一个密码之后,他就会用这个密码尝试着解开其它设置密码的地方,比如你的E-mail密码,那么你的电子邮件的秘密也就会暴露在网上了。更有甚者,有人得到了你的密码,就会以你的名义胡作非为,损坏你的形象,给你惹来麻烦。
5、不要向任何人透露你的密码。有人甚至会在网络上冒充网络服务商,给你发来邮件,说是系统要更新,需要提供你的密码,以便更新系统。这是地地道道的谎言。因为更新系统与你的密码无关,而且任何一个网络服务商也不会向你索取密码的。
6、经常上你所在的网络服务商主页进行账号查询,检查你的连接上网时间是否和你平时上网的时间一致,如果有重复或你没有使用账号却有连接记录时,证明你的账号被盗用了,一定要立刻修改密码。