⑴ 【网警提醒】基础网络攻防之webshell攻击
什么是webshell?有什么危害?
webshell 就是一种可以在web服务器上执行的后台脚本或者命令执行环境。
黑客通过入侵网站上传webshell后获得服务器的执行操作权限,比如执行系统命令、窃取用户数据、删除web页面、修改主页等,其危害不言而喻。
Webshell攻击的特点有哪些?
1
持续远程访问
入侵者可以利用 webshell 从而达到长期控制网站服务器的目的。若攻击者自行修复了漏洞,以确保没有其他人会利用该漏洞,攻击者可以低调的随时控制服务器。一些流行的 webshell 使用密码验证和其他技术来确保只有上传 webshell 的攻击者才能访问它。
2
权限提升
在服务器没有配置错误的情况下, webshell 将在web服务器的用户权限下运行,该用户权限是有限的。通过使用 webshell ,攻击者可以尝试通过利用系统上的本地漏洞来执行权限提升,常见的有查找敏感配置文件、通过内核漏洞提权、利用低权限用户目录下可被Root权限用户调用的脚本提权、任务计划等。
3
极强的隐蔽性
有些恶意网页脚本可以嵌套在正常网页中运行,且不容易被查杀。webshell还可以穿越服务器防火墙,由于与被控制的服务器或远程主机交互的数据都是通过80端口传递,因此不会被防火墙拦截,在没有记录流量的情况下, webshell 使用post包发送,也不会被记录在系统日志中,只会在web日志中记录一些数据提交的记录。
获取webshell的常见方法
1
直接上传获得webshell
因过滤上传文件不严,导致用户可以直接上传 webshell 到网站任意可写目录中,从而拿到网站的管理员控制权限。
2
添加修改上传类型
现在很多脚本程序上传模块不是只允许上传合法文件类型,大多数的系统是允许添加上传类型。
3
利用后台管理功能写入webshell
进入后台后还可以通过修改相关文件来写入webshell。
4
利用后台数据库备份及恢复获得
主要是利用后台对access数据库的“备份数据库”或“恢复数据库”功能,“备份的数据库路径”等变量没有过滤导致可以把任意文件后缀改为asp,从而得到webshell。
5
php+mysql系统
后台需要有mysql数据查询功能,入侵者就可以利用它执行SELECT ... in TO OUTFILE查询输出php文件,因为所有的数据是存放在mysql里的,所以我们可以通过正常手段把我们的WebShell代码插入mysql在利用SELECT ... in TO OUTFILE语句导出shell。
webshell网站后门的清除方法
后门的文件可以直接删除,找到后门文件,直接删除即可;
不能直接删除后门文件,只能删除文件内容中的木马代码进行清除。
1、文件名为index.asp 、index.php,这类为自动生成SEO类型文件,可以直接删除,如要彻底清除后门,需找生成此文件的源文件。
2、文件内容只有一行,或很少量的代码,此类被称为“一句话后门”。
3、文件内容中存在password或UserPass关键字。
4、另外一些在上传组件目录或上传目录的文件可以直接删除。如eWebEditor、Editor、FCKeditor、webeditor、UploadFiles、uploads等。
1、网站自身文件被插入恶意代码
2、网站配置文件
这类插入网站自身代码中的后门清除方法:
首先备份此文件以备改错可恢复,查找到后门代码的位置,一般通过查找“eval、execute、request、ExecuteGlobal”关键字进行定位。把确定为后门的代码删除后保存文件。访问网站看是否报错,以确认有没有改错。
网站如何防御webshell攻击?
从根本上解决动态网页脚本的安全问题,要做到防注入、防暴库、防COOKIES欺骗、防跨站攻击等等,务必配置好服务器FSO权限。
1、建议用户通过ftp来上传、维护网页,尽量不安装上传程序。
2、对上传程序的调用一定要进行身份认证,并只允许信任的人使用上传程序。
3、程序管理员的用户名和密码要有一定复杂性,不能过于简单,还要注意定期更换。
4、到正规网站下载程序,要对数据库名称和存放路径进行修改,数据库名称要有一定复杂性。
5、尽量保持程序是最新版本。
6、不要在网页上加注后台管理程序登陆页面的链接。
7、为防止程序有未知漏洞,可以在维护后删除后台管理程序的登陆页面,下次维护时再上传。
8、时常备份数据库等重要文件。
9、日常多维护,并注意空间中是否有来历不明的asp文件。
10、尽量关闭网站搜索功能,利用外部搜索工具,以防爆出数据。
11、利用白名单上传文件,不在白名单内的一律禁止上传,上传目录权限遵循最小权限原则。
⑵ 如何设置服务器安全性来阻止webshell
Windows 2003 服务器安全设置
一、先关闭不需要的端口
我比较小心,先关了端口。只开了3389、21、80、1433,有些人一直说什么默认的3389不安全,对此我不否认,但是利用的途径也只能一个一个的穷举爆破,你把帐号改了密码设置为十五六位,我估计他要破上好几年,哈哈!办法:本地连接--属性--Internet协议(TCP/IP)--高级--选项--TCP/IP筛选--属性--把勾打上,然后添加你需要的端口即可。PS一句:设置完端口需要重新启动!
当然大家也可以更改远程连接端口方法:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE \ SYSTEM\ Current ControlSet \ Control \ Terminal Server\WinStations\RDP-Tcp]
"PortNumber"=dword:00002683
保存为.REG文件双击即可!更改为9859,当然大家也可以换别的端口,直接打开以上注册表的地址,把值改为十进制的输入你想要的端口即可!重启生效
还有一点,在2003系统里,用TCP/IP筛选里的端口过滤功能,使用FTP服务器的时候,只开放21端口,在进行FTP传输的时候,FTP 特有的Port模式和Passive模式,在进行数据传输的时候,需要动态的打开高端口,所以在使用TCP/IP过滤的情况下,经常会出现连接上后无法列出目录和数据传输的问题。所以在2003系统上增加的Windows连接防火墙能很好的解决这个问题,不推荐使用网卡的TCP/IP过滤功能。
二.关闭不需要的服务打开相应的审核策略
我关闭了以下的服务
Computer Browser 维护网络上计算机的最新列表以及提供这个列表
Task scheler 允许程序在指定时间运行
Messenger 传输客户端和服务器之间的 NET SEND 和 警报器服务消息
Distributed File System: 局域网管理共享文件,不需要禁用
Distributed linktracking client:用于局域网更新连接信息,不需要禁用
Error reporting service:禁止发送错误报告
Microsoft Serch:提供快速的单词搜索,不需要可禁用
NTLMSecuritysupportprovide:telnet服务和Microsoft Serch用的,不需要禁用
PrintSpooler:如果没有打印机可禁用
Remote Registry:禁止远程修改注册表
Remote Desktop Help Session Manager:禁止远程协助
Workstation关闭的话远程NET命令列不出用户组
把不必要的服务都禁止掉,尽管这些不一定能被攻击者利用得上,但是按照安全规则和标准上来说,多余的东西就没必要开启,减少一份隐患。
在"网络连接"里,把不需要的协议和服务都删掉,这里只安装了基本的Internet协议(TCP/IP),由于要控制带宽流量服务,额外安装了Qos数据包计划程序。在高级tcp/ip设置里--"NetBIOS"设置"禁用tcp/IP上的NetBIOS(S)"。在高级选项里,使用"Internet连接防火墙",这是windows 2003 自带的防火墙,在2000系统里没有的功能,虽然没什么功能,但可以屏蔽端口,这样已经基本达到了一个IPSec的功能。
在运行中输入gpedit.msc回车,打开组策略编辑器,选择计算机配置-Windows设置-安全设置-审核策略在创建审核项目时需要注意的是如果审核的项目太多,生成的事件也就越多,那么要想发现严重的事件也越难当然如果审核的太少也会影响你发现严重的事件,你需要根据情况在这二者之间做出选择。
推荐的要审核的项目是:
登录事件
账户登录事件
系统事件
策略更改
对象访问
目录服务访问
特权使用
三、关闭默认共享的空连接
地球人都知道,我就不多说了!
四、磁盘权限设置
C盘只给administrators和system权限,其他的权限不给,其他的盘也可以这样设置,这里给的system权限也不一定需要给,只是由于某些第三方应用程序是以服务形式启动的,需要加上这个用户,否则造成启动不了。
Windows目录要加上给users的默认权限,否则ASP和ASPX等应用程序就无法运行。以前有朋友单独设置Instsrv和temp等目录权限,其实没有这个必要的。
另外在c:/Documents and Settings/这里相当重要,后面的目录里的权限根本不会继承从前的设置,如果仅仅只是设置了C盘给administrators权限,而在All Users/Application Data目录下会出现everyone用户有完全控制权限,这样入侵这可以跳转到这个目录,写入脚本或只文件,再结合其他漏洞来提升权限;譬如利用serv-u的本地溢出提升权限,或系统遗漏有补丁,数据库的弱点,甚至社会工程学等等N多方法,从前不是有牛人发飑说:"只要给我一个webshell,我就能拿到system",这也的确是有可能的。在用做web/ftp服务器的系统里,建议是将这些目录都设置的锁死。其他每个盘的目录都按照这样设置,每个盘都只给adinistrators权限。
另外,还将:
net.exe NET命令
cmd.exe CMD 懂电脑的都知道咯~
tftp.exe
netstat.exe
regedit.exe 注册表啦大家都知道
at.exe
attrib.exe
cacls.exe ACL用户组权限设置,此命令可以在NTFS下设置任何文件夹的任何权限!偶入侵的时候没少用这个....(:
format.exe 不说了,大家都知道是做嘛的
大家都知道ASP木马吧,有个CMD运行这个的,这些如果都可以在CMD下运行..55,,估计别的没啥,format下估计就哭料~~~(:这些文件都设置只允许administrator访问。
五、防火墙、杀毒软件的安装
关于这个东西的安装其实我也说不来,反正安装什么的都有,建议使用卡巴,卖咖啡。用系统自带的防火墙,这个我不专业,不说了!大家凑合!
六、SQL2000 SERV-U FTP安全设置
SQL安全方面
1、System Administrators 角色最好不要超过两个
2、如果是在本机最好将身份验证配置为Win登陆
3、不要使用Sa账户,为其配置一个超级复杂的密码
或修改sa用户名:
update sysxlogins set name='xxxx' where sid=0x01
update sysxlogins set sid= where name='xxxx'
4、删除以下的扩展存储过程格式为:
use master
sp_dropextendedproc '扩展存储过程名'
xp_cmdshell:是进入操作系统的最佳捷径,删除
访问注册表的存储过程,删除
Xp_regaddmultistringXp_regdeletekeyXp_regdeletevalueXp_regenumvalues
Xp_regread Xp_regwrite Xp_regremovemultistring
OLE自动存储过程,不需要,删除
Sp_OACreate Sp_OADestroySp_OAGetErrorInfoSp_OAGetProperty
Sp_OAMethodSp_OASetPropertySp_OAStop
5、隐藏 SQL Server、更改默认的1433端口。
右击实例选属性-常规-网络配置中选择TCP/IP协议的属性,选择隐藏 SQL Server 实例,并改原默认的1433端口。
6.为数据库建立一个新的角色,禁止改角色对系统表的的select等权限,防止sql注入时利用系统表。
serv-u的几点常规安全需要设置下:
选中"Block "FTP_bounce"attack and FXP"。什么是FXP呢?通常,当使用FTP协议进行文件传输时,客户端首先向FTP服务器发出一个"PORT"命令,该命令中包含此用户的IP地址和将被用来进行数据传输的端口号,服务器收到后,利用命令所提供的用户地址信息建立与用户的连接。大多数情况下,上述过程不会出现任何问题,但当客户端是一名恶意用户时,可能会通过在PORT命令中加入特定的地址信息,使FTP服务器与其它非客户端的机器建立连接。虽然这名恶意用户可能本身无权直接访问某一特定机器,但是如果FTP服务器有权访问该机器的话,那么恶意用户就可以通过FTP服务器作为中介,仍然能够最终实现与目标服务器的连接。这就是FXP,也称跨服务器攻击。选中后就可以防止发生此种情况。
七、IIS安全设置
IIS的安全:
1、不使用默认的Web站点,如果使用也要将IIS目录与系统磁盘分开。
2、删除IIS默认创建的Inetpub目录(在安装系统的盘上)。
3、删除系统盘下的虚拟目录,如:_vti_bin、IISSamples、Scripts、IIShelp、IISAdmin、IIShelp、MSADC。
4、删除不必要的IIS扩展名映射。
右键单击“默认Web站点→属性→主目录→配置”,打开应用程序窗口,去掉不必要的应用程序映射。主要为.shtml、.shtm、 .stm。
5、更改IIS日志的路径
右键单击“默认Web站点→属性-网站-在启用日志记录下点击属性
6、如果使用的是2000可以使用iislockdown来保护IIS,在2003运行的IE6.0的版本不需要。
八、其它
1、系统升级、打操作系统补丁,尤其是IIS 6.0补丁、SQL SP3a补丁,甚至IE 6.0补丁也要打。同时及时跟踪最新漏洞补丁;
2、停掉Guest 帐号、并给guest 加一个异常复杂的密码,把Administrator改名或伪装!
3、隐藏重要文件/目录
可以修改注册表实现完全隐藏:“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\ Current-Version\Explorer\Advanced\Folder\Hi-dden\SHOWALL”,鼠标右击 “CheckedValue”,选择修改,把数值由1改为0。
4、启动系统自带的Internet连接防火墙,在设置服务选项中勾选Web服务器。
5、防止SYN洪水攻击。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
新建DWORD值,名为SynAttackProtect,值为2
6. 禁止响应ICMP路由通告报文
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet\ Services\Tcpip\Parameters\Interfaces\interface
新建DWORD值,名为PerformRouterDiscovery 值为0。
7. 防止ICMP重定向报文的攻击
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
将EnableICMPRedirects 值设为0
8. 不支持IGMP协议
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
新建DWORD值,名为IGMPLevel 值为0。
9、禁用DCOM:
运行中输入Dcomcnfg.exe。回车,单击“控制台根节点”下的“组件服务”。打开“计算机”子文件夹。
有条件的话建议找专业做安全的公司来做!
⑶ 如果想写webshell服务器端应该进行什么设置
webshellasp、php、jsp或者cgi等网页文件形式存种命令执行环境其称做种网页门黑客入侵网站通asp或php门文件与网站服务器WEB目录网页文件混起使用浏览器访问asp或者php门命令执行环境达控制网站服务器目
顾
名思义web含义显需要服务器放web服务shell含义取服务器某种程度操作权限webshell称入侵者通
网站端口网站服务器某种程度操作权限由于webshell其态脚本形式现称网站门工具
⑷ 为什么WEBSHELL权限低
首先你要知道:webshell的权限是根据不同的web程序而定的,还有就是网站管理员的设置是否严格。
比如你的网站是ASP的,默认的webshell权限是“受限制用户”,好比xp系统的“user”权限用户,在这种情况下,如果网站管理员再设置诸如asp执行,访问权限,这样下来,你的webshell的权限就很低了。
但jsp程序就不同了,默认的是“system”权限,厉害吧,得到webshell就等于你拿下了服务器。
关于研究提权,方法很多,情况也不同,仔细说就话长了,建议可以在网上搜索相关提权视频,学习学习,这才是最重要的~~~~~
⑸ 服务器安全问题,如何防止webshell跨目录攻击,服务器上有多个站点,例如 a站点被入侵上传we
可以装个服务器安全软件,有免费的,比如安全狗。对服务器和网站进行整体扫描检测,清除安全威胁;设置复杂的账号密码。
⑹ 我的服务器是 linux +apache +php 请问如何设置 才能让 webshell 不能 修改文件权限
如果服务器是单纯的php的话就把php降权
网站用户也别用root
控制上传的目录,让其对其他目录没有修改权和列举
⑺ 如何设置服务器安全性来阻止webshell
如果不在同目录请使用跳转符号.然后修改asp文件的上传修改时间改成跟网站里asp文件一致就可以了.这样一般是发现不了你的shell的.因为你建特殊文件
⑻ 怎么禁止webshell访问硬盘的权限
防范这些WEBSHELL,首先是设置服务器的权限,禁止他们越权访问东西。服务器权限设置可以参考沉睡不醒整理的IIS FAQ ( http://fox.he100.com/showart.asp?art_id=121&cat_id=1),我这里就直接引用原文的内容了9.如何让iis的最小ntfs权限运行? 依次做下面的工作: a.选取整个硬盘: system:完全控制 administrator:完全控制 (允许将来自父系的可继承性权限传播给对象) b.program filescommon files: everyone:读取及运行 列出文件目录 读取 (允许将来自父系的可继承性权限传播给对象) c.inetpubwwwroot: iusr_machinename:读取及运行 列出文件目录 读取 (允许将来自父系的可继承性权限传播给对象) e.winntsystem32: 选择除inetsrv和centsrv以外的所有目录, 去除“允许将来自父系的可继承性权限传播给对象”选框,复制。 f.winnt: 选择除了downloaded program files、help、iis temporary compressed files、 offline web pages、system32、tasks、temp、web以外的所有目录 去除“允许将来自父系的可继承性权限传播给对象”选框,复制。 g.winnt: everyone:读取及运行 列出文件目录 读取 (允许将来自父系的可继承性权限传播给对象) h.winnttemp:(允许访问数据库并显示在asp页面上) everyone:修改 (允许将来自父系的可继承性权限传播给对象) 再单独对cmd.exe net.exe net1.exe ping.exe netstat.exe ftp.exetftp.exe telnet.exe设置为只允许administrators组访问,这样就可以防范通过Serv-U的本地提升权限漏洞来运行这些关键的程序了,再删除cacls.exe这个程序,防止有人通过命令行来修改权限,呵呵。 再来去掉一些ASP WEBSHELL需要使用的一些组件,这些组件其实普通的虚拟主机用户也是用不上的。 很多防范ASP木马的文章都提到要删除FileSystemObject组件,但删除了这个组件后,很多ASP的程序可能会运行不了,其实只要做好了前面的工作,FileSystemObject组件能操作的,只能是自己目录下的文件,也就构成不了什么威胁了! 现在看来,还比较有威胁的组件就是Shell.Application和Wscript.Shell这两个组件了,Shell.Application可以对文件进行一些操作,还可以执行程序,但不能带参数,而Wscript.Shell可以操作注册表和执行DOS命令。 防范Wscript.Shell组件的方法: 可以通过修改注册表,将此组件改名。 HKEY_CLASSES_ROOTWScript.Shell及HKEY_CLASSES_ROOTWScript.Shell.1 改名为其它的名字,如:改为WScript.Shell_ChangeName或WScript.Shell.1_ChangeName自己以后调用的时候使用这个就可以正常调用此组件了 也要将clsid值也改一下 HKEY_CLASSES_ROOTWScript.ShellCLSID项目的值 HKEY_CLASSES_ROOTWScript.Shell.1CLSID项目的值 也可以将其删除,来防止此类木马的危害。 防范Shell.Application组件的方法: 可以通过修改注册表,将此组件改名。 HKEY_CLASSES_ROOTShell.Application 及 HKEY_CLASSES_ROOTShell.Application.1 改名为其它的名字,如:改为Shell.Application_ChangeName或Shell.Application.1_ChangeName 自己以后调用的时候使用这个就可以正常调用此组件了。 也要将clsid值也改一下 HKEY_CLASSES_ROOTShell.ApplicationCLSID项目的值 HKEY_CLASSES_ROOTShell.ApplicationCLSID项目的值 也可以将其删除,来防止此类木马的危害。 还可以用现在绝大多数的虚拟主机都禁用了 ASP 的标准组件:FileSystemObject,因为这个组件为 ASP 提供了强大的文件系统访问能力,可以对服务器硬盘上的任何文件进行读、写、复制、删除、改名等操作(当然,这是指在使用默认设置的 Windows NT / 2000 下才能做到)。但是禁止此组件后,引起的后果就是所有利用这个组件的 ASP 将无法运行,无法满足客户的需求。 如何既允许 FileSystemObject 组件,又不影响服务器的安全性(即:不同虚拟主机用户之间不能使用该组件读写别人的文件)呢?这里介绍本人在实验中获得的一种方法,下文以 Windows 2000 Server 为例来说明。 在服务器上打开资源管理器,用鼠标右键点击各个硬盘分区或卷的盘符,在弹出菜单中选择“属性”,选择“安全”选项卡,此时就可以看到有哪些帐号可以访问这个分区(卷)及访问权限。默认安装后,出现的是“Everyone”具有完全控制的权限。点“添加”,将“Administrators”、“Backup Operators”、“Power Users”、“Users”等几个组添加进去,并给予“完全控制”或相应的权限,注意,不要给“Guests”组、“IUSR_机器名”这几个帐号任何权限。然后将“Everyone”组从列表中删除,这样,就只有授权的组和用户才能访问此硬盘分区了,而 ASP 执行时,是以“IUSR_机器名”的身份访问硬盘的,这里没给该用户帐号权限,ASP 也就不能读写硬盘上的文件了。 下面要做的就是给每个虚拟主机用户设置一个单独的用户帐号,然后再给每个帐号分配一个允许其完全控制的目录。 如下图所示,打开“计算机管理”→“本地用户和组”→“用户”,在右栏中点击鼠标右键,在弹出的菜单中选择“新用户”: 在弹出的“新用户”对话框中根据实际需要输入“用户名”、“全名”、“描述”、“密码”、“确认密码”,并将“用户下次登录时须更改密码”前的对号去掉,选中“用户不能更改密码”和“密码永不过期”。本例是给第一虚拟主机的用户建立一个匿名访问 Internet 信息服务的内置帐号“IUSR_VHOST1”,即:所有客户端使用 http://xxx.xxx.xxxx/访问此虚拟主机时,都是以这个身份来访问的。输入完成后点“创建”即可。可以根据实际需要,创建多个用户,创建完毕后点“关闭”:现在新建立的用户已经出现在帐号列表中了,在列表中双击该帐号,以便进一步进行设置: 在弹出的“IUSR_VHOST1”(即刚才创建的新帐号)属性对话框中点“隶属于”选项卡: 刚建立的帐号默认是属于“Users”组,选中该组,点“删除”: 现在出现的是如下图所示,此时再点“添加”: 在弹出的“选择 组”对话框中找到“Guests”,点“添加”,此组就会出现在下方的文本框中,然后点“确定”: 出现的就是如下图所示的内容,点“确定”关闭此对话框: 打开“Internet 信息服务”,开始对虚拟主机进行设置,本例中的以对“第一虚拟主机”设置为例进行说明,右击该主机名,在弹出的菜单中选择“属性”: 弹出一个“第一虚拟主机 属性”的对话框,从对话框中可以看到该虚拟主机用户的使用的是“F:VHOST1”这个文件夹: 暂时先不管刚才的“第一虚拟主机 属性”对话框,切换到“资源管理器”,找到“F:VHOST1”这个文件夹,右击,选“属性”→“安全”选项卡,此时可以看到该文件夹的默认安全设置是“Everyone”完全控制(视不同情况显示的内容不完全一样),首先将最将下的“允许将来自父系的可继承权限传播给该对象”前面的对号去掉~~
⑼ 计算机里面什么是webshell
webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种代码执行环境,主要用于网站管理、服务器管理、权限管理等操作。使用方法简单,只需上传一个代码文件,通过网址访问,便可进行很多日常操作,极大地方便了使用者对网站和服务器的管理。正因如此,也有小部分人将代码修改后当作后门程序使用,以达到控制网站服务器的目的。