真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何解決使用python批量掃描SMTP25未授權(quán)訪問問題

小編給大家分享一下如何解決使用python批量掃描SMTP 25未授權(quán)訪問問題,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

目前創(chuàng)新互聯(lián)已為上千多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機、網(wǎng)站托管、服務(wù)器租用、企業(yè)網(wǎng)站設(shè)計、敖漢網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

使用python實現(xiàn)SMTP 25未授權(quán)訪問批量掃描

測試某系統(tǒng)過程中發(fā)現(xiàn)很多服務(wù)器都開了25和110端口,但是不確定是不是真的郵件服務(wù)端口,所以打算嘗試復(fù)現(xiàn)下漏洞。

SMTP匿名郵件

SMTP(Simple Mail Transfer Protocol),簡單郵件傳輸協(xié)議是一種可靠且有效的電子郵件傳輸協(xié)議。

但是在設(shè)計之初,他并沒有添加身份驗證的機制,導(dǎo)致任意用戶可以連接到SMTP服務(wù)器進行郵件發(fā)送的操作。當(dāng)然經(jīng)過這么多年,已經(jīng)有了SMTP-AUTH擴展來保證其安全性。

由于其巨大的基數(shù),導(dǎo)致大量因為設(shè)置導(dǎo)致未開啟驗證或者舊版不支持SMTP-AUTH的STMP仍在現(xiàn)網(wǎng)環(huán)境運行,導(dǎo)致大量的垃圾/詐騙郵件依然在網(wǎng)上傳播,于是有了這篇文章來記錄下學(xué)習(xí)的過程。

漏洞準(zhǔn)備

為了保證環(huán)境真實可控,還是自己搭一個吧。

系統(tǒng)環(huán)境選擇了kali 2020.1,畢竟省事,還能點到專欄名字,血賺。

現(xiàn)在最簡單安裝這些服務(wù)環(huán)境的方法就是docker了。

sudo systemctl daemon-reload
sudo systemctl restart docker.service   //重啟docker服務(wù),不然可能會Cannot connect to the Docker 錯誤
sudo docker search smtp //搜索smtp服務(wù)的鏡像

如何解決使用python批量掃描SMTP 25未授權(quán)訪問問題

選一個STARS最多的就好了。

sudo docker pull namshi/smtp

這個時候如果你條件有限用的是公司小水管,就可能會發(fā)現(xiàn)下載很慢很慢,這時候要切一下國內(nèi)源:

sudo vi /etc/docker/daemon.json   //沒有內(nèi)容就創(chuàng)建一下,不用慌

然后添加如下內(nèi)容:

{
    "registry-mirrors": ["http://hub-mirror.c.163.com"]
}

添加后重啟docker:

sudo systemctl restart docker.service

下載就起飛了

如何解決使用python批量掃描SMTP 25未授權(quán)訪問問題

然后開啟docker:

sudo docker run --restart=always -d -e "RELAY_NETWORKS=:0.0.0.0/0" --name smtp -p 25:25 namshi/smtp

如何解決使用python批量掃描SMTP 25未授權(quán)訪問問題

嘗試使用telnet或者nc連接一下(系統(tǒng)里有哪個就用哪個,都行)

如何解決使用python批量掃描SMTP 25未授權(quán)訪問問題

可以看到返回了220,說明了連接成功

輸入HELP可以看到支持的指令

如何解決使用python批量掃描SMTP 25未授權(quán)訪問問題

使用EHLO或者HELO對服務(wù)器打個招呼~

如何解決使用python批量掃描SMTP 25未授權(quán)訪問問題

可以看到服務(wù)器返回了250。

繼續(xù)編寫 MAIL FROM:< XX@XX.Xx > 這是指定發(fā)件人:

如何解決使用python批量掃描SMTP 25未授權(quán)訪問問題

然后編寫RCPT TO:< 118xxxxx@qq.com > 這是指定收件人:

如何解決使用python批量掃描SMTP 25未授權(quán)訪問問題

然后輸入DATA開始編寫內(nèi)容,并且以單獨的一行中只有一個"."來標(biāo)識郵件內(nèi)容結(jié)束:

如何解決使用python批量掃描SMTP 25未授權(quán)訪問問題

可以看到最后依然是250 OK,id后面是郵件的隊列,說明添加郵件成功。

可以用QUIT來退出連接了。(小寫也可以呦)

如何解決使用python批量掃描SMTP 25未授權(quán)訪問問題

這樣就是一個完整的連接流程了。

總結(jié)一下:

  1. 使用telnet或者nc連接smtp服務(wù)的25端口,連接成功返回220

  2. 使用EHLO xxxx 或者 HELO xxxx ,連接成功返回250

  3. 使用MAIL FROM:< xx@xx > 指定發(fā)件人,設(shè)置成功返回250

  4. 使用RCPT TO:< XX@XX > 指定收件人,設(shè)置成功返回250

  5. 使用DATA寫入郵件內(nèi)容,以單行的“.”結(jié)束,編寫成功返回250,并且返回隊列id

  6. 使用QUIT退出連接

網(wǎng)絡(luò)實戰(zhàn)

為了獲取存在問題的環(huán)境,在FOFA中搜索

"SMTP" && port="25" && country="CN"

可以獲取到國內(nèi)的開啟默認(rèn)端口的主機IP地址,選國內(nèi)是為了連接速度快。

如何解決使用python批量掃描SMTP 25未授權(quán)訪問問題

##開始利用嘗試使用telnet連接

telnet 1xxxxxx7 25

可以連接成功

如何解決使用python批量掃描SMTP 25未授權(quán)訪問問題

嘗試使用EHLO命令,看看會不會返回支持的擴展:

如何解決使用python批量掃描SMTP 25未授權(quán)訪問問題

然后,繼續(xù)MAIL FROM和RCPT TO,

如何解決使用python批量掃描SMTP 25未授權(quán)訪問問題

會發(fā)現(xiàn)需要認(rèn)證。哦吼吼,繼續(xù)看看別的。

看到一個沒有AUTH擴展的,嘗試連接一下:

如何解決使用python批量掃描SMTP 25未授權(quán)訪問問題

一套操作下來,穩(wěn)?。?/p>

如何解決使用python批量掃描SMTP 25未授權(quán)訪問問題

批量檢測

可能批量掃描掃描出的25端口很多,一個一個測過去很麻煩,需要一個方法進行批量掃描。

這里需要解決兩個問題,

  1. 確定NMAP沒有誤報,掃描出的25端口的確是smtp服務(wù)

  2. 嘗試獲取smtp服務(wù)能否匿名發(fā)送郵件,判斷的依據(jù)就是不會返回553代碼

如果用python調(diào)用telnet,雖然subprocess可以直接調(diào)用telnet,但是執(zhí)行時不能正確返回telnet命令的結(jié)果(處理起來太麻煩了)。所以只能用python telnetlib的庫來實現(xiàn)(直接調(diào)用shell里的命令有時候真的弱爆了)

導(dǎo)入的格式目前是 xx.xx.xx.xx:xx 但是目前只寫了針對25默認(rèn)端口

import telnetlib
import time


class TelnetClient():
    def __init__(self,):
        self.tn = telnetlib.Telnet()

    # 此函數(shù)實現(xiàn)telnet連接對應(yīng)服務(wù)器25端口
    def login_host(self,host_ip):
        try:
            # self.tn = telnetlib.Telnet(host_ip,port=23)
            self.tn.open(host_ip,port=25)
        except:
            print('%s網(wǎng)絡(luò)連接失敗'%host_ip)
            return False
        else:
            time.sleep(5)
        # read_very_eager()獲取到的是的是上次獲取之后本次獲取之前的所有輸出
            try:
                command_result = self.tn.read_very_eager().decode('ascii')
            except:
                print('%s smtp端口連接失敗' % host_ip)
                return False
            else:
                # 等待返回Mail Server ESMTP ready,返回該信息說明登陸成功
                if '220'in command_result:
                    print('%s smtp登錄成功'%host_ip)
                    self.tn.write("EHLO localhost\n")
                    command_result = self.tn.read_very_eager().decode('ascii')
                    if "553" not in command_result and "connection closed" not in command_result:
                        self.tn.write("MAIL TO:<123@QQ.COM>\n")
                        print("輸入MAIL TO內(nèi)容")
                        command_result = self.tn.read_very_eager().decode('ascii')
                        if "553" not in command_result and "connection closed" not in command_result:
                            self.tn.write("RCPT TO:<456@QQ.COM>\n")
                            print("輸入MAIL TO內(nèi)容")
                            command_result = self.tn.read_very_eager().decode('ascii')
                            if "553" not in command_result:
                                print("可能存在未授權(quán)問題")
                                return True
                else:
                    print('%s smtp登錄失敗'%host_ip)
                    return False

    # 退出telnet
    def logout_host(self):
        self.tn.write(b"quit\n")


if __name__ == '__main__':
    ip_list = open("iplist1.txt", 'r')
    for line in ip_list.readlines():
        target=line.split(":",1)

        if ":25" in line:
            print("-----------------------------")
            print(target[0])
            telnet_client = TelnetClient()
            # 如果登錄結(jié)果返加True,則執(zhí)行命令,然后退出
            if telnet_client.login_host(target[0]):
                telnet_client.logout_host()
            print("-----------------------------")

導(dǎo)入的需要是一個格式為 ip:port 的文件,因為懶,所以只寫了25端口,機智如你,肯定可以隨便改好的。

題外話

檢測smtp其實nmap有對應(yīng)的腳本,只是沒有看到匿名模式的,所以才自己嘗試寫了一下,其他的可以參考這些:

如何解決使用python批量掃描SMTP 25未授權(quán)訪問問題

以上是“如何解決使用python批量掃描SMTP 25未授權(quán)訪問問題”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


文章名稱:如何解決使用python批量掃描SMTP25未授權(quán)訪問問題
URL分享:http://weahome.cn/article/jchghh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部