|
Discuz_X3.4最新网站漏洞 影响版本:Discuz_X3.4 漏洞类型:配置文件写入导致代码执行 问题文件: \upload\install\index.php . I9 G. x- x2 M' P* r
漏洞复现: 首先在发布地址下载3.4版本对应的安装包,解压后放入运行环境(我这里是win7+PHP,放入WWW内)。 + _- z2 K9 C3 d# G
在浏览器中输 入相应的路径,安装Discuz3.4. w3 D8 X8 u: ^2 t! U# V

- X5 V6 r+ S2 j N5 M; z 在创建数据库的界面进行抓包。 - q3 S; Q( L. R7 w8 I" E
 把%5Btablepre%5D=后边的内容修改为pre_’);phpinfo();//然后forward,随后开始安装。  安装完毕后在ComsenzDiscuz-DiscuzX-master\DiscuzX\upload\uc_server\data的config.inc.php文件中可以看到如下: 9 k9 l, V+ S7 F* C9 D( `5 U
这里的内容变为我们抓包时修改的内容。在浏览器中访问ComsenzDiscuz-DiscuzX-master/DiscuzX/upload/uc_server/data/config.inc.php可以访问到我们修改后的phpinfo的界面。
# m9 {" \# N3 d2 f: L
j* e. _) o; `, O- W* `6 d* t0 @ t( O% K- ^( g& z
/ C9 |- m+ G F) m
) N; w) R7 N. s g9 ~/ B5 x
4 G" E" n2 N9 k6 D% z9 h
; _+ @2 f) a# c, S0 y$ d" |/ z+ G5 v- K$ Y1 B
, c' @% [, P( x
8 K. ]$ r4 I" i& Z漏洞分析: 漏洞成因:当cms安装过程中对配置文件config进行写入的时候,如果对写入的内容没有进行很好的过滤,就会把参数写入到config的代码总从而被执行。 g& V) w) t5 f
8 x2 N2 M1 E! o! b( C. F 1 l0 A" a1 l( X# t8 t* D
通过查看DiscuzX\upload\install\index.php的配置文件,在代码的357行处发现save_config_file()函数
A" I9 P5 A% S: h
; I4 q" \! i: C1 K! g9 c0 {) gsave_config_file(ROOT_PATH.CONFIG, $_config, $default_config);
9 Z; {* w$ ?7 l0 u4 O8 W) v判断出函数作用是保存写入配置信息,其中,ROOT_PATH.CONFIG为文件的路径,$_config为配置文件的内容,$default_config为默认配置。 # s/ T8 y* \* a$ n, |# D
这里我们可以看出,首先判断了默认配置文件是否存在,如果不存在将会抛出错误:退出(‘CONTIGNGULALLUL DEFUCT.PHP丢失,请重新上传该文件。’);否则将配置文件的内容传送给默认配置文件。 + k5 z, Z1 ~9 S6 d9 ^! w9 M
3 |8 F9 A. n% N: k) Q ? 4 u9 S$ H" i/ R
- t( `; s9 d* Y) c2 d5 s( N% Q
判断是否post里面有内容,如果有的,使用post里面的内容,如果没有的,默认值是空字符串。
" d3 U2 R/ q! C0 a# j在这里看到了dbinfo的传入,使用$_post方法传入dbinfo中的内容,但是可以看到没有对传入参数有任何过滤,直接把dbinfo中的参数传入进来造成漏洞。
4 y d3 }( h/ }3 ]1 L/ Y & R3 }6 I% } G9 t. ~. B4 O& f
8 E$ \$ M5 ?( F# C g& _6 m我们在抓包后,把%5Btablepre%5D=后边的内容修改为pre_’);phpinfo();// 即把pre_’);phpinfo();//上传到配置文件中从而使括号闭合‘//‘会注释掉后边自动补充的内容,因此在执行这个配置文件时会跳转到phpinfo的界面。
5 R! \! ~5 m" R |