php fuzzing源码审计

上传人:简****9 文档编号:99365780 上传时间:2019-09-18 格式:DOC 页数:30 大小:544.50KB
返回 下载 相关 举报
php fuzzing源码审计_第1页
第1页 / 共30页
php fuzzing源码审计_第2页
第2页 / 共30页
php fuzzing源码审计_第3页
第3页 / 共30页
php fuzzing源码审计_第4页
第4页 / 共30页
php fuzzing源码审计_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《php fuzzing源码审计》由会员分享,可在线阅读,更多相关《php fuzzing源码审计(30页珍藏版)》请在金锄头文库上搜索。

1、 PHP Fuzzing行动源码审计作者:Shahin Ramezany译者:riusksk(泉哥)目录:Section 1:20种PHP源码快速审计方式Section 2:PHP源码审计自动化( PHP Fuzzer )风险级别: Low Medium High在开始PHP代码分析之前,读者必须先完成以下两项工作: 安装PHP程序; 使用支持PHP代码高亮的编辑器(比如Emeditor - Notepad+)。笔者在下文中所提供的方法仅作为简单的攻击和防御参考。本文旨在介绍攻击和防御方法。注意:其中一些话题归Wikipedia版权所有注意:必须在PHP源码中寻找以下变量:$_SERVER$_

2、GET$_POST$_COOKIE$_REQUEST$_FILES$_ENV$_HTTP_COOKIE_VARS$_HTTP_ENV_VARS$_HTTP_GET_VARS$_HTTP_POST_FILES$_HTTP_POST_VARS$_HTTP_SERVER_VARS以上变量均为PHP中的可输入变量。注意:关于这些变量的更多信息可访问PHP官方网站:。Section 1: 20种PHP源码快速审计方式1- Cross Site Scripting (XSS) / CRLF Medium跨站脚本(XSS)属于WEB程序中的一类计算机安全漏洞,它允许在用户浏览的网页中注入恶意代码,比如HTM

3、L代码和客户端脚本。可利用的跨站脚本漏洞可被攻击者用于绕过访问控制,比如同源策略(same origin policy)。这类漏洞可被用于构造钓鱼攻击和浏览器攻击。攻击:攻击者在其请求中注入HTML代码。Exp 1:index.php?error=alert(document.cookie)Exp 2:input name=show_courses value= #http:/127.0.0.1:81/1.php?show_courses=alert(document.cookie);防御:更多资料:http:/ha.ckers.org/xss.htmlhttp:/en.wikipedia.o

4、rg/wiki/Cross-site_scriptinghttp:/ SQL Injection mediumSQL注入是利用WEB程序数据层的安全漏洞进行代码注入的技术。当用户输入的数据中并未对嵌入的SQL声明语句进行正确过滤时,或者用户并没有被严格地限制输入,从而导致恶意代码被执行,就有可能造成SQL注入漏洞。这是一类很普遍的安全漏洞,它可在任何时候发生于被嵌入的编程或脚本语言之中。攻击:SQL注入是PHP代码审计过程中发现的最为严重的漏洞之一,关于这类攻击更多的信息可以通过阅读下面提供的参考资料获得,而这里只是简述此类漏洞而已。Example 1:index.php?id=1+UNION

5、+SELECT+1,version,3,4,5+from+users/*Example 2:#login.php:?/login.php - SQL Injection Vulnerable page/Attack and defence php apps book/shahriyar - j$user = $_POSTuser;$pass = $_POSTpass;$link = mysql_connect(localhost, root, pass) or die(Error: .mysql_error();mysql_select_db(sql_inj, $link);$query =

6、mysql_query(SELECT * FROM sql_inj WHERE user =.$user. AND pass = .$pass. ,$link);if (mysql_num_rows($query) = 0) echowindow.location.href=index.html;exit;$logged = 1;?当用户(可能为攻击者)发送$_POSTuser , $_POSTpass给 login.php时,这些变量直接存储在SQL请求命令中。如果攻击者发送:$user = 1 OR 1 = 1$pass = 1 OR 1 = 1将会绕过login.php的登陆验证,读者当

7、注意此类代码。防御:下面是通用的防注入代码:?php$title = $_POSTtitle; / user input from site$description = $_POSTdescription; / user input from site/ define the cleaner$dirtystuff = array(, , /, *, , =, -, #, ;, , +, %);/ clean user input (if it finds any of the values above, it will replace it withwhatever is in the quo

8、tes - in this example, it replaces the value with nothing)$title = str_replace($dirtystuff, , $title); / works!$description = str_replace($dirtystuff, , $description); / works!/ input: I like/ green ;and更多信息 :http:/en.wikipedia.org/wiki/Sql_injectionhttp:/ Injection Overview.ppthttp:/ HTTP Response

9、Splitting MediumHTTP响应分裂是一种WEB程序漏洞,它可以导致应用程序或者环境设置对输入值的过滤失效,也可以执行跨站脚本攻击,跨用户攻击,WEB缓存中毒以及其它类似的攻击。重要的HTTP头列表:在PHP语言中,我们可以使用”header”函数来设置HTTP头,在一些PHP源码中,你可以发现header, $_SERVER等函数。在$_SERVER函数中的一些参数包含有用户输入的数据:REQUEST_URI, PATH_INFO, QUERY_STRINGExample 1:redirect.php?page=http:/For $_SERVER:可以使用Mozilla Fir

10、efox插件Tamper Data来发送通常的HTTP header:https:/addons.mozilla.org/en-US/firefox/addon/966Example 2 :?php$Name = test; /senders name$email = ; /senders e-mail adress$recipient = $_GETto;/recipient$mail_body = The text for the mail.; /mail body$subject = Subject ; /subject$header = From: . $Name . rn;mail(

11、$recipient, $subject, $mail_body, $header); /mail command :)?CRLF是HTTP Response Splitting的另一种方式。在上面的例子中,行4中的$recipient变量并没有对所有的输入数据进行检测,以致攻击者可以添加“CC”:默认输入为:$headers = From: rn;$headers .= CC: rn;“CC” 和 ”From” 被 ”rn” 分隔。污染输入:Mail.php?to=rnCC: 防御:1- 检测Mail Header的输入值2- 可使用以下方式输入,而不用URL输入:?php$id = $_GETurl_id

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号