CVE-2018-9059 Easy File Sharing Web Server 7.2栈溢出漏洞

Published: by Creative Commons Licence

  • 测试环境

      测试版本
    操作系统 windows 7
    调试器 Immunity Debugger
    漏洞软件 Easy File Sharing Web Server 7.2
  • 漏洞成因

在sub_4974E0函数中,将UserID通过sprintf,%s与SQL语句拼接复制到栈上(开辟的空间大小为0x100c),只要数据不包含\0并且足够大就会引发缓冲区溢出

   cve-2018-9059-sub_4974e0

  • 调试过程

IDA反编译,然后搜索字符串select * from %s where %s=%s,可以看到有两处函数使用此字符串。Immunity Debugger打开调试EFSWS,在前面找到的地址处下断点。通过python向服务器发送post包,其中UserID的值为0x1020*'a',此时会在断点处停下,单步跟,后面的流程是将UserID和SQL语句拼接起来,然后使用sqlite3的系列函数查询数据库。

   cve-2018-9059-string

  • 漏洞利用

!mona modules 发现有的dll没有开启aslr,所以可以构造rop链bypass dep,这里选择覆盖seh链,因为软件本身没有开启safeseh并且覆盖超出返回地址之后的部分会在返回前就产生异常。exp

  • 一点小发现

前面提到在sub_4974E0函数中将UserID和SQL语句拼接起来,而在拼接前并没有对UserID的内容进行有效过滤,所以这样就有sql注入的漏洞,通过UserID=a' union select 1,1,'9999',1,1,'1,PassWD=9999就可以拥有Admin的权限进入网站中

   cve-2018-9059-sql