让一句马(PHP)成为你的代理服务器

既然一句马是可以执行php代码,那么把一段实现代理功能的php代码交给一句马就让它变成一台简单的代理服务器了。

参照Simple PHP Proxy,精简出代码:

<?PHP
$url = $_GET['url'];
$ch = curl_init($url);
if (strtolower($_SERVER['REQUEST_METHOD']) == 'post') {
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $_POST);
}
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, $_GET['user_agent'] ? $_GET['user_agent'] : $_SERVER['HTTP_USER_AGENT']);
list($header, $contents) = preg_split('/([\r\n][\r\n])\\1/', curl_exec($ch), 2);
$status = curl_getinfo($ch);
curl_close($ch);
$header_text = preg_split('/[\r\n]+/', $header);
foreach ($header_text as $header) {
    if (preg_match('/^(?:Content-Type|Content-Language|Set-Cookie):/i', $header)) {
        header($header);
    }
}
print $contents;
exit;
?>

然后,你需要把它转为一行,比如用python:

''.join(open('[path-to-nano-proxy.php]').read().replace('<?PHP', '').replace('?>', '').split('\n'))

使用的时候也很简单,就是向这个一句马传递一个url参数就可以,例如:

http://[url-to-nano-proxy.php]?url=http://www.google.com

这样你的一句马不仅能用来管理网站,还可以能做代理服务器。

caidao.py

写了个python的菜刀(caidao.py),一句话马用来管理网站其实很方便,虽然总是被用于黑来黑去的(webshell)。

🙁

当然也可以直接用chopper.exe,但总是要担心安全问题。

我得做自己的菜刀啊,所以就有了caidao.py,不知道有没有人已经做这件事情了。

目前支持简单的文件操作:upload/remove/download/rename/mkdir/cd

等再成熟点就放到github上。