在线端口扫描(PHP中怎么实现在线端口扫描功能)

发布时间:2025-12-11 02:55:02 浏览次数:1

PHP4/5/7版本中提供了fsockopen方法,该方法用于打开一个网络连接或者一个Unix套接字连接,也可以用来进行开放端口扫描。

使用fsockopen()方法我们可以设计以下思路来实现开放端口检测:

  • 1.获取目标IP地址以及待扫描的端口列表。

  • 2.使用For循环遍历带扫描的端口数组,讲目标IP地址与端口进行拼接。

  • 3.使用fsockopen()函数进行探测:通过Timeout参数进行判断:若超过1s无响应则视作端口未开放。

  • 4.考虑到端口扫描功能的特殊性,可能会存在SSRF漏洞,因此需要对SSRF漏洞进行防护。

开放端口扫描实现出的代码如下:

functiongetOpenPort($ip,$port){$msg=array('Ftp','Telnet','Smtp','Finger','Http','Pop3','LocationService','Netbios-NS','Netbios-DGM','Netbios-SSN','IMAP','Https','Microsoft-DS','MSSQL','MYSQL');foreach($portas$key=>$value){echo$value.'&ampnbsp&ampnbsp';echo$msg[$key].'&ampnbsp&ampnbsp';$fp=@fsockopen($ip,$value,$errno,$errstr,0.5);$result=$fp?'<fontcolor="#43CD80"><开启></font><br>':'<fontcolor="#FF6347"><关闭></font><br>';echo$result;

针对于SSRF漏洞防护我们给出的方案是:创建IP黑名单,屏蔽内网IP,防止扫描内网IP地址

针对以上方案,我们写出的防护代码如下:

$blackHostlist=array("172.","10.","localhost","127.","192.");foreach($blackHostlistas$blackHost){if(strpos($ip,$blackHost)===0){echo'<script>alert("禁止扫描内网地址!");</script>';die();}}

同时设计一个前端的表单来接受用户传送的参数:

#index.html<formmethod="post"action="scan.php">目标IP-IPAddress:<inputtype="text"name="ip"id="domain"><br><br>扫描端口-Ports:<inputtype="test"name="port"value="21,23,25,79,80,110,135,137,138,139,143,443,445,1433,3306"><br><br>开始扫描-Start:<inputtype="submit"value="点击开始扫描-Scaning"></form>

最终的PHP后端代码如下:

<?phpfunctiongetOpenPort($ip,$port){$msg=array('Ftp','Telnet','Smtp','Finger','Http','Pop3','LocationService','Netbios-NS','Netbios-DGM','Netbios-SSN','IMAP','Https','Microsoft-DS','MSSQL','MYSQL');foreach($portas$key=>$value){echo$value.'&ampnbsp&ampnbsp';echo$msg[$key].'&ampnbsp&ampnbsp';$fp=@fsockopen($ip,$value,$errno,$errstr,0.5);$result=$fp?'<fontcolor="#43CD80"><开启></font><br>':'<fontcolor="#FF6347"><关闭></font><br>';echo$result;$url=$_POST['ip'];$port=$_POST['port'];$blackHostlist=array("172.","10.","localhost","127.","192.");foreach($blackHostlistas$blackHost){if(strpos($ip,$blackHost)===0){echo'<script>alert("禁止扫描内网地址!");</script>';die();}}getOpenPort($ip,$port);

最终运行效果如下(前端UI进行了美化处理):

上述就是小编为大家分享的PHP中怎么实现在线端口扫描功能了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注本站行业资讯频道。

在线端口扫描
需要做网站?需要网络推广?欢迎咨询客户经理 13272073477