ARL-NPoC
ARL-NPoC copied to clipboard
可以出一个poc编写教程吗?
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
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
我这样子到底是成功了还是失败了呢
没看到爆破的过程,check_app 函数没过 这里写错了,
if self._check_str not in conn.headers.get("WWW-Authenticate: Basic realm=\"dubbo\"", ""):
return False
是
conn.headers.get("WWW-Authenticate")
可以在函数里面多打几个日志就明了了。