入口点是应用程序能够接收输入的地方,对于攻击者来说,入口点是尝试突破应用程序的最佳位置。在安全测试中,采用以下的步骤去识别并研究高风险入口点:
常用的入口点有:文件,套接字,HTTP请求,命名管道,可插入协议处理程序,恶意服务器响应,程序化接口,结构化查询语言(SQL,通用数据库),注册表,用户接口,E-mail,命令行参数,环境变量。
文件:
注册文件类型(Registered File Type):能够打开程序来加载自身。只要浏览了它们,就会通过Windows Shell自动打开。
未注册文件类型(Unregistered File Type):除非用户指定某个程序去打开它,否则就不会被打开。
如何查找这些入口点:
套接字(Socket):
套接字用于应用程序之间的双向通信,这些应用程序可以使用各种不同的网络协议。套接字地址由一个IP地址和一个端口号组成,端口号是0-
65535之间的一个值,它确定应用程序通过哪个“门”向一个特定的IP地址往来传输数据。
当应用程序使用来自网络的数据时,攻击者能够尝试使用以下技术对应用程序实施攻击:
可通过监控网络流量查找入口点
HTTP请求:
查找入口点:在HTTP端口上监控流量。
命名管道:
一个应用程序要么能够创建一个命名管道,并充当服务器来等待其他客户端的连接,要么就作为一个客户端连接到一个命名管道。一旦创建了命名管道,利用文件的I/O应用程序接口(API)读/写数据到文件句柄,就能建立起一个到服务器的连接。
在创建了一个命名管道之后,就能通过约定的格式\\.\pipe\pipename来访问它,(\\.\)表明这是本地机器的一个连接,但是它也能被远程服务器名代替,例如\\contoso\pipe\MyEvilPipe代表的是一个叫做contoso的机器上名为MyEvilPipe的命名管道。如果在一台机器上建立一个命名管道,那么攻击者能够从远程服务器上访问到这个命名管道。
攻击者可以通过以下几种方法来利用这个命名管道:
可插入协议处理程序:
恶意服务器响应:
使某个用户与一个恶意的服务器建立连接
程序化接口:
程序化接口允许应用程序之间的通信,几种类型的技术能够允许应用程序的程序化访问。一些程序化接口利用套接字进行通信;通常,数据被封装在特定的结构里,如果结构被篡改,那么请求将无效。例如,如果你尝试操纵RPC包,那么RPC层可能在请求到达应用程序前就拒绝它。
SQL:
注册表:
用户接口:
E-mail:
命令行参数:
环境变量:
参考:《安全漏洞追踪》 【美】Tom Gallagher , Bryan Jeffries , Lawrence Landauer
原文:https://www.cnblogs.com/lwfiwo/p/10592070.html