【问题标题】:Python DNS server address already in usePython DNS 服务器地址已在使用中
【发布时间】:2016-03-13 14:07:39
【问题描述】:

我正在做恶意软件分析实验室。
任务是调查 CVE-2015-7547 glibc 漏洞。

谷歌已经给了proof of concept code。此代码包含 C 中的客户端和 python 中的假 DNS 服务器。当我尝试运行服务器时,它会抛出异常:

turbolab@sandbox:~/Desktop$ sudo python CVE-2015-7547-poc.py 
Traceback (most recent call last):
 File "CVE-2015-7547-poc.py", line 176, in <module>
    tcp_thread()
  File "CVE-2015-7547-poc.py", line 101, in tcp_thread
    sock_tcp.bind((IP, 53))
  File "/usr/lib/python2.7/socket.py", line 224, in meth
    return getattr(self._sock,name)(*args)
socket.error: [Errno 98] Address already in use

IP 设置为 127.0.0.1。

如何运行服务器并连接客户端?

【问题讨论】:

  • 该端口上是否已经有东西在监听? netstat -an | grep 53 或 lsof | grep LISTEN 或类似的应该告诉你
  • turbolab@sandbox:~/Desktop$ netstat -an | grep 53 tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN udp 0 0 127.0.0.1:53 0.0.0.0:* unix 3 [ ] STREAM CONNECTED 9532 @/tmp/dbus-FBvArc4F2a unix 3 [ ] STREAM CONNECTED 9531 unix 3 [ ] STREAM CONNECTED 9253 unix 3 [ ] STREAM CONNECTED 8953 unix 3 [ ] STREAM CONNECTED 7053
  • 所以有些东西已经绑定到那个端口,你大概已经运行了一个 dns 解析器
  • 我该如何阻止它?重启后出现同样的错误。不要认为假服务器的另一个实例正在运行。
  • 试试this

标签: python dns


【解决方案1】:

您可以运行netstat -lpn 列出所有侦听连接,使用 pid(-n 不解析名称)。

测试此漏洞

  • 克隆POC代码git clone https://github.com/fjserna/CVE-2015-7547.git
  • 将您的 DNS 服务器设置为 localhost (127.0.0.1) edit /etc/resolv.conf
  • 运行 POC DNS 服务器 sudo python CVE-2015-7547-poc.py
  • 编译客户端 make
  • 运行客户端 ./CVE-2015-7547-client

CVE-2015-7547-client 易受攻击时的段错误

CVE-2015-7547-client 报告CVE-2015-7547-client: getaddrinfo: Name or service not known 不受攻击。

查看Ubuntu Security Notice了解更多信息,以及原始Google blog

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-11
    • 2021-07-14
    • 1970-01-01
    • 2013-05-18
    • 2020-12-09
    • 1970-01-01
    • 1970-01-01
    • 2016-04-08
    相关资源
    最近更新 更多