這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)PHP中怎么實(shí)現(xiàn)在線端口掃描功能,文章內(nèi)容豐富且以專(zhuān)業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)PHP中怎么實(shí)現(xiàn)在線端口掃描功能,文章內(nèi)容豐富且以專(zhuān)業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
成都服務(wù)器托管,創(chuàng)新互聯(lián)提供包括服務(wù)器租用、雅安電信機(jī)房、帶寬租用、云主機(jī)、機(jī)柜租用、主機(jī)租用托管、CDN網(wǎng)站加速、主機(jī)域名等業(yè)務(wù)的一體化完整服務(wù)。電話咨詢:028-86922220
PHP4/5/7版本中提供了fsockopen方法,該方法用于打開(kāi)一個(gè)網(wǎng)絡(luò)連接或者一個(gè)Unix套接字連接,也可以用來(lái)進(jìn)行開(kāi)放端口掃描。
使用fsockopen()方法我們可以設(shè)計(jì)以下思路來(lái)實(shí)現(xiàn)開(kāi)放端口檢測(cè):
1.獲取目標(biāo)IP地址以及待掃描的端口列表。
2.使用For循環(huán)遍歷帶掃描的端口數(shù)組,講目標(biāo)IP地址與端口進(jìn)行拼接。
3.使用fsockopen()函數(shù)進(jìn)行探測(cè):通過(guò)Timeout參數(shù)進(jìn)行判斷:若超過(guò)1s無(wú)響應(yīng)則視作端口未開(kāi)放。
4.考慮到端口掃描功能的特殊性,可能會(huì)存在SSRF漏洞,因此需要對(duì)SSRF漏洞進(jìn)行防護(hù)。
function getOpenPort($ip,$port){ $msg = array('Ftp','Telnet','Smtp','Finger','Http','Pop3','Location Service','Netbios-NS','Netbios-DGM','Netbios-SSN','IMAP','Https','Microsoft-DS','MSSQL',''); foreach ($port as $key => $value){ echo $value.'&nbsp&nbsp'; echo $msg[$key].'&nbsp&nbsp'; $fp = @fsockopen($ip,$value,$errno,$errstr,0.5); $result = $fp ? '<font color="#43CD80"><開(kāi)啟></font><br>' : '<font color="#FF6347"><關(guān)閉></font><br>'; echo $result;
針對(duì)于SSRF漏洞防護(hù)我們給出的方案是:創(chuàng)建IP黑名單,屏蔽內(nèi)網(wǎng)IP,防止掃描內(nèi)網(wǎng)IP地址
針對(duì)以上方案,我們寫(xiě)出的防護(hù)代碼如下:$blackHostlist = array("172.", "10.", "localhost", "127.", "192.");foreach($blackHostlist as $blackHost){ if(strpos($ip, $blackHost) === 0){ echo '<script>alert("禁止掃描內(nèi)網(wǎng)地址!");</script>'; die(); }}
# index.html<form method="post" action="scan.php">目標(biāo)IP - IP Address:<input type="text" name="ip" id="domain"><br><br>掃描端口 - Ports:<input type="test" name="port" value="21,23,25,79,80,110,135,137,138,139,143,443,445,1433,3306"><br><br>開(kāi)始掃描 - Start:<input type="submit" value="點(diǎn)擊開(kāi)始掃描 - Scaning"></form>
<?php function getOpenPort($ip,$port){ $msg = array('Ftp','Telnet','Smtp','Finger','Http','Pop3','Location Service','Netbios-NS','Netbios-DGM','Netbios-SSN','IMAP','Https','Microsoft-DS','MSSQL','MYSQL'); foreach ($port as $key => $value){ echo $value.'&nbsp&nbsp'; echo $msg[$key].'&nbsp&nbsp'; $fp = @fsockopen($ip,$value,$errno,$errstr,0.5); $result = $fp ? '<font color="#43CD80"><開(kāi)啟></font><br>' : '<font color="#FF6347"><關(guān)閉></font><br>'; echo $result; $url = $_POST['ip']; $port = $_POST['port']; $blackHostlist = array("172.", "10.", "localhost", "127.", "192."); foreach($blackHostlist as $blackHost){ if(strpos($ip, $blackHost) === 0){ echo '<script>alert("禁止掃描內(nèi)網(wǎng)地址!");</script>'; die(); } } getOpenPort($ip,$port);
最終運(yùn)行效果如下(前端UI進(jìn)行了美化處理):
文章標(biāo)題:PHP中怎么實(shí)現(xiàn)在線端口掃描功能
轉(zhuǎn)載注明:http://chinadenli.net/article24/iopcje.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、商城網(wǎng)站、網(wǎng)站設(shè)計(jì)公司、網(wǎng)站導(dǎo)航、標(biāo)簽優(yōu)化、手機(jī)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容