AWVS AcuSensor功能分析
Auth:Cryin’
Date:2016.05.08
AcuSensor
AcuSensor是Acunetix Web Vulnerability Scanner推出的基于交互式应用安全检测(IAST)技术的Web漏洞扫描功能,目前支持、php两种语言站点,根据目标站点可以分别配置生成agent端。
其中程序的agent端是一个客户端setup程序,需要在web服务器上安装并配置iis、站点目录等。
php程序的agent是一个php文件(配置生存的php代码经过混淆),php文件需要上传至web 服务器并配置php.ini文件auto_prepend_file字段,该字段功能是将该php文件加入网站文件页眉中。
agent原理及实现分析
AcuSensor的agent主要作用是对php关键函数SQL_Query、File_Open、Sys_Command、Create_Function、Delete_File等进行监控。当这些函数执行将参数及相关信息echo到response body中供扫描器分析。Agent代码功能及流程如下:
1、判断http header字段是否存在及密码正确性,从而执行agent,直接访问agent页面返回404;
2、根据Acunetix-Aspect-Queries字段判断特定任务类型:aspectalerts、filelist两种,无Acunetix-Aspect-Queries则执行一般的IAST任务:
1)aspectalerts:php config信息等
2)filelist:该页面文件所在目录的所有的文件列表信息
php文件下载源码3、判断HTTP_ACUNETIX_ASPECT状态是否为enable,并检查HTTP_ACUNETIX_ASPECT_PASSWORD 字段是否和预设password相同。password编码后保存在agent文件末尾;
4、使用set_error_handler函数设置一个用户定义的错误处理函数。根据不同的错误类型在响应内容中echo错误信息:
5、使用token_get_all将访问的php文件源代码进行解析,对class、函数、参数、注释、T_VARIABLE等各种字段进行处理并保存在临时文件当中;
6、对于临时文件中需要监控的函数则替换为自定义函数,自定义函数中再调用监控函数。然后执行临时php文件;
7、使用debug_backtrace跟踪php程序执行的bug信息,获取当前函数、class、args、object、line、file信息,如图:
8、对于返回的信息进行格式化,如:
00000010PHP_File_Includes00000014database_connect.php00000018/hj/var/www//produ ct.php00000001s0000001A"require_once"was called.
其中00000010为16进制,表示后面数据的长度,该串数字后可能出现""、"s"、"n"、"a",分别标识16进
制数后面的数据是string、null、array类型。
AcuSensor漏洞检测原理
SQL injection漏洞实例
AcuSensor在扫描到sql注入时会根据Agent返回的信息判断漏洞是否真实存在,如真实存在则标注verified,并给出具体漏洞php文件、漏洞产生的对应代码行数
SQL injection漏洞数据包分析
AcuSensor Agent将监控到的漏洞信息通过base64编码返回到相应消息中,扫描器获取数据得到漏洞详细信息。如图:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论