WebShell检测绕过之下·有的放矢
8c7c11ba042419e433a4a24cc615dddda5622e1055dc26fcf53c9915327d5555881fc92c26e874d05de8095d015fdcdef62ebde71a4f52e55d492a92a97d2d30a7ffdc6f194eafb5584bb739b2a378dfff7d8ba67fb6c787614ed74955213a3e6ed6d6812d2f3f98500eec7b620bb02f438a71129a31492b4440beb84053f240a52d693aaca6c6428b5733e322d06a38786e5932f698c8a82d1cff281d7c7142fd1eecf1b26116dad49126ef2e3dcc1587a4d36c02b6b1a52553f3c719e96bbdf65d7e1e268465f0b7eebc314cc4c3c3aaca209fa2ce09730745a92ba839155eaf85e1251c97f5cf78fec54c81d1240115d5c9cecaa61e69f ...
WebShell检测绕过之上·知己知彼
WebShell原理回顾Webshell的恶意性表现在它的实现功能上,是一段带有恶意目的的正常脚本代码。
这里仅对PHP的一句话木马进行分析,核心步骤如下:
数据传递
超全局变量:$_GET、$_POST、$_COOKIES、$_REQUEST、$_FILE、$_SERVER
从远程远程URL中获取数据:file_get_contents、curl、svn_checkout…(将需要执行的指令数据放在远程URL中,通过URL_INCLUDE来读取)
从本地磁盘文件中获取数据: file、file_get_contents…(将需要执行的指令数据放在本地磁盘文件中,利用IO函数来读取)
从数据库中读取(将需要执行的指令放在数据库中,利用数据库函数来读取)
从图片头部中获取: exif_read_data…(将需要执行的指令数据放在图片头部中,利用图片操作函数来读取)
代码执行
命令执行类:通过eval、assert、system、create_function等函数来执行命令/代码
动态构造类:在php支持的动态构造函数中调用执行命令
preg类:正则系列函数可以使用/e模式 ...
WebShell基础详解
WebShell基础什么是WebShell?顾名思义,“web”的含义是显然需要服务器开放web服务,“shell”的含义是取得对服务器某种程度上操作权限。webshell常常被称为入侵者通过网站端口对网站服务器的某种程度上操作的权限。由于webshell其大多是以动态脚本的形式出现,也有人称之为网站的后门工具。
Webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种代码执行环境,也可以将其称做为一种网页后门。黑客在入侵了一个网站后,通常会将asp或php后门文件与网站目录下正常的网页文件混在一起,然后就可以使用浏览器来访问asp或者php后门,得到一个命令执行环境,以达到控制网站服务器的目的。
利用Webshell可以在Web服务器上执行系统命令、窃取数据、植入病毒、勒索核心数据、SEO挂马等恶意操作,危害极大。
WebShell的特点黑客使用Webshell的第一步通常是将其上传到可以访问的服务器中,例如利用用户CMS系统的第三方插件中的漏洞上传一个简单的php Webshell。当然,Webshell类型和作用也不完全相同,一些简单的Webshell只起 ...
命令执行漏洞
命令执行漏洞是指在Web应用系统中,因为没有对用户传入或构造的参数进行有效的安全性检测,从而执行了参数中嵌入的系统操作命令或调用了触发系统的函数,使得攻击者可以在目标系统中不受限制地执行某些系统命令,例如关机指令、文件删除指令、文件移动指令、端口开启/关闭等指令。
如曾经爆出的bash破壳漏洞,就是通过命令执行漏洞进行恶意攻击的。Wordpress的第三方组件ImageMagick调用不当造成的命令攻击、Java的Struct2框架的远程命令执行攻击等,也属于命令执行漏洞,俗称RCE漏洞。此类漏洞可以进行文件的读取操作,并为恶意攻击者提供内网渗透通道,如反弹shell、内网探测等高级威胁。
命令连接符Windows下的命令连接符
&:前面的命令为假则直接执行后面的命令;为真,则在前面的命令执行后再执行后面的命令。
&&:前面的命令为假则直接出错,后面的命令也不执行;反之,前面的命令执行成功后执行后面的命令。
|:前后命令都按顺序执行,但只显示后面的命令执行结果。
||:前面的命令出错,则执行后面的命令;否则,不执行后面的命令。
Linux下的命令连接符
; ...
代码执行漏洞
当前各类网络业务应用系统的功能越来越多,给用户带来了各种业务便利和新的功能体验。在系统设计和开发过程中,软件工程师关注更多的是功能的可用性、易用性等方面,并没有注意程序代码所用的函数、实现的功能、执行的流程等方面是否安全。本节将从程序的函数参数、执行流程方面分析代码执行漏洞的原理。
代码执行漏洞是指用户通过客户端提交可执行命令代码,由于服务端没有针对函数的参数做有效过滤,导致系统执行非法命令代码。
代码执行函数所谓代码执行,就是通过参数、变量等指定可执行的代码,参数和变量中存储的将不再是数字、字符串等数值,而是可以执行的脚本代码或二进制代码。代码执行函数则是指可以实现代码执行的函数。在PHP语言和框架中,有很多代码执行函数,其参数可以接收代码值并触发执行该代码。一旦将有风险的代码通过函数参数传递给这些函数,就很容易执行恶意操作,触发安全漏洞。例如eval()、assert()、preg_replace()、call_user_func()、call_user_func_array()、create_function()、array_map()等函数,最常见的如动态函数$a($b)等 ...
SSRF的防御与绕过
SSRF漏洞形成的原因主要是服务器端所提供的接口中包含了所要请求的内容的URL参数,并且未对客户端所传输过来的URL参数进行过滤
一般的防御措施是对URL参数进行过滤,或者使得URL参数用户不可控,但当过滤方法不当时,就存在Bypass的不同方式
@绕过http://www.baidu.com@10.10.10.10与http://10.10.10.10请求是相同的
该请求得到的内容都是10.10.10.10的内容,此绕过同样在URL跳转绕过中适用。
原理如下:
利用解析URL时的规则问题。
一般情况下利用URL解析导致SSRF过滤被绕过基本上都是因为后端通过不正确的正则表达式对URL进行了解析。而在2017年的Blackhat大会上,Orange Thai 在blackhat中发表的演讲《A New Era of SSRF - Exploiting URL Parser in Trending Programming Languages! 》中介绍了SSRF攻击的一个新的角度———利用不同编程语言对URL的处理标准来绕过SSRF过滤,从而实施攻击。该方式主要是利用URL解析器 ...
利用SSRF渗透内网主机·下
FTP协议FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP 协议包括两个组成部分,其一为 FTP 服务器,其二为 FTP 客户端。其中 FTP 服务器用来存储文件,用户可以使用 FTP 客户端通过 FTP 协议访问位于 FTP 服务器上的资源。在开发网站的时候,通常利用 FTP 协议把网页或程序传到 Web 服务器上。此外,由于 FTP 传输效率非常高,在网络上传输大的文件时,一般也采用该协议。
默认情况下 FTP 协议使用 TCP 端口中的 20 和 21 这两个端口,其中 20 用于传输数据,21 用于传输控制信息。但是,是否使用 20 作为传输数据的端口与 FTP 使用的传输模式有关,如果采用主动模式,那么数据传输端口就是 20;如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定。
主动模式与被动模式FTP会话包含了两个通道,控制通道和数据传输通道,FTP的工作有两种模式,一种是主动模式,一种是被动模式,以FTP Server为参照:主动模式,服务器主动连接客户端传输;被动模式,等待客户端的连接。
...
利用SSRF渗透内网主机·中
SSRF攻击FastCGI执行命令FastCGI与PHP-FPMFastCGI快速通用网关接口(Fast Common Gateway Interface/FastCGI)是一种让交互程序与Web服务器通信的协议。FastCGI是早期通用网关接口(CGI)的增强版本。FastCGI致力于减少网页服务器与CGI程序之间交互的开销,从而使[服务器可以同时处理更多的网页请求。
众所周知,在网站分类中存在一种分类就是静态网站和动态网站,两者的区别就是静态网站只需要通过浏览器进行解析,其中的页面是一对一的(一个内容对应一个页面),而动态网站需要一个额外的编译解析的过程,网页上的数据是从数据库中或者其他地方调用,页面会随着数据的变化而改变,就产生了一定的交互性。
浏览器访问静态网页过程
在整个网页的访问过程中,Web容器(例如Apache、Nginx)只担任着内容分发者的身份,当访问静态网站的主页时,Web容器会到网站的相应目录中查找主页文件,然后发送给用户的浏览器。
浏览器访问动态网页过程
当访问动态网站的主页时,根据容器的配置文件,它知道这个页面不是静态页面,web容器就会去找PHP解析器来 ...
利用SSRF渗透内网主机·上
利用WebLogic的SSRF漏洞探测内网信息漏洞描述Weblogic中存在一个SSRF漏洞,利用该漏洞可以发送任意HTTP请求,进而攻击内网中redis、fastcgi等脆弱组件。
CVE编号:CVE-2014-4210
影响范围:
Oracle WebLogic Server 10.3.6.0
Oracle WebLogic Server 10.0.2.0
环境搭建下载vulhub:git clone https://github.com/vulhub/vulhub.git
进入目录:cd vulhub/weblogic/ssrf/
启动环境:docker-compose up -d
访问:http://your-ip:7001/uddiexplorer/SearchPublicRegistries.jsp
出现以下页面,说明测试环境ok。
漏洞复现开启Burp代理,提交表单
从返回页面的结果的报错上看,当提交表单的时候会访问下面这个URL,并做XMLSoap解析,这个错误就是我们SSRF漏洞产生的关键点
为了验证是否存在SSRF漏洞,我们将operator的值改为DN ...
SSRF的利用协议
测试漏洞源代码:
12345<?php $url = $_GET['url']; $curlobj = curl_init($url); echo curl_exec($curlobj);?>
file协议file协议主要用于访问本地计算机中的文件。
协议格式:
1file://文件路径
读取本地文件读取linux本地文件(?url=file:///etc/passwd)
读取Windows本地文件(?url=file://C://Windows//System32//drivers//etc//hosts)
dict协议词典网络协议,在RFC 2009中进行描述。它的目标是超越Webster protocol,并允许客户端在使用过程中访问更多字典。Dict服务器和客户机使用TCP端口2628。
协议格式:
1dict://服务端ip:端口/命令:参数
端口服务探测探测22端口是否开放与返回的banner信息(?url=dict://192.168.123.66:22)
探测6379端口是否开放与返回的banner信息(?url=dict:// ...
