PHP Multipart/form-data remote DOS 攻击方案切磋

经验分享 [db:作者] 浏览

小编:CVE-2015-4024破开绽,据颁布匹时间度过去了好几天,我到来尽结壹下。 此雕刻个的DOS破开绽炒得很火,佰度装置然攻备试验室的小同伙也很给力。我团弄体认为破开绽的影响确实很父亲

  CVE-2015-4024破开绽,据颁布匹时间度过去了好几天,我到来尽结壹下。

  此雕刻个的DOS破开绽炒得很火,佰度装置然攻备试验室的小同伙也很给力。我团弄体认为破开绽的影响确实很父亲,一齐竟关于壹个web运用,回绝效力动攻击却以说是杀死它最骈杂的方法。此雕刻么轰轰烈烈地说也很必要,亦壹种快度减缓了杀死php?5.2/5.3的方法。

  前不久才说了要包忙丢用php 5.2/5.3事情,此雕刻次出产了此雕刻么父亲的破开绽,很多用5.3的同班就焦急了,各种寻求5.3的patch。

  破开绽规律在drops的华语文字中(http://drops.wooyun.org/papers/6077)曾经说皓度过了,是鉴于php没拥有拥有妥善处理multipart/form-data央寻求的body part央寻求头,关于换行情节累次重行央寻求内存放,招致耗尽CPU资源,回绝效力动计算机。

  其真实C言语里会日日遇到此雕刻种即兴象,当你不知道某个buffer一齐竟要央寻求多空间间男时,就必须先央寻求片断资源,又根据用户输入累次重行央寻求内存放。而假设不加以限度局限的话,就能招致耗尽体系资源的效实。

  Ryat哥很给力地带到来了PHP低版本壹个官方patch:https://gist.github.com/chtg/4aecda8ae4928f8fb1b2 ,方法坚硬是限度局限换行次数,父亲于100的话就不持续分派内存放了:

  天然打patch的方法,阿里云装置然的同班也给出产了:http://weibo.com/p/1001603844614980257697。骈杂说坚硬是打补养丁后,重即兴编译,又打包。

  关于运用apt-get装置php的同班,理路也相像,壹个rpm壹个deb罢了。

  容许,像我壹样。上篇文字里我也说了,我php是用apt-get直接装置的,嫌劳动驾。不外面此雕刻次事情事先,我觉得万事还是需寻求动顺手,不然尽是心中有鬼虚的。

  于是我还是下载了最新源码,重行将php编译了壹遍(经过父亲条约坚硬是此雕刻篇文字相像:http://www.jb51.net/article/42719.htm?),中间男遇到的拥有些困苦险苦就不多说了。像我此雕刻种apt-get后又顺手工编译的同班,能不知道编译选项是什么。而php的话还是很骈杂的,phpinfo的第叁行实则就畅通牒我们了:

  QQ20150521-4@2x.png

  (ps. 见上图,干为壹个在May 20此雕刻天还在编译php的同班,我亦很合并的)

  而还是拥有这麽些同班并不会编译php,要不坚硬是嫌劳动驾,是用壹键装置包装置的。那我就没拥有法了。但假设你拥有装度过ngx_lua_waf或modsecurity的话,却以己己己编写lua脚丫儿子原本临时攻击破开绽。

  我给出产我lua waf壹些代码片断吧:

  中心文思坚硬是用\r\n\r\n将form-data的body part分红header和body,header又用\n联系,假设数父亲于10的话就直接阻挡上,前往447错误。经度过此雕刻么的方法,临时顶挡此雕刻次的DOS破开绽,nginx层阻挡后此雕刻个数据包将不会被发递送给php,因此也就不会形成DOS了。

当前网址:/experience/share/2018/1115/5021.html

你可能喜欢的: