ARL-NPoC icon indicating copy to clipboard operation
ARL-NPoC copied to clipboard

可以出一个poc编写教程吗?

Open ipsecc opened this issue 3 years ago • 3 comments

ipsecc avatar May 13 '21 06:05 ipsecc

poc 有个plugin_type 字段,取值范围 https://github.com/1c3z/ARL-NPoC/blob/67516c3081c40d3ebede6bd7928fb3e80cd732c0/xing/core/const.py#L3-L7

PluginType.PoC 对应scan 子命令, 一般用来漏洞检测 PluginType.SNIFFER 对应sniffer 子命令,一般用来协议识别 PluginType.BRUTE 对应brute子命令,一般用来写爆破,字典位于dict目录

然后要看你写的插件类别,依葫芦画瓢即可。

可以根据自己的需要在 plugins 目录下新建一个目录,如0day, 新建的文件名为 nginx_rce.py , 这里的文件名是ID .
为了方便开发,我一般都下面这样调用, 其中-t 为目标,可以为文件也可以直接指定,-x 可以设置代理,方便自己调试查看。

xing --log debug  scan -n nginx -t https://www.baidu.com   -x http://127.0.0.1:8080

1c3z avatar May 13 '21 12:05 1c3z

image image DubboBrute.py的poc如下:

from xing.core.BasePlugin import BasePlugin from xing.utils import http_req from xing.core import PluginType, SchemeType

class Plugin(BasePlugin): def init(self): super(Plugin, self).init() self.plugin_type = PluginType.BRUTE self.vul_name = "Dubbo 弱口令" self.app_name = 'Dubbo' self.scheme = [SchemeType.HTTP, SchemeType.HTTPS]

    self._check_str = 'Dubbo'
    self.username_file = "common_username.txt"
    self.password_file = "common_password.txt"
    self.shuffle_auth_list = True

def login(self, target, user, passwd):
    url = target + "/admin/"
    conn = http_req(url, "get", HTTPBasicAuth=(user, passwd))
    if conn.status_code == 200:
        return True

def check_app(self, target):
    url = target + "/admin/"
    conn = http_req(url, "get")

    if self._check_str not in conn.headers.get("WWW-Authenticate: Basic realm=\"dubbo\"", ""):
        return False

    if conn.status_code == 401:
        return True
    else:
        return False

image 我这样子到底是成功了还是失败了呢

ym2011 avatar Jul 23 '21 08:07 ym2011

没看到爆破的过程,check_app 函数没过 这里写错了,

if self._check_str not in conn.headers.get("WWW-Authenticate: Basic realm=\"dubbo\"", ""):
        return False

conn.headers.get("WWW-Authenticate")

可以在函数里面多打几个日志就明了了。

1c3z avatar Jul 23 '21 11:07 1c3z