当前位置:文档之家› PHP漏洞全解(一)-PHP网页的安全性问题 - 副本

PHP漏洞全解(一)-PHP网页的安全性问题 - 副本

PHP漏洞全解(一)-PHP网页的安全性问题 - 副本

针对PHP的网站主要存在下面几种攻击方式:

1、命令注入(Command Injection)

2、eval注入(Eval Injection)

3、客户端脚本攻击(Script Insertion)

4、跨网站脚本攻击(Cross Site Scripting, XSS)

5、SQL注入攻击(SQL injection)

6、跨网站请求伪造攻击(Cross Site Request Forgeries, CSRF)

7、Session 会话劫持(Session Hijacking)

8、Session 固定攻击(Session Fixation)

9、HTTP响应拆分攻击(HTTP Response Splitting)

10、文件上传漏洞(File Upload Attack)

11、目录穿越漏洞(Directory Traversal)

12、远程文件包含攻击(Remote Inclusion)

13、动态函数注入攻击(Dynamic Variable Evaluation)

14、URL攻击(URL attack)

15、表单提交欺骗攻击(Spoofed Form Submissions)

16、HTTP请求欺骗攻击(Spoofed HTTP Requests)

以后的每期连载,会逐个介绍这些漏洞的原理和防御方法。

几个重要的php.ini选项

Register Globals

信息安全管理与评估竞赛第二阶段题库

2019年山东省职业院校技能大赛高职组 “信息安全管理与评估”赛项任务书 第二阶段题库 任务1:Web渗透测试 任务环境说明: DCST: 攻击机场景:hackerpc 攻击机场景操作系统:WindowsXP 攻击机场景安装服务/工具1:sqlmap 攻击机场景安装服务/工具2:burpsuite 攻击机场景安装服务/工具3:firefox浏览器及hackbar插件攻击机场景安装服务/工具4:中国菜刀 服务器场景:WEB2017 服务器场景操作系统:Microsoft Windows Server 2003 服务器场景安装服务:apache2.4+php5.4+mysql集成环境 任务内容: 1.从hackerpc访问DCST中的WEB2017服务器的web页面(访问 靶机,在登录界面连按五次shift可获取靶机IP),找到注 入点并进行sql注入攻击,获取藏在数据库中的flag,并对 结果进行截图。 2.尝试找到网站的后台并进行登录,获取放在后台页面中的flag 值,并对结果进行截图。

3.寻找后台存在漏洞的上传点,编写一句话木马并绕过上传,利 用一句话木马查看上传目录下的flag文件,并对结果进行截 图。 4.利用一句话木马进入服务器后,尝试找到藏在管理员用户开机 自启文件夹中的flag文件,并对结果进行截图。 5.该服务器上存在一隐藏用户,尝试从注册表中找到这个隐藏用 户,flag值为此用户的用户名,flag格式为flag{隐藏用户 的用户名},并对结果进行截图。 任务2:Mysql数据库攻防与加固 任务环境说明: DCST: 服务器场景:MYSQLserver 服务器场景操作系统:Centos 6.5 服务器场景安装服务:mysql服务 任务内容: 1.访问DCST中的MYSQLserver,在/var/log目录下创建 access.log文件,并修改mysql服务配置文件,使其能够记 录所有的访问记录,对操作步骤进行截图。 2.进入mysql数据库,找到可以从任何IP地址进行访问的用户, 对操作过程进行截图。 3.对题号2中的漏洞进行加固,删除可从任意IP地址进行登录 的用户,对操作步骤进行截图。

PHP漏洞原理

PHP漏洞原理 PHP是一种服务器端的,嵌入HTML的脚本语言。PHP区别其他语言的地方是它的代码在服务器端执行,例如收集表格数据,生成动态页面内容,或者收发cookies等,今天我们来了解一下它的漏洞问题。 一全局变量 全局变量,就是能够在整个程序执行的过程中都存在的变量。基于PHP的应用程序的主函数一般都是接受用户的输入,然后对输入数据进行处理,然后把结果返回到客户端浏览器。为了使PHP代码访问用户的输入尽可能容易,实际上PHP是把这些输入数据看作全局变量来处理的。

这段代码会显示一个文本框和提交按钮。当用户点击提交按钮时,页面就会将用户输入的数据传递到“get.php”,当“get.php”运行时,“$test”就会自动创建,包含了用户在文本框输入的数据。我们可以看出,攻击者可以按照自己的意愿创建任意的全局变量。下面的认证代码暴露了PHP的全局变量所导致的安全问题: 上面的代码首先检查用户的密码是否为“monster”,如果匹配的话,则设置“$pass”为“1”,之后如果“$pass”的值为“1”的话,就会认证通过。 从表面看起来,这是正确的,但是这段代码犯了想当然的错误,它假定“$pass”在没有设置值的时候是空的,却没有想到,攻击者可以创建任何全局变量并赋值,通过提交“http://server/get.php?pass=1”的方法,我们完全可以欺骗这段代码,使它相信我们是已经认证过的。 二过滤输入/输出转义 过滤是Web应用安全的基础。它是你验证数据合法性的过程。通过在输入时确认对所有的数据进行过滤,你可以避免未过滤数据在你的程序中被误信及误用。大多数流行的PHP 应用的漏洞最终都是因为没有对输入进行恰当过滤造成的。最好的方法是把过滤看成是一个检查的过程。 另外一个Web应用安全的基础是对输出进行转义或对特殊字符进行编码,以保证原意不变。例如,O'Reilly在传送给MySQL数据库前需要转义成O\'Reilly。单引号前的反斜杠代表单引号是数据本身的一部分,而不是并不是它的本义。 为了区分数据是否已转义,还是建议定义一个命名机制。对于输出到客户机的转义数据,使$html数组进行存储,该数据首先初始化成一个空数组,对所有已过滤和已转义数据进行保存。

PHPCMS整站系统漏洞分析

PHPCMS整站系统漏洞分析 (原始稿件,已发表于2010年黑客手册第一季) (廖坚先)Bykid@广东科干 今天要跟大家分享这个漏洞是版本为phpcms2008SP3 _gbk_20100125的整站系统的,这是个包含漏洞。立刻进正题,最后再总结分析; 漏洞还是出现在最容易被忽视的wap模块,打开wap文件夹下的index.php文件,关键代码如下: 第14行也就是“include './include/'.$action.'.inc.php';”,程序员很放心的直接把用户提交的$action变量放进了包含文件的路径中,虽然后缀被限制成“.inc.php”,但是有没有想过管理员的管理模块的文件也是后缀为“.inc.php”的呢?而且很多这些模块文件都是用常量“IN_PHPCMS”作为防止直接访问的标识,同时管理员的管理模块的访问权限的检查是在整站根目录的admin.php文件进行的,那样我也就可以放心的包含了。还有一点值得高兴的是因为是“变异”的包含文件所以有的变量是没有初始化的也就是我们可以控制了。但“杯具”的是很多模块的功能小模块是通过“switch($action)”来运行的,也就是这类型的文件我们只能找“default”语句块来利用了。 经过双手都数不清双击打开文件检查,找到了一个不算完美的利用方法。可以包含的文件是“include/fields/box/field_add.inc.php和field_delete.inc.php”,“fields”下的文件都是对表中的字段操作的文件。这次要进行操作的字段是“phpcms_member_cache”表(PS:这个表是phpcms_member的镜像表,真搞不懂为什么要搞出这个表来)中的“password”字段。为什么我会说不完美呢,因为是操作的是password字段,不是一个记录,但是却可以达到进入管理后台的目的。field_add.inc.php和field_delete.inc.php关键代码如下:

网站渗透测试报告-模板

网站渗透测试报告-模板

____________________________ 电子信息学院渗透测试课程实验报告____________________________ 实验名称:________________________ 实验时间:________________________ 学生姓名:________________________ 学生学号:________________________

目录 第1章概述 (4) 1.1.测试目的 (4) 1.2.测试范围 (4) 1.3.数据来源 (4) 第2章详细测试结果 (5) 2.1.测试工具 (5) 2.2.测试步骤 (5) 2.2.1.预扫描 (5) 2.2.2.工具扫描 (5) 2.2.3.人工检测 (6) 2.2.4.其他 (6) 2.3.测试结果 (6) 2.3.1.跨站脚本漏洞 (7) 2.3.2.SQL盲注 (8) 2.3.2.管理后台 (11) 2.4.实验总结 (12)

第1章概述 1.1.测试目的 通过实施针对性的渗透测试,发现XXXX网站系统的安全漏洞,保障XXX 业务系统安全运行。 1.2.测试范围 根据事先交流,本次测试的范围详细如下: 系统名称XXX网站 测试域名https://www.doczj.com/doc/7411908453.html, 测试时间2014年10月16日-2014年10月17日 说明本次渗透测试过程中使用的源IP可能为:合肥 1.3.数据来源 通过漏洞扫描和手动分析获取相关数据。

第2章详细测试结果 2.1.测试工具 根据测试的范围,本次渗透测试可能用到的相关工具列表如下:检测工具用途和说明 WVS WVS(Web Vulnerability Scanner)是一个自动化的Web应用程序安全测试工具,它可以通过检查SQL注入攻击漏洞、跨站脚本攻击漏洞等来审核Web应用程序。 Nmap Linux,FreeBSD,UNIX,Windows下的网络扫描和嗅探工具包。 Burpsuite 网络抓包工具,对网络的数据包传输进行抓取。 浏览器插件对工具扫描结果进行人工检测,来判定问题是否真实存在,具体方法依据实际情况而定。 其他系统本身具备的相关命令,或者根据实际情况采用的其他工具。 2.2.测试步骤 2.2.1.预扫描 通过端口扫描或主机查看,确定主机所开放的服务。来检查是否有非正常的服务程序在运行。 2.2.2.工具扫描 主要通过Nessus进行主机扫描,通过WVS进行WEB扫描。通过Nmap进行端口扫描,得出扫描结果。三个结果进行对比分析。

php漏洞exp利用方法

最近php出了些问题,害得许多用php写的程序都出了很多漏洞,在sebug上每天都可以看到许多,漏洞的exp(exploit,也就是漏洞利用)是用php写的,QQ 上每天都有许多叉子问我php的exp该怎么用,问得我头都大了,我现在就来给大家讲一下php写的exp的利用方法。 首先我们来在本地装一下php的运行环境。打开php-installer,一切设置都默认(我安装的目录是D盘的php),一路next就可以了,如图1。 10月1日的时候我朋友NetHacKar刚发现了一个phpcms的注入漏洞,就用它来做演示吧,他在sebug上已经公布出了完整的exp,如图2。 可是这些php代码我们该怎么利用呢?大家别急,先把这段代码用记事本保存下来,我保存在D:/php/phpcms.php这里了。现在我们打开cmd来到D:/php/目录下用php.exe运行一下刚才我们保存的那个exp文件,如图3。

我们看见了返回的结果,他给出了利用的格式:php phpcms.php localhost / ,在这里localhost 我们可以改成对方的域名,/就是对方的phpcms系统的目录(如果是根目录就直接/,如果是phpcms目录就写/phpcms/),注意一下,这里有个空格。 我找到了一个目标:https://www.doczj.com/doc/7411908453.html,,我们拿他来测试一下,在cmd里php phpcms.php https://www.doczj.com/doc/7411908453.html, /。我们来看一下结果,如图4。

已经成功的破出了它的管理员的账号和密码的32位md5值。账号是admin,密码的md5是21232f297a57a5a743894a0e4a801fc3,我们把它拿到https://www.doczj.com/doc/7411908453.html,上来解密一下,得到的

PHP漏洞全解(七)-Session劫持

PHP漏洞全解(七)-Session劫持 2012-04-12 15:42 DoDo DoDo's Blog我要评论(0)字号:T | T 本文主要介绍针对PHP网站Session劫持。session劫持是一种比较复杂的攻击方法。大部分互联网上的电脑多存在被攻击的危险。这是一种劫持tcp协议的方法,所以几乎所有的局域网,都存在被劫持可能。 AD: 服务端和客户端之间是通过session(会话)来连接沟通。当客户端的浏览器连接到服务器后,服务器就会建立一个该用户的 session。每个用户的session都是独立的,并且由服务器来维护。每个用户的session是由一个独特的字符串来识别,成为session id。用户发出请求时,所发送的http表头内包含session id 的值。服务器使用http表头内的session id来识别时哪个用户提交的请求。 session保存的是每个用户的个人数据,一般的web应用程序会使用session来保存通过验证的用户账号和密码。在转换不同的网页时,如果需要验证用户身份,就是用session内所保存的账号和密码来比较。session的生命周期从用户连上服务器后开始,在用户关掉浏览器或是注销时用户 session_destroy函数删除session数据时结束。如果用户在20分钟内没有使用计算机的动作,session 也会自动结束。 php处理session的应用架构

会话劫持 会话劫持是指攻击者利用各种手段来获取目标用户的session id。一旦获取到session id,那么攻击者可以利用目标用户的身份来登录网站,获取目标用户的操作权限。 攻击者获取目标用户session id的方法: 1)暴力破解:尝试各种session id,直到破解为止。 2)计算:如果session id使用非随机的方式产生,那么就有可能计算出来 3)窃取:使用网络截获,xss攻击等方法获得 会话劫持的攻击步骤

SQL注入漏洞分析及防范

SQL注入漏洞分析及防范 随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。 SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙都不会对SQL注入发出警报,如果管理员没查看IIS日志的习惯,可能被入侵很长时间都不会发觉。 但是,SQL注入的手法相当灵活,在注入的时候会碰到很多意外的情况。能不能根据具体情况进行分析,构造巧妙的SQL语句,从而成功获取想要的数据,是需要对sql注入有较深的理解。 根据国情,国内的网站用ASP+Access或SQLServer的占70%以上,PHP+MySQ占L20%,其他的不足10%。在本文,我们从分入门、进阶至高级讲解一下注入的方法及技巧,希望对安全工作者和程序员都有用处。 入门篇 如果你以前没试过SQL注入的话,那么第一步先把IE菜单=>工具=>Internet选项=>高级=>显示友好HTTP 错误信息前面的勾去掉。否则,不论服务器返回什么错误,IE都只显示为HTTP 500服务器错误,不能获得更多的提示信息。 第一节、SQL注入原理 以下我们从一个网站https://www.doczj.com/doc/7411908453.html,开始(注:本文发表前已征得该站站长同意,大部分都是真实数据)。 在网站首页上,有名为“IE不能打开新窗口的多种解决方法”的链接,地址为: https://www.doczj.com/doc/7411908453.html,/showdetail.asp?id=49,我们在这个地址后面加上单引号’,服务器会返回下面的错误提示: Microsoft JET Database Engine 错误 '80040e14' 字符串的语法错误在查询表达式 'ID=49'' 中。 /showdetail.asp,行8 从这个错误提示我们能看出下面几点: 1.网站使用的是Access数据库,通过JET引擎连接数据库,而不是通过ODBC。 2.程序没有判断客户端提交的数据是否符合程序要求。 3.该SQL语句所查询的表中有一名为ID的字段。 从上面的例子我们可以知道,SQL注入的原理,就是从客户端提交特殊的代码,从而收集程序及服务器的信息,从而获取你想到得到的资料。 第二节、判断能否进行SQL注入

IIS解析漏洞总结

文章作者:erevus 一、IIS 5.x/6.0 解析漏洞 IIS 6.0 解析利用方法有两种 1.目录解析 /xx.asp/xx.jpg 2.文件解析 wooyun.asp;.jpg 第一种, 在网站下建立文件夹的名字为 .asp、 .asa 的文件夹, 其目录内的任何扩展名的文件都被 IIS 当作 asp 文件来解析并执行。 例如创建目录 wooyun.asp,那么 /wooyun.asp/1.jpg 将被当作 asp 文件来执行。假设黑阔可以控制上传文件夹路径,就可以丌管你上传后你的图片改丌改 名都能拿 shell 了。 第二种,在 IIS6.0 下,分号后面的丌被解析,也就是说 wooyun.asp;.jpg 会被服务器看成是 wooyun.asp 还有 IIS6.0 默认的可执行文件除了 asp 还包含这三种 /wooyun.asa /wooyun.cer /wooyun.cdx 乌云上的 IIS 6.0 解析漏洞利用案例 https://www.doczj.com/doc/7411908453.html,/searchbug.php?q=IIS6.0 二、IIS 7.0/IIS 7.5/ Nginx <8.03 畸形解析漏洞 Nginx 解析漏洞这个伟大的漏洞是我国安全组织 80sec 发现的… 在默认 Fast-CGI 开启状况下,黑阔上传一个名字为 wooyun.jpg,内容为 ');?> 的文件,然后访问 wooyun.jpg/.php,在这个目录下就会生成一句话木马 shell.php 这个漏洞案例 WooYun: 用友软件某分站 SQL 注入漏洞+nginx 解析漏洞 WooYun: 新浪网分站多处安全漏洞(nginx 解析+SQL 注射等)小礼包 WooYun: https://www.doczj.com/doc/7411908453.html, 某 x 级域名 nginx 解析漏洞+爆路径

IPS解决方案建议

采用入侵防御系统网络安全解决方案

1. 需求分析 1.1 权威研究报告指出系统入侵/渗透是目前最大的安全威胁 VanDyke Software 组织的一次广泛而具有影响力的调查显示,66% 的公司认为系统渗透是政府、组织和企业所面临的最大威胁。该项调查还显示,被调查企业所经历的最为严重的八种威胁分别是:病毒(占78%)、系统渗透(占50%)、DoS (占40%)、内部人员错误操作(占29%)、电子欺诈(占28%)、数据或网络故障(占20%)以及内部人员的非法访问(占16%)。 图 1 权威调查揭示2/3的受访者认为系统渗透/入侵是面临的最大安全威胁 1.2 现有的安全架构无法应对系统入侵的新威胁 虽然在被调查的企业中,有 86% 已经部署了防火墙(老实说,相对于时代的发展和今天的大环境,这个数字低得让人无法接受),但很明显,防火墙面对很多

入侵行为仍然无计可施。普通的防火墙设计旨在拒绝那些明显可疑的网络流量(例如,企业的安全策略完全禁止 Telnet 访问,但仍有某些用户试图通过 Telnet 访问某个设备),但仍允许某些流量通过(例如,发送到内部 Web 服务器的 Web 流量)。 图 2 现有的FW无法识别拦截应用层面攻击 问题在于,很多攻击都会尝试利用那些外围防火墙允许通过的协议的漏洞,而且,一旦 Web 服务器遭到攻击,攻击者会以此为跳板继续对其它内部服务器发起攻击。一旦服务器上被安装了“rootkit”或“后门”,那么黑客们就能够在未来的任何时间里“大摇大摆”地访问这台机器。 一般来说,我们仅将防火墙部署在网络外围。但很多攻击,无论是全球性攻击还是其它类型的攻击,往往都是从组织内部发起的。虚拟专用网、便携式计算机以及无线网络都能够接入到内部网络,而且经常会越过防火墙。入侵检测系统在检测可疑活动时可能很有效,但却不能提供对攻击的防护。臭名昭著的蠕虫(例如Slammer 和 Blaster)都具有惊人的传播速度,当系统发出警报时,蠕虫实际上已经导致了损失,而且正在飞速地向外扩散。

php漏洞全解

PHP网页的安全性问题 针对PHP的网站主要存在下面几种攻击方式: 1.命令注入(Command Injection) 2.eval注入(Eval Injection) 3.客户端脚本攻击(Script Insertion) 4.跨网站脚本攻击(Cross Site Scripting, XSS) 5.SQL注入攻击(SQL injection) 6.跨网站请求伪造攻击(Cross Site Request Forgeries, CSRF) 7.Session 会话劫持(Session Hijacking) 8.Session 固定攻击(Session Fixation) 9.HTTP响应拆分攻击(HTTP Response Splitting) 10.文件上传漏洞(File Upload Attack) 11.目录穿越漏洞(Directory Traversal) 12.远程文件包含攻击(Remote Inclusion) 13.动态函数注入攻击(Dynamic Variable Evaluation) 14.URL攻击(URL attack) 15.表单提交欺骗攻击(Spoofed Form Submissions) 16.HTTP请求欺骗攻击(Spoofed HTTP Requests) 几个重要的php.ini选项 Register Globals php>=4.2.0,php.ini的register_globals选项的默认值预设为Off,当 register_globals的设定为On时,程序可以接收来自服务器的各种环境变量,包括表单提交的变量,而且由于PHP不必事先初始化变量的值,从而导致很大的安全隐患. 例1: //check_admin()用于检查当前用户权限,如果是admin设置$is_admin变量为true,然后下面判断此变量是否为true,然后执行管理的一些操作 //ex1.php 这一段代码没有将$is_admin事先初始化为Flase,如果register_globals为On,那么我们直接提交https://www.doczj.com/doc/7411908453.html,/ex1.php?is_admin=true,就可以绕过check_admin()的验证 例2:

nginx文件类型 错误解析漏洞

漏洞介绍:nginx是一款高性能的web服务器,使用非常广泛,其不仅经常被用作反向代理,也可以非常好的支持PHP的运行。80sec发现其中存在一个较为严重的安全问题,默认情况下可能导致服务器错误的将任何类型的文件以PHP的方式进行解析,这将导致严重的安全问题,使得恶意的攻击者可能攻陷支持php的nginx服务器。 漏洞分析:nginx默认以cgi的方式支持php的运行,譬如在配置文件当中可以用这样: location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; include fastcgi_params; } 的方式支持对php的解析,location对请求进行选择的时候会使用URI环境变量进行选择,其中传递到后端Fastcgi的关键变量SCRIPT_FILENAME由nginx生成的$fastcgi_script_name 决定,而通过分析可以看到$fastcgi_script_name是直接由URI环境变量控制的,这里就是产生问题的点。而为了较好的支持PATH_INFO的提取,在PHP的配置选项里存在cgi.fix_pathinfo选项,其目的是为了从SCRIPT_FILENAME里取出真正的脚本名。 那么假设存在一个https://www.doczj.com/doc/7411908453.html,/80sec.jpg,我们以如下的方式去访问https://www.doczj.com/doc/7411908453.html,/80sec.jpg/80sec.php POC:访问一个nginx来支持php的站点,在一个任何资源的文件如robots.txt后面加上/80sec.php,这个时候你可以看到如下的区别: 访问https://www.doczj.com/doc/7411908453.html,/robots.txt HTTP/1.1 200 OK Server: nginx/0.6.32 Date: Thu, 20 May 2010 10:05:30 GMT Content-Type: text/plain Content-Length: 18 Last-Modified: Thu, 20 May 2010 06:26:34 GMT Connection: keep-alive Keep-Alive: timeout=20 Accept-Ranges: bytes 访问https://www.doczj.com/doc/7411908453.html,/robots.txt/80sec.php HTTP/1.1 200 OK Server: nginx/0.6.32 Date: Thu, 20 May 2010 10:05:30 GMT Content-Type: text/plain

相关主题
文本预览
相关文档 最新文档