分享
 
 
 

WIN2000漏洞(1) —— 绿色兵团的文章,简直爽呆了

王朝vc·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

WIN2000漏洞(1)

加入时间:01-1-7 上午 11:40:01

在Windows 2000远程服务器上的cpu过载

发送一连串的二进制中的0字符,到达Windows 2000中的任意一个端口,都可能引起CPU的利用率达到100%。这样的端口包

括了TCP中端口号为7,9,21,23,7778和UDP中端口号为53,67,68,135,500,1812,1813,2535,3456的这些端口。

在Windows 2000远程服务器上的DOS操作系统的漏洞

以Windows 2000作为操作平台的服务器作为远程控制台对远程访问进行控制。一个远程的攻击者向该服务器发了一连串的

攻击性代码,使服务器工作出现故障。在此之后,如果系统通过自动重启后继续工作,那么很多 的攻击造成了远程服务器

不断的重新启动,直到重启的频度超出了系统的承受能力,系统崩溃。

另外:

1.

如果你有普通用户帐号,有个一个很简单的方法获取NT Administrator帐号:

先把c:\winnt\system32下的logon.scr改名为logon.old备份

然后把usrmgr.exe改名为logon.scr

然后重新启动

logon.scr是启动时加载的程序,重新启动后,不会出现以往的登陆密码输入界面,而是用户管理器

这时他就有权限把自己加到Administrator组

不要忘记把文件名改回来啊!

2.

下面的技术适用于不重视NT网络安全的网站,

一些http的技术也可以供较高级的人员参考

进入Win2K网络可以采取下面的步骤:

因为NT的IIS server的ftp一般都是允许anonymous匿名帐号进入的,有些anonymous的帐号还有upload权限,我们就要攻击这

类站点。因为如果不允许匿名帐号,就可能造成明文密码在网上传输。用tcpspy的工具可以截获这 些密码。现在不谈这些

比较高级的技术。

正因为允许匿名帐号ftp登陆的设定,也给我们带来了突破NT server的机会。我们用ftp登陆一个NT server,比

如:xxx.xxx.xxx.xxx(示例名):

ftp xxx.xxx.xxx.xxx

Connected to xxx.xxx.xxx.xxx

220 2000svr Microsoft FTP Service (Version 5.0).

2000svr这个东西暴露了其NETbios名,那么在IIS的背景下,必然会有一个IUSER_2000svr的用户帐号,属于Domain user组,

这个帐号我们以后要用来获取Administrator的权限

User (xxx.xxx.xxx.xxx none)):anonymous

331 Anonymous access allowed, send identity (e-mail name) as password.

Password: 输入 guest@ 或者guest

对于缺乏网络安全知识的管理员来说,很多人没有将guest帐号禁止,或者没有设置密码。那么guest帐号就是一个可用的正

确的用户帐号,虽然只属于Domain guest组

在这种情况下我们就可以进NT server的ftp了。

现在,开始查找cgi-bin目录(或者scripts目录),进去以后,

把winnt下的cmd.execopy到cgi-bin,把getadmin和gasys.dll传上去到cgi-bin

然后输入:http://www.xxx.com/cgi-bin/getadmin.exe?IUSR_SATURN

大约十多秒后屏幕显示:

CGI Error

这时有90%的可能是:你已经把IUSER_2000svr升级为Administrator,也就是任何访问该web站的人都是管理员

Windows 2000缓冲区溢出入门

我在互联网上阅读过许多关于缓冲区溢出的文章。其中的绝大多数都是基于*NIX操作系统平台的。后来有幸拜读了

ipxodi所著的《Windows系统下的堆栈溢出》(已刊登在绿盟网络安全月刊2000年第三?谥校峙銮煽吹搅薐ason先生的

《Windows NT Buffer Overflow’s From Start to Finish》,得益匪浅。在翻译Jason先生的文章时,由于我的机器安装

了Windows 2000 Server,在调试原文程序时发现细节略有出入。因此本文提供的有关源程序、动态链接库、偏移量等是以

我在自己机器上调试为准。(对不同版本的动态链接库,都需要编程者自己调试。)

这篇文章应该属入门级。虽然比较简单,但对于Windows系统下的缓冲区溢出具有一定的通用性。例如,堆栈溢出地址

的确定,跳转指令的查找和使用,溢出执行代码的编写,等等。只要发现Windows系统下存在缓冲区溢出漏洞的程序,基本

上都可通过这些步骤进行攻击测试。但正如ipxodi所指出的,由于Windows下动态链接库的版本更新较快,一定要根据编程

者的实际平台进行调试。在发布此类安全漏?垂婊蛞绯龉セ鞒绦蚴保创搿⑾低称教ê投唇涌獾陌姹竞哦加Ω镁×

苛星宄7裨虮鹑说魇云鹄纯赡芑嵬诽鄣煤芾骱Α#唬?P--[ 调试、测试环境

Microsoft Visual C++ 6.0

Microsoft Windows 2000 Server (中文版,内部版本号:2195)

--[ 调试、测试过程

首先,写一个存在缓冲区溢出漏洞的应用程序。该程序可读取文件的内容,这样我们就能通过修改被读取文件的内容来使

程序溢出。;-)在Visual C++开发环境中创建一个新的控制台应用程序,选择”An Application that supports MFC”并

单击”Finish”。(注:其实并不一定非是MFC应用程序不可,只不过是我自己的习惯而已。;-)))向这个应用程序中添

加一些必要的代码,如下:

CWinApp theApp;

using namespace std;

void overflow(char* buff);

void overflow(char* buff)

{

CFile file;

CFileException er;

if(!file.Open(_T("overflow.txt"),CFile::modeRead,&er))

{

er.ReportError();

return;

}

int x = file.GetLength();

file.Read(buff,x);

}

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])

{

int nRetCode = 0;

// initialize MFC and print and error on failure

if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))

{

// TODO: change error code to suit your needs

cerr

nRetCode = 1;

}

else

{

char buff[10];

overflow(buff);

}

return nRetCode;

}

现在先来分析一下上面这段C++代码,找一找哪里有漏洞。这是一个MFC控制台应用程序,”main”函数与其它程序

会有些不同,但工作机制基本一致。我们主要分析该函数中”else”那段代码。首先 是第一行”char buff[10]”,定义

了一个10字符长的本地变量。我们都知道,本地变量的内存空间是在堆栈里分配的。(如果你连这个都不知道,建议不要

继续往下看了。:))然后是将buff变量作为参数调用overflow函 数。好了,现在让我们分析overflow函数。首先是一个

Cfile对象,然后是一个CfileException对象。接下来会试图以读权限打开当前目录下的文件”overflow.txt”。如果打开

成功,则将该文件中的所有?谌荻寥〉絙uff数组变量中。发现了问题没有?buff变量只有10字符长。如果读取的文件内容

长度是100时会发生什么问题呢?对了,“缓冲区溢出”!而且是在堆栈中发生的缓冲区溢出。在后面的测试中就 能看

到,我们利用这个漏洞能做些什么!;)现在让我们创建文本文件”overflow.txt”,并将它放到这个应用程序的project

目录下。

在进行下一步前,先让我们探讨一下关于Windows NT/2000的内存结构。NT/2000的每一个进程都在启动时分配了4GB

(0xFFFFFFFF)的虚拟内存。其中的某些部份实际上是由所有进程共享的,例如核心和设备驱动程序区域。但它们都会被

映射到每个进程的?槟獾刂房占淅铩J导噬厦挥薪谭峙涞?GB的物理内存,而是仅当需要时才分配物理内存。因此每一个

进程都有各自的4GB虚拟内存,编址范围从0x00000000到0xFFFFFFFF。其中,0x00000000-0x0000FFFF?俏狽ULL指针分配而

保留的。访问该区域内存将导致“非法访问”错误。0x00010000-0x7FFEFFFF是用户进程空间。EXE文件的映像被加载到其

中(起始地址0x00400000),DLL(动态链接库)也被加载到这?糠菘占洹H绻鸇LL或EXE的代码被装入到该范围的某些地

址,就能够被执行。访问该区域中没有代码装入的地址将导致“非法访问”错误。0x7FFF0000-0x7FFFFFFF是保留区域,

对此区域的任何访问都将导?隆胺欠ǚ梦省贝砦蟆?x80000000-0xFFFFFFFF仅供操作系统使用。用于加载设备驱动程序和其

它核心级代码。从用户级应用程序(ring 3)访问此区域将导致“非法访问”错误。

现在回到”overflow.txt”文件。现在我们将向这个文本文件中不断添加字符,直到弹出应用程序非法访问的系统对话

框。在这里,填充什么字符是很重要的(原因待会就知道了)。我选择小写字母”a”?刺畛湮谋疚募N颐且丫阑撼

迩挥?0字符长,那么先填充11个字符。(注意:以debug方式编译应用程序,否则结果可能会有所不同。)咦?没反应。

我们继续填充字符……直到填充了18个字符应用 程序才崩溃。但这个崩溃对我们的用处还不大。继续填充!当字符串长度

为24时,运行程序并观察弹出的对话框信息:“”0x61616161”指令引用的”0x61616161”内存。该内存不能为”

written”。”我?氪蠹叶加Ω弥馈?x61”所代表的ASCII码是什么吧?;)如果你的机器安装了Visual C++,单击“取

消”按钮就能够调试该应用程序。进入调试环境后,选择”view”菜单――”debug windows”――”registers”,可打

开寄存器窗口。如果你对汇编一窍不通,建议先フ冶净惚嗟氖榭纯础T诩拇嫫鞔翱诶锘峥吹紼AX、EBS和EIP等寄存器的内

容。EIP当然是最重要的了。EIP的内容就是程?蛳乱徊剿葱兄噶畹牡刂贰N颐亲⒁獾紼SP寄存器的值未被破坏,而且似

乎离我们的buff变量不远。下一步我们需要找出ESP的值是如何处理得到的。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有