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.'&nbsp&nbsp';echo$msg[$key].'&nbsp&nbsp';$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.'&nbsp&nbsp';echo$msg[$key].'&nbsp&nbsp';$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中怎么實現在線端口掃描功能了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注本站行業資訊頻道。
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
【資料圖】隨著社會越來越發達,大家都選擇在網絡上汲取相關知識內容,比如黃花機場t1和t2區別,為了更好的解答大家的問題,小編也是翻閱整理了相應內容,下面就一起來看一下吧!黃花機場的t1和t2的區別就是T1為老航站樓。而T2為新航站樓。并且現在主要使用的就是T2航站樓,而且現在所有的國內和國際出發的航班都會到達T2航站樓。機場,亦稱飛機場、空港,較正式的名稱是航空站。機場有不同的大小,除了跑道之外,...
春節假期剛過,無數生活在“北上廣”的有志青年像候鳥一樣紛紛返鄉。他們就像一群忘恩負義的孩子。在路上,上飛機前后,他們開始抱怨大都市的各種不好——房價,交通,空煤氣和壓力,當然還有各種情緒。幾年前,“逃離北上廣”是媒體關注的焦點,這意味著大城市越來越不適合居住,尤其是北京。然而這兩年的新聞是:原來“逃離北上廣”的人,現在都“逃”回來了。我曾經在一篇文章里寫過,對于一個充滿野心和抱負的年輕人來說,北京...
網商銀行是哪個銀行?網商銀行是一家商業銀行、 私營銀行及其沒有營業網點的互聯網銀行,網商銀行必須利用網絡來給予綜合性金融服務。因為沒有營業網點,而客脅理的網商銀行銀行卡,銀行積會有卡號,不存在實體卡片,這類卡必須關聯第三方支付手機軟件才可以使用。網商銀行是一家什么性質的銀行?網商銀行就是一家民營性質的商業銀行,以互聯網為平臺,小存小貸,純互聯網運營,沒有實體網點和現金業務,也沒有分行設立。網商銀行...