首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SoftLayer漏洞扫描Python

SoftLayer漏洞扫描Python
EN

Stack Overflow用户
提问于 2017-02-09 17:40:13
回答 2查看 156关注 0票数 0

我试图使用SoftLayer的Python库来运行自动漏洞扫描。不幸的是,我得到了以下例外:

SoftLayer_Network_Security_Scanner_Request_Nessus.:SoftLayerAPIError: SoftLayerAPIError(SoftLayer_Exception):无法创建类型为SoftLayerAPIError的新对象确保身份验证方法是正确的。

下面可以看到我使用的代码。

代码语言:javascript
复制
import SoftLayer

USERNAME=""    # I put valid value in here
APIKEY=""      # I put valid value in here
TARGET=""      # I put valid value in here

client = SoftLayer.create_client_from_env(
    username=USERNAME,
    api_key=APIKEY
)
""" ALTERNATE I TRIED ALSO FROM DOCUMENTATION:
client = SoftLayer.Client(
    username=USERNAME,
    api_key=APIKEY
)
"""
account = client['Account'].getObject()
scanner = client.call(
        "SoftLayer_Network_Security_Scanner_Request",
        "createObject", {
            "accountId": account.get('id'),
            "ipAddress": TARGET
})

Python库发送的HTTP请求如下所示:

代码语言:javascript
复制
POST /xmlrpc/v3.1/SoftLayer_Network_Security_Scanner_Request HTTP/1.1
Host: api.softlayer.com
Connection: keep-alive
Accept: */*
Content-Type: application/xml
Content-Length: 798

<?xml version='1.0'?>
<methodCall>
<methodName>createObject</methodName>
<params>
<param>
<value><struct>
<member>
<name>headers</name>
<value><struct>
<member>
<name>authenticate</name>
<value><struct>
<member>
<name>username</name>
<value><string>***USERNAME_HERE***</string></value>
</member>
<member>
<name>apiKey</name>
<value><string>***API_KEY_HERE***</string></value>
</member>
</struct></value>
</member>
</struct></value>
</member>
</struct></value>
</param>
<param>
<value><struct>
<member>
<name>ipAddress</name>
<value><string>***TARGET_IP_HERE***</string></value>
</member>
<member>
<name>accountId</name>
<value><int>***ACCOUNT_ID_HERE***</int></value>
</member>
</struct></value>
</param>
</params>
</methodCall>

收到的HTTP响应是:

代码语言:javascript
复制
HTTP/1.1 200 OK
Date: Thu, 09 Feb 2017 12:47:17 GMT
Server: Apache
X-Frame-Options: SAMEORIGIN
Vary: Accept-Encoding
Connection: close
Content-Type: text/xml
Content-Length: 495

<?xml version="1.0" encoding="iso-8859-1"?>
<methodResponse>
<fault>
 <value>
  <struct>
   <member>
    <name>faultCode</name>
    <value>
     <string>SoftLayer_Exception</string>
    </value>
   </member>
   <member>
    <name>faultString</name>
    <value>
     <string>Unable to create a new object of type SoftLayer_Network_Security_Scanner_Request_Nessus. Make sure the authentication method is correct.</string>
    </value>
   </member>
  </struct>
 </value>
</fault>
</methodResponse>

有人能帮我,看看代码,因为我不知道问题可能在哪里。您是否也可以提供最低限度的权限列表,这是必要的工作?

备注:我尝试使用所有可能的权限进行调试,但没有成功。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-09 18:09:23

这似乎是API的一个问题,它不只是指定您需要指定的IP地址(用于裸金属服务器)或hardwareId (用于虚拟客户服务器)。

所以,试试下面的代码:

代码语言:javascript
复制
import SoftLayer

USERNAME="set me"    # I put valid value in here
APIKEY="set me"      # I put valid value in here
TARGET="set me"      # I put valid value in here

client = SoftLayer.create_client_from_env(
    username=USERNAME,
    api_key=APIKEY
)

account = client['Account'].getObject()
server = client['Virtual_Guest'].findByIpAddress(TARGET)
if (server) :
    request = {
            "accountId": account["id"],
            "guestId": server["id"]
    }
else:
    server = client['Hardware_Server'].findByIpAddress(TARGET)
    if (server):
        request = {
            "accountId": account["id"],
            "hardwareId": server["id"]
    }
    else:
        print ("server does not exist.")
        exit
scanner = client['Network_Security_Scanner_Request'].createObject(request)
票数 0
EN

Stack Overflow用户

发布于 2017-02-12 16:32:05

我对纳尔逊的上述评论进行了测试,它正在使用用于虚拟系统的guestId集。因此,现在必须提供accountId、guestId和ipAddress才能使其工作。我也将测试硬件,并期待同样的成功。如果没有,我会再发一次

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42143386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档