AWD线下攻防万字最完整战术(记第一届“长城杯”半决赛战术)

news2024/12/24 9:15:26

目录

  • 准备阶段
    • 1.登录比赛平台(获取资产)
      • 查看账号
      • 账号修改
        • 服务器SSH口令
        • mysql
        • WEB服务口令(后台密码)
        • 数据库后台管理员密码
      • 账号用户检查
    • 2.dump源码(方便应急响应恢复靶机)
      • 网站源码备份
        • 压缩文件
        • 解压文件
        • 备份到服务器
        • 本地上传下载文件
      • 数据备份
        • 备份指定数据库
        • 备份所有数据库
        • 导入数据库
    • 3、漏洞审计
      • 源代码审计
      • 查看资产
    • 4、安全加固
      • 后门查杀
      • 关闭进程端口
      • Windows加固流程
      • Linux加固流程
      • 关键端口修改
      • 系统安全配置
        • 2.2.2 设置只读权限
        • 2.2.4 PHP参数安全配置
      • 2.3 数据库安全加固
        • 2.3.1 Mysql加固
        • 2.3.2 Mssql加固
      • 2.4远程控制加固
        • 2.4.1 SSH安全加固
        • 2.4.2 RDP远程登录安全加固
    • 5.站点防御部署
      • 下载Python
        • 3.1- 解压源码包
      • php环境安装
      • Go环境安装
      • 部署WAF、EDR
        • PHP脚本
        • 2.1.6 设置禁Ping
      • 文件监控
        • Python脚本
        • 备份检查
        • 后门查杀
        • 漏洞修复
        • 工具
      • 流量监控
        • 关闭进程
        • wireshark
        • 流量分析
      • 端口监控
        • 关闭端口
  • 攻击阶段
    • 6、信息收集
      • 内网信息收集
        • 0.内网探活(自动扫内网私有地址)
        • 1、扫c段(主机探测(nmap、httpscan))
        • 2、扫端口(nmap)
        • 3、应用发现(指纹识别)
        • 4.综合漏洞快速探测(中间件、组件框架、系统漏洞)
    • 5、进行攻击
      • 出题人设计漏洞
        • 后门利用
        • 远程命令执行
        • 文件读取
        • 中间件漏洞
      • 其他队发现的漏洞
        • 提权
    • 6、权限维持
    • 7.编写脚本批量拿分
      • 1.手写POC利用漏洞或者攻击
        • 一系列exp
      • 2.批量修改ssh账号密码
      • 3.通过脚本批量获取flag
        • 批量利用框架工具
        • 批量通过后门获取flag再删库
        • 批量获取flag 可视化gui软件
    • Github资源
    • [](https://www.neversec.top/20190415/how-to-awd.html#AWD%E7%BB%8F%E9%AA%8C “AWD经验”)AWD经验
    • [](https://www.neversec.top/20190415/how-to-awd.html#%E6%9D%83%E9%99%90%E7%BB%B4%E6%8C%81 “权限维持”)权限维持

准备阶段

1.登录比赛平台(获取资产)

查看账号

在这里插入图片描述

ssh远程登录

ssh [username]@[hostname]

第一次登录一直yes就行
个人参赛建议这里用finalshell来运维:http://t.csdnimg.cn/fCskf

账号修改

服务器SSH口令
passwd #ssh口令修改

系统会提示你输入当前的密码,然后输入你想要设置的新密码两次以确认

mysql

修改mysql登录密码

方法一:

  1. 使用以下命令登录MySQL:
    mysql -u root -p password
    
    root与password替换为你当前的账号密码
  2. 选择mysql数据库:
    use mysql;
    
  3. 使用UPDATE语句来更改密码,其中new_password是你想要设置的新密码:
    update user set authentication_string=password('new_password') where user='root';
    
    如果你使用的是MySQL 5.7及以上版本,请使用以下语句:
    update user set authentication_string=passworD('new_password') where user='root';
    
    或者
    UPDATE mysql.user SET authentication_string = MD5('123456') WHERE user = 'newuser';
    
    UPDATE mysql.user SET authentication_string = '123456' WHERE user = 'newuser';
    
    
  4. 刷新权限并退出:
    flush privileges; exit;
    

方法二:

mysqladmin -u root -p 123456 password 123

root=用户名; 123456=旧密码; 123=新密码;

关闭 MySQL 远程登录(有些比赛会检查这个的check,建议慎用)

mysql -u root -p
mysql> use mysql;
mysql> update user set host = 'localhost' where user='root' and host='%';
mysql> flush privileges;
mysql> exit;
WEB服务口令(后台密码)

配置文件方式的后台密码

find /var/www//html -path ' config ’ #查找配置文件中的密码凭证
数据库后台管理员密码
mysql -u root -p
show databases;
use test;打开站点的数据库
show tables;打开站点的用户表
select * from admin;
updata admin set user pass=’123456’; //updata 表名 set 字段名 = ‘值’;
flush privileges;

账号用户检查

SSH

隐藏用户

  1. 检查/etc/passwd文件:是否有/bin/bash的用户
    cut -d : -f 1 /etc/passwd
    
    cat /etc/shadow
    
  2. 使用usermod命令禁用可疑用户:
    usermod -L 用户名
    删除
    userdel -r 用户名
    
    

查看home目录下是否有其他用户

ls /home

MYSQL

删除多余的账号

登录MySQL数据库

mysql -u root -p password

查询所有用户:

SELECT DISTINCT CONCAT('User: ''', user, '''@''', host, ''';') AS query FROM mysql.user;

删除用户:

DROP USER user1, user2, user3;

确保将user1, user2, user3替换为实际的用户名列表。
刷新权限:

FLUSH PRIVILEGES;

2.dump源码(方便应急响应恢复靶机)

网站源码备份

使用ssh工具保留源码,复制两份,用d盾去扫一份

防止在对源码进行修改时出问题,或者被攻击方删除源码而准备

压缩源码:

tar -cvf web.tar /var/www/html
zip -q -r web.zip /var/www/html

解压缩源码:

tar -xvf web.tar -c /var/www/html
unzip web.zip -d /var/www/html

备份源码:

mv web.tar /tmp
mv web.zip /home/xxx

上传和下载源码:

scp username@servername:/path/filename /tmp/local_destination  //从服务器下载单个文件到本地
scp /path/local_filename username@servername:/path             //从本地上传单个文件到服务器
scp -r username@servername:remote_dir/ /tmp/local_dir          //从服务器下载整个目录到本地
scp -r /tmp/local_dir username@servername:remote_dir           //从本地上传整个目录到服务器
压缩文件
tar -cvf web.tar /var/www/html
zip -q -r web.zip /var/www/html 
解压文件
tar -xvf web.tar -c /var/www/html
unzip web.zip -d /var/www/html
备份到服务器
mv web.tar /tmp
mv web.zip /home/xxx
本地上传下载文件
scp username@servername:/path/filename /tmp/local_destination #从服务器下载单个文件到本地
scp /path/local_filename username@servername:/path #从本地上传单个文件到服务器
scp -r username@servername:remote_dir/ /tmp/local_dir #从服务器下载整个目录到本地
scp -r /tmp/local_dir username@servername:remote_dir #从本地上传整个目录到服务器

通过ssh传文件

使用scp命令

scp(Secure Copy)是基于SSH协议的文件复制工具,它允许用户在本地和远程系统之间安全地复制文件或目录。

  • 从本地复制到远程服务器

    scp /path/to/local/file username@remote_host:/path/to/remote/directory

    这个命令会提示输入远程服务器的密码,然后将本地文件复制到远程服务器指定的目录。

  • 从远程服务器复制到本地

    scp username@remote_host:/path/to/remote/file /path/to/local/directory

    同样,这个命令也需要输入远程服务器的密码,然后将远程服务器上的文件复制到本地指定的目录。

2. 使用rsync命令

rsync是一个功能强大的文件同步和传输工具,它支持本地和远程之间的文件同步,并且可以进行增量备份。

  • 基本的**rsync**命令

    rsync -avz -e ssh /path/to/local/file username@remote_host:/path/to/remote/directory

    这个命令通过SSH连接到远程服务器,并将本地文件同步到远程目录。选项-a表示归档模式,-v表示详细模式,-z表示压缩数据。

  • 增量同步rsync可以只同步发生变化的文件,这在频繁备份时非常有用:

    rsync -avz -e ssh --delete username@remote_host:/path/to/remote/file /path/to/local/directory

    --delete选项会删除本地目录中不存在的文件,确保两边的文件保持一致。

3. 使用sshfs挂载远程文件系统

sshfs(SSH File System)允许你将远程文件系统挂载到本地,就像操作本地文件系统一样。

  • 挂载远程文件系统

    sshfs username@remote_host:/path/to/remote/directory /path/to/local/mountpoint -o follow_symlinks

    这个命令会将远程目录挂载到本地的挂载点。-o follow_symlinks选项允许跟随符号链接。

数据备份

php网站数据库配置信息为 config.php/web.conf

php.ini文件、postgresql.conf、settings.py、mongod.conf、web.config

备份指定数据库
mysqldump  – u  username – p  password databasename  >  bak.sql
备份所有数据库
mysqldump – all -databases > bak.sql
导入数据库
mysql – u username – p password database < bak.sql

3、漏洞审计

源代码审计

D盾
在这里插入图片描述

解压然后运行exe

选择查杀模式直接扫

Seay

打开exe,和d盾类似的步骤

河马

不要将本软件放置到web目录下

普通扫描

./hm scan /home/kali/桌面/20190511_awd_docker-master 

/home/kali/桌面/20190511_awd_docker-master 为目录的完整路径

扫描完成之后结果会保存为result.csv文件,使用记事本或者excel打开查看
在这里插入图片描述

扫描时开启深度解码

./hm deepscan 你的web目录 

在这里插入图片描述

查看资产

明确Linux机器信息

uname -a //系统信息
ps -aux //查询进程信息
ps -ef | grep 进程名称 //筛选指定进程
id //用于显示用户ID,以及所属群组ID
cat /etc/passwd //查看用户情况
ls /home/ //查看用户情况
find / -type d -perm -002 //可写目录检查
ifconfig //Linux上查看网卡信息
ip addr show //Linux上查看网卡信

检查环境

Python2

python2 --version

Python3

python3 --version

go

go version

4、安全加固

后门查杀

扫描预留后门,御剑,k8飞刀,D盾,扫描目录,发现后门,注释代码

find . -name '*.php' | xargs grep -n 'eval('
find . -name '*.php' | xargs grep -n 'assert('
find . -name '*.php' | xargs grep -n 'system('

关闭进程端口

netstat -napt ,lsof -i 查看端口,
kill -9 PID 杀掉进程
nmap -sV ip地址(-sV参数可以探测目标主机的服务器版本)
nmap扫描对方开启的端口,21,22,21,3306,进行爆破
msfconsole进入metasploit,hydra可以对22端口进行爆破

Windows加固流程

  1. 445加固,开启防火墙或IP高级安全策略
netsh advfirewall set allprofiles state on

netsh advfirewall firewall add rule name="Block445" dir=in action=block protocol=TCP localport=445
#阻止445端口


  1. 开启系统日志审计功能
auditpol /set /subcategory:"Logon" /success:enable /failure:enable


  1. 禁用guest账户、关闭文件共享
net user guest /active:no

netsh advfirewall firewall set rule group="File and Printer Sharing" new enable=No

  1. 确保启动项内容是可控的
msconfig
  1. 限制3389远程访问控制的连接数:在本地组策略编辑器里面,依次展开计算机配置–>管理模板–>Windows组件–>远程桌面服务–>远程桌面会话主机–>连接–>限制连接的数量

Linux加固流程

  1. 通过 .bash_history 查找历史命令操作,发现痕迹
  2. 查看计划任务:crontab -l;编辑计划任务:crontab -e
  3. 查看 /etc/init.d/rc.local 中启动服务有无异常
  4. 系统加固:iptable

以下是一些基本的 iptables 命令示例:

  • 查看所有规则

    sudo iptables -L

  • 添加规则: 例如,允许来自特定IP地址的所有流量:

    sudo iptables -A INPUT -p tcp -s 192.168.1.100 --dport 80 -j ACCEPT

    这个命令添加了一条规则到 INPUT 链,允许 TCP 协议从 192.168.1.100 地址到端口 80 的所有流量。

  • 删除规则: 删除特定的规则,假设规则编号为 2:

    sudo iptables -D INPUT 2

  • 保存规则: 将当前的规则集保存到一个文件中,通常保存到 /etc/iptables.rules

    复制

    sudo iptables-save > /etc/iptables.rules

  • 恢复规则: 从文件中恢复规则集,通常从 /etc/iptables.rules

    sudo iptables-restore < /etc/iptables.rules

  • 设置默认策略: 例如,设置默认的 INPUT 链策略为拒绝:

    sudo iptables -P INPUT DROP

关键端口修改

  1. 查找服务的配置文件: 服务的配置文件通常位于/etc/目录下,或者在特定的子目录中,如/etc/nginx//etc/httpd//etc/mysql/等。例如,对于Apache HTTP服务器,配置文件可能是/etc/httpd/conf/httpd.conf/etc/apache2/apache2.conf

    sudo find / -name "httpd.conf"
    
    ls /etc/default/ | grep apache2
    
    
  2. 修改端口号: 打开服务的配置文件,找到监听端口的指令。例如,在Apache中,可能会有类似Listen 80的指令。将端口号从80更改为其他端口,如8080,修改后的指令应为Listen 8080

  3. 保存并关闭配置文件: 在编辑器中保存更改后,关闭编辑器。

  4. 重启服务: 为了使更改生效,需要重启服务。大多数服务都可以通过systemctl命令来重启。例如,对于Apache HTTP服务器,可以使用以下命令:

    sudo systemctl restart apache2

    或者,对于其他服务,如Nginx或MySQL,可以使用相应的命令:

    sudo systemctl restart nginx sudo systemctl restart mysql

  5. 检查端口更改: 使用netstatsslsof等命令来检查端口是否已经更改为新的端口号。例如:

    sudo netstat -tulnp | grep :8080

    或者

    sudo ss -tulnp | grep :8080

系统安全配置

1.设置只读权限

对Web文件设置只读和执行权限(PHP等动态语言需要执行权限)

chmod 0555 /var/www/html/*
chmod 0555 /var/www/html/*.php

Web根目录设置只读和执行权限

chmod 0555 /var/www/html

改变文件的属主和属组来设置严格的权限

chown -R root:root /var/www/html/        //设置拥有人为 root:root 或 httpd:httpd (推荐)

2.配置 .htaccess

利用 .htaccess 配置文件禁止php文件执行

<Directory "/var/www/html/upload">   //指定目录后续的指令将应用于该目录
Options -ExecCGI -Indexes            //禁用了目录中的 CGI 执行和目录索引(显示目录内容列表)功能。
AllowOverride None                   //不允许在该目录中使用 .htaccess 文件来覆盖服务器的配置。
RemoveHandler .php .phtml .php3 .pht .php4 .php5 .php7 .shtml  
RemoveType .php .phtml .php3 .pht .php4 .php5 .php7 .shtml      
//这两个指令移除指定文件扩展名的处理器和类型。
//在这种情况下,这些指令从 Apache 的处理列表中移除了与 PHP 相关的扩展名和服务器端包含(SSI)文件类型。
php_flag engine off     //这个指令将 PHP 的引擎标志(engine)设置为关闭状态,从而禁用了在该目录中执行 PHP 脚本的能力。
<FilesMatch ".+\.ph(p[3457]?|t|tml)$">
deny from all
</FilesMatch>  //这三行命令使用正则表达式匹配了以 .php、.phtml、.php3、.pht、.php4、.php5、.php7、.shtml 结尾的文件,并将其访问权限设置为拒绝所有
</Directory>
3. PHP参数安全配置

首先找到PHP的配置文件

/etc/php/{version}/php.ini

禁用高危函数

disable_functions = dl,exec,system,passthru,popen,proc_open,pcntl_exec,shell_exec,mail,imap_open,imap_mail,putenv,ini_set,apache_setenv,symlink,link

配置 open_basedir (将用户访问文件的活动范围限制在指定的区域)

open_basedir=/var/www/html

禁用魔术引号(自动对外部来源数据进行转义,防止SQL注入)

magic_quotes_gpc = Off

关闭PHP伪协议

allow_url_fopen = Off
allow_url_include = Off

重启PHP

sudo service php7.0-fpm restart
sudo systemctl restart php7.0-fpm.service

数据库安全加固

1.Mysql加固

为了防范弱口令攻击,Mysql密码默认都是root,phpstudy默认密码123456

  1. 不使用默认口令,修改成复杂的,并确保和web环境连接
  2. 设置只允许本地127.0.0.1账户登录:修改 bind-address=127.0.0.1 ;在配置文件中加入 seccure_file_priv=NULL
  3. 开启日志审计功能:general_log_file=路径

因为最常用的是Mysql数据库,所以基本的攻防大部分都是用MySql数据库的命令

备份指定数据库:

mysqldump –u username –p password databasename > target.sql

备份所有数据库:

mysqldump –all -databases > all.sql

导入数据库:

mysql –u username –p password database < from.sql

对于MySQL的攻防,可以看这篇文章:https://blog.zgsec.cn/archives/26.html

MySQL默认配置文件路径:

C:\\Program Files\MySQL\MySQLServer 5.1\my.ini   //Windows
/etc/my.cnf                                      //Linux
/etc/mysql/my.cnf                                //Linux

修改 secure_file_priv 参数(日志功能的对应目录)

secure_file_priv=""

重载MySQL配置

FLUSH PRIVILEGES

重启MySQL服务

sudo service mysql restart
sudo systemctl restart mysql
2. Mssql加固
  1. 删除不必要的账号
  2. SQLServer用户口令安全
  3. 根据用户分配帐号避免帐号共享
  4. 分配数据库用户所需的最小权限
  5. 网络访问限制
  6. SQLServer登录审计
  7. SQLServer安全事件审计
  8. 配置日志功能

远程控制加固

1. SSH安全加固

限制IP登录方法

sudo nano /etc/ssh/sshd_config       //以root权限编辑SSH配置文件
AllowUsers username@192.168.0.100    //找到并编辑以下行,确保其取消注释并设置为所需的IP地址

禁用 root 远程登录

sudo nano /etc/ssh/sshd_config       //以root权限编辑SSH配置文件
PermitRootLogin no                   //将PermitRootLogi设置为“no”

按用户和组限制SSH登录

sudo nano /etc/ssh/sshd_config       //以root权限编辑SSH配置文件
AllowUsers testuser                  //设置只允许 testuser 登录SSH
AllowUsers testuser@192.168.1.100    //设置只允许 192.168.1.100 的机器用 testuser 账户登录SSH
AllowGroups test                     //设置用户组白名单
//需要注意的是:如果同时指定了 AllowUsers 与 AllowGroups 那么必须要在两个选项中都匹配到的用户才能进行SSH登录

重启SSH服务

sudo service sshd restart
sudo systemctl restart sshd.service
2. RDP远程登录安全加固

删除默认帐户并手动添加新用户:

  • 步骤1:按 Win + R 打开运行对话框,输入 secpol.msc 并单击 “确定”
  • 步骤2:导航至此处:本地策略–>用户权限分配,再双击打开 “允许通过远程桌面服务登录”
  • 步骤3:删除此窗口中列出的管理员和远程桌面用户(或计算机上的任何其他用户或组)
  • 步骤4:之后单击 “添加用户或组” 并手动添加您要授予远程桌面访问权限的用户

更改默认RDP端口号:

  • 步骤1:打开运行对话框,输入 regedit 并单击 “确定”
  • 步骤2:打开 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp ,向下滚动并找到 PortNumber 然后双击它
  • 步骤3:选择 “十进制”,修改为您想要设置的端口号,然后单击 “确定”

5.站点防御部署

先输入python3命令,看看有没有,有python3就可以跳过

在这里插入图片描述

下载Python

3.1- 解压源码包

1.对压缩包进行解压

tar -xvf Python-3.10.14.tgz

编译和安装

 cd Python-3.10.14

配置源码编译后的安装路径

 ./configure --prefix=/usr/local/python3.10

开始编译和安装(大约10分钟)

make

sudo make install

编译完成后,cd配置的安装路径下,并查看文件夹内容

cd /usr/local/python3.10/bin

查看bin目录下是否有python3.10,此时已经完成python安装

5.设置软链接

rm python

which python3

找到的路径建立新的链接

sudo ln -s /usr/local/bin/python3 /usr/bin/python

6.设置python的环境变量

vim ~/.bashrc

在bashrc里面添加一下代码

alias python=‘/usr/local/bin/python3’

在这里插入图片描述

然后让变量生效

source ~/.bashrc

最后直接输入python就可以了

php环境安装

  1. 解压源代码: 下载完成后,使用tar命令解压下载的文件到你选择的目录。例如,如果下载到了/home/username/Downloads目录,可以使用以下命令解压到/home/username/php-src目录:

    tar -zxf /home/username/Downloads/php-x.y.z.tar.gz -C /home/username/php-src

    其中php-x.y.z.tar.gz是下载的文件名,x.y.z代表PHP的版本号。

  2. 编译安装PHP: 解压后,进入到解压的目录,然后运行以下命令来编译和安装PHP:

    `cd /home/username/php-src ./configure --prefix=/path/to/php/install/dir

    make

    make install`

    其中--prefix=/path/to/php/install/dir指定了安装PHP的目标目录。

  3. 验证安装: 安装完成后,你可以通过运行以下命令来验证PHP是否安装成功:

    /path/to/php/install/dir/bin/php -v

Go环境安装

将下载好的包解压缩到你想要安装的目录下,如/home/go。

sudo tar -C /home -zxvf go1.22.2.linux-amd64.tar.gz

添加环境变量,在终端中输入以下命令:

编辑/etc/profile或用户的~/.bashrc文件,并添加以下内容

sudo vi /etc/profile
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin

编辑完环境变量后,使用source命令使配置立即生效

source /etc/profile

验证Go环境是否安装成功

go version

部署WAF、EDR

PHP脚本
  • WAF脚本参考: GitHub - sharpleung/CTF-WAF: 针对CTF线下赛的通用WAF,日志审计功能。

https://github.com/PlutoaCharon/AWD-Attack-Defense

Waf.php

waf的激活方式:

  1. php.ini选项:auto_prepend_file =与auto_append_file =包含waf,需要权限较高。
  2. config.php 中包含waf
  3. 让所有的文件都包含waf

WAF保护文件脚本

CTF-WAF-master.zip

在需要保护的 PHP 文件中包含 CTF_WAF.php

在每个需要保护的 PHP 文件的最开始(通常在任何其他代码之前),添加以下代码行:

include_once('/path/to/CTF_WAF.php'); 

这里的 /path/to/CTF_WAF.php 应该替换为实际的路径,指向你存放 CTF_WAF.php 的位置。使用 include_once 确保即使多次引用也只包含一次文件,防止重复执行。

WAF日志记录脚本

log-record.php

创建放日志的文件夹

mkdir -p /home/web/Desktop/log/waflog

编辑脚本,设置正确的日志目录路径

$WAF_log = '/home/web/Desktop/log/waflog';

使用 cat, less, 或 tail 等命令查看日志文件:

tail -f /home/web/Desktop/log/waflog/log_* # 实时查看最新的日志条目

在每个需要保护的 PHP 文件的最开始(通常在任何其他代码之前),添加以下代码行:

include_once('/home/web/Desktop/log-record.php'); 

2.1.5 找本地Flag

grep -r "flag" /var/www/html/  //Linux:在Web目录下查找flag
findstr /s /i "flag" *.*       //Windows:当前目录以及所有子目录下的所有文件中查找"flag"这个字符串
2.1.6 设置禁Ping
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all     //临时开启禁ping

文件监控

可以使用ssh远程去连接靶机进行监控

vscode‐>ssh插件或者是phpstorm,实时在线编辑

监听还原脚本‐>5分钟还原一次

使用本地py环境运行,需要更改sshIP及端口

awd.py

Python脚本

文件监控脚本1(内网环境无需依赖)

文件变化实时监控工具.zip

使用方法:,命令行Python3 main.py,然后输入需要监控的目录的绝对路径

缺点:只能监控文件不能监控文件夹

文件监控脚本2(内网环境无需依赖)

monitorpro.py

使用方法:命令行Python3 monitorpro.py,自动监控文件夹,删除文件自动恢复,自动备份到特定文件夹,新上传的文件会被转移到特定文件夹并修改后缀为.txt,日志输出到特定文件夹

在这里插入图片描述

Python2版本:

monitor.py

flag文件隐藏

备份检查
find /var/www/html/ -name " .tar"
find /var/www/html/ -name " .zip" 
后门查杀

一般查杀

find /var/www/html -name  .php -mmin -20 #查看最近20分钟修改文件
find ./ -name ' .php' | xargs wc -l | sort -u #寻找行数最短文件
grep -r --include= .php '[^a-z]eval($_POST' /var/www/html #查包含关键字的php文件
find /var/www/html -type f -name " .php" | xargs grep "eval(" |more

不死马查杀:杀进程后重启服务、写一个同名的文件夹和写一个sleep时间低于别人的马(或者写一个脚本不断删除别人的马)

<?php
system("kill -9 pid;rm -rf .shell.php"); #pid和不死马名称根据实际情况定
?>

不死马清理:
ps aux www|grep shell.php

找到pid后杀掉进程就可以,你删掉脚本是起不了作用的,因为php执行的时候已经把脚本读进去解释成opcode运行了

重启php等web服务

用一个ignore_user_abort(true)脚本,一直竞争写入(断断续续)。usleep要低于对方不死马设置的值。

创建一个和不死马生成的马一样名字的文件夹。

后门用户查杀:UID大于500的都是非系统账号,500以下的都为系统保留的账号,使用userdel -r username 完全删除账户

其他查杀**:** 部分后门过于隐蔽,可以使用ls -al命令查看所有文件及文件修改时间和内容进行综合判断,进行删除。可以写脚本定时清理上传目录、定时任务和临时目录等

漏洞修复

漏洞修复遵循保证服务不长时间宕机的情况下进行修复, 多使用安全过滤函数,能修复尽量修复,不能修复先注释或删除相关代码,但需保证页面显示正常。

可以下载文件到本地进行修改后上传到服务器进行覆盖操作,也可以直接通过vim编辑器进行代码修复操作 ,恢复参考:

  • Web常见漏洞描述及修复建议 - 我超怕的 - 博客园 常规漏洞修复建议
  • PHP中的安全函数 - 踏雪无痕SS - 博客园 PHP安全函数
工具

文件监控脚本: GitHub - TheKingOfDuck/FileMonitor: 文件变化实时监控工具(代码审计/黑盒/白盒审计辅助工具)

流量监控

流量监控也是可以使用aoiawd进行,aoiawd还是在后边,或者用别的脚本记录流量,有的比赛也会定时提供上阶段流量

被上马一定要先备份到本地,再删除、去分析反打别人

lljk.php

关闭进程
ps -aux #查看进程
kill -9 pid #强制进程查杀 
wireshark

过滤IP地址

(1) ip.addr == 192.168.1.1 //只显示源/目的IP为192.168.1.1的数据包
(2) not ip.src == 1.1.1.1 //不显示源IP为1.1.1.1的数据包
(3) ip.src == 1.1.1.1 or ip.dst == 1.1.1.2 //只显示源IP为1.1.1.1或目的IP为1.1.1.2的数据包

过滤端口

(1) tcp.port eq 80 #不管端口是来源还是目的都显示80端口
(2) tcp.port == 80
(3) tcp.port eq 2722
(4) tcp.port eq 80 or udp.port eq 80
(5) tcp.dstport == 80 #只显示tcp协议的目标端口80
(6) tcp.srcport == 80 #只显示tcp协议的来源端口80
(7) udp.port eq 15000
(8) tcp.port >= 1 and tcp.port <= 80 #过滤端口范围

流量分析

查看当前访问量前十的链接
cat /var/log/apache2/access.log | cut -f4 -d | sort | uniq -c | sort -k -r | head -

文件监控增删改查的文件使用脚本Monitor(一个简单的文件监控示例脚本,可以监控创建、删除、移动、属性修改操作,自动删除新增文件或目录。已使用pyinstaller打包成了linux可执行程序)

chattr +i 命令锁死网站目录和文件,防止其他队伍删除网站宕机。注:添加后不取消特殊权限 即使是root用户也无法删除/修改文件

chattr -R +i /var/www/html
chattr -R +i /var/www/html/*
(取消命令将+号改成- chattr -R -i /var/www/html)

使用waf全局包含waf,注意waf的日志和weblogger日志与第二项文件监控冲突,建议建立文件夹将日志和weblogger日志放到指定文件夹中,避开文件监控,

sudo find /var/www/html/path_you_want -type f -path “ *.php” | xargs sed -i “s/<?php/<?php\nrequire_once(’/tmp/waf.php’);\n/g”
#意思就是查找需要加waf的目录下所有php文件,在头部添加一句,用require_once函数引入/tmp/waf.php文件。因为sed命令利用 / 区分文件中的原字符串和修改的字符串,所以我们要对 / 进行转义。类似于在单引号中再次使用单引号时我们也要用反斜杠转义。

后台一定要登陆后台,有没有弱口令,修改成强口令。

不只是后台,phpmyadmin、测试页面容易出现sql注入,rce之类的这些

端口监控

netstat -ano/-a #查看端口情况
uname -a #系统信息
ps -aux、ps -ef #进程信息
cat /etc/passwd #用户情况
ls /home/ #用户情况
id #用于显示用户ID,以及所属群组ID
find / -type d -perm -002 #可写目录检查
grep -r “flag” /var/www/html/ #查找默认FLAG
关闭端口

netstat -anp #查看端口
firewall-cmd --zone= public --remove-port=80/tcp –permanent #关闭端口
firewall-cmd –reload #重载防火墙

攻击阶段

6、信息收集

内网信息收集

0.内网探活(自动扫内网私有地址)

netspy_linux_amd64.zip

**netspy **

初始化

sysctl -w net.ipv4.ping_group_range="0 2147483647" 

内网可达网段默认存到alive.txt

 ./netspy is

在这里插入图片描述

强制进行网段内所有IP存活探测,默认存到alive.txt

./netspy -c 192.168.52.0/24 -r 255 -f is

在这里插入图片描述

1、扫c段(主机探测(nmap、httpscan))

1n7erface/Template: Next generation RedTeam heuristic intranet scanning | 下一代RedTeam启发式内网扫描 (github.com)

2、扫端口(nmap)
  • 首先搜集自己端口信息 ,再类比扫描其他主机
3、应用发现(指纹识别)

TideFinger_Linux

TideFinger_Linux

扫端口、服务、指纹以及poc

./TideFinger_Linux -h 192.168.52.10 -pd  

探测指定url文件的指纹,每个服务指纹超时为120秒(打点)

TideFinger -uf url.txt -nobr -nopoc -pt 120   

在这里插入图片描述

watweb

whatweb url

内网主机扫描(打点)

whatweb --no-errors -t 255 192.168.0.0/24     //可以和-a -v 参数结合使用

导出扫描结果到文件(打点)

whatweb  www.topreverse.cn   --log-brief=FILE
4.综合漏洞快速探测(中间件、组件框架、系统漏洞)

nuclei

nuclei_3.2.4_linux_amd64.zip

初始化

./nuclei -u 192.168.52.10

然后将模版解压到/home/kali/nuclei-templates里面(只解压内容,文件夹名字要和nuclei-templates一致)

nuclei-templates-9.8.1.tar.gz

在这里插入图片描述

然后就正常打点

在这里插入图片描述

针对 URL 列表运行模板:

./nuclei -list http_urls.txt

详细教程:

运行 Nuclei - ProjectDiscovery 文档

4、敏感文件扫描

https://github.com/sry309/ihoneyBakFileScan 多进程批量网站备份文件泄露扫描工具

https://github.com/maurosoria/dirsearch WEB网站目录扫描

  • 字典参考:

https://github.com/cpkkcb/fuzzDicts

GitHub - TheKingOfDuck/fuzzDicts: Web Pentesting Fuzz 字典,一个就够了。

5、进行攻击

出题人设计漏洞

代码审计(之前bash自己资产的代码)

综合工具扫描

POC-bomberPOC检测利用.zip

后门利用

写Python脚本批量提交flag

流量混淆

jiaosigun.py

发送混乱的流量

自动化攻击脚本

awd_attack.py

  1. back_door(): 这个函数用于在指定的IP地址范围内尝试通过一个后门地址(shell_addr)和密码(shell_pass)来执行一个特定的payload(一段代码或命令)。它使用requests库来发送HTTP请求。这个函数会检查响应中是否包含特定的字符串(“flag”),如果包含,则将IP地址和响应内容写入到一个文本文件中。
  2. make_sudo(): 这个函数的目的是在一个IP地址范围内通过后门种植一个不死马(一种持久化攻击手段),并将维持了权限的IP地址写入到一个文本文件中。它使用base64编码来传输PHP代码,并通过HTTP请求发送到目标服务器。
  3. make_crontab(): 这个函数用于在指定的IP地址范围内通过后门创建一个crontab任务,这通常用于自动化任务的执行。它同样使用requests库发送请求,并检查响应长度来确定是否成功。
远程命令执行

命令执行,直接cat /flag,尽量混淆流量也可以通过命令执行执行上传一句话木马

“查找”

查找可能的password
cd /var/www/html
find .|xargs grep “password”
查找后门
find /var/www/html -name " *.php" |xargs egrep ‘assert|eval|phpinfo()|(base64_decoolcode|shell_exec|passthru|file_put_contents(.*$|base64_decode(’
查找flag的位置
使用find / -name *flag*grep -rn "flag" * 类似的语句可以快速发现 flag 所在的地方,方便后续拿分
备份网站源码和数据库
mobaxterm直接拖
备份数据库在dump源码部分有
scp -r -P Port remote_username@remote_ip:remote_folder local_file
检查有没有多余无用端口对外开放
netstat -anptl

文件读取

sql注入,数据库中有flag,或者sql注入写shell

文件上传,绕过黑白名单上传一句话,小马拉大马或者不死马

中间件漏洞

琴音安全漏洞利用集成工具箱

其他队发现的漏洞

通过日志来分析流量

提权

Linux 提权总结 - 腾讯云开发者社区-腾讯云 一般提权

6、权限维持

不死马

不死马

不死马.txt

将该文件重命名为xxx.php(根据实际情况定)

然后get请求访问url:xxx.xxx.xxx/path/.kaiyko.php?kaiyko=password

然后再访问curl -X POST http://target-server.com/path-to-file/.kaiyko.php?kaiyko=password -d “kaiyko=phpinfo();”

如果有回显,就可以连接webs hell管理工具,密码是kaiyko

定时马

内存马

7.编写脚本批量拿分

1.手写POC利用漏洞或者攻击

一系列exp

awd_attack_framework-master.zip

awd_attack.py

------awd批量攻击主框架

利用主办方欲留后门进行攻击

rsa_client.php

------rsa加密后门客户端

加密攻击的payload并发送给种植在其他队伍服务器上的rsa_server.php

rsa_server.php

------rsa加密后门服务端

解密攻击payload并返回执行结果

rsa_attack.py

------rsa木马测试

测试rsa客户端和服务端是否可以实现互相通信

nodie.php

------不死马

主要负责写入rsa不死马

crontab.py

------定时任务写入脚本

crontab.txt

------定时任务要写入的内容

kill_crontab.php

------清除crontab

kill.php

------清除不死马

2.批量修改ssh账号密码

3.通过脚本批量获取flag

批量利用框架工具

参考:https://github.com/Ares-X/AWD-Predator-Framework

AWD-Predator-Framework-master.zip

这个是Python2驱动的工具,在AWD攻防赛中通过给定的webshell批量获取提交flag

在这里插入图片描述

批量通过后门获取flag再删库

awd_jiaosigun.py

直接运行,代码注释的部分需要自定义参数

批量获取flag 可视化gui软件

getflag.exe

在这里插入图片描述

Github资源

  • (⭐235) AWD攻防赛脚本集合: https://github.com/admintony/Prepare-for-AWD
  • (⭐124) Attack-Defense-Framework: https://github.com/SniperOJ/Attack-Defense-Framework/tree/v2
  • (⭐99) AWD攻防赛webshell批量利用框架: https://github.com/Ares-X/AWD-Predator-Framework
  • (⭐28) awd-frame: https://github.com/xnianq/awd-frame
  • (⭐4) WEB-AWD-Framework:https://github.com/dahua966/WEB-AWD-Framework
  • (⭐0) AWD-helper: https://github.com/sarleon/AWD-helper

AWD经验

  • CTF线下赛AWD模式下的生存技巧: https://www.anquanke.com/post/id/84675
  • CTF线下赛AWD套路小结: https://xz.aliyun.com/t/25
  • AWD混战攻略: https://www.jianshu.com/p/d21b7e1bffaf
  • CTF线下AWD攻防模式的准备工作及起手式: https://blog.csdn.net/like98k/article/details/80261603
  • 2017强网杯线下AWD攻防总结(适合新手): https://www.t00ls.net/articles-42278.html
  • AWD攻防线下生存之道: http://47.95.201.153/blog/AWD攻防线下生存之道.html
  • CTF AWD模式攻防Note: https://www.cnblogs.com/nul1/p/9576386.html

权限维持

  • 不死马的删除: https://yq.aliyun.com/zt/325638
  • awd攻防之kill不死马: https://www.jianshu.com/p/ba79686987da
  • python中的后渗透|也可用于AWD攻防–shell管理: https://www.jianshu.com/p/2e8e7330b73e
  • 从0到1掌握AWD攻防之RSA必杀: https://www.360zhijia.com/anquan/456324.html
  • 资深大牛教你如何web端权限维持(内附具体步骤): http://www.sohu.com/a/127074604_472906

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1616086.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

探索大型语言模型(LLM)在人类性格个性评估(MBTI)中的前景与应用

1.概述 大型语言模型&#xff08;LLM&#xff09;如ChatGPT在各个领域的应用确实越来越广泛&#xff0c;它们利用庞大的数据集进行训练&#xff0c;以模拟人类的语言理解和生成能力。这些模型在提供信息、解答问题、辅助决策等方面表现出了强大的能力&#xff0c;但它们并不具…

Docker pull镜像名称 把本地镜像推送到远程详解

Docker pull镜像名称 把本地镜像推送到远程详解&#xff1a; Docker 镜像 仓库 容器介绍 以及镜像仓库详解 下载一个alpine的镜像演示&#xff0c;alpine是一个比较小的的linux镜像。 docker pull alpinedocker tag d4ff818577bc docker.io/itying/alpine:v1.0.1docker tag d4…

Macs Fan Control Pro for Mac:全面优化Mac风扇控制软件

Macs Fan Control Pro for Mac是一款专为苹果电脑用户设计的风扇控制软件&#xff0c;旨在通过精确的风扇速度调节&#xff0c;全面优化Mac的散热性能&#xff0c;确保系统始终运行在最佳状态。 Macs Fan Control Pro for Mac中文版下载 该软件具备实时监控功能&#xff0c;能够…

ESP32与SD卡交互实现:文件读写实战与初始化详解及引脚定义

本代码实现ESP32与SD卡的交互&#xff0c;包括定义SPI引脚、创建自定义SPI类实例、编写WriteFile与ReadFile函数进行文件读写。setup函数初始化串口、SPI、SD卡&#xff0c;向“/test.txt”写入“myfirstmessage”&#xff0c;读取并打印其内容。loop函数留空待扩展。 1. 需要…

区块链安全应用-------压力测试

基于已有的链进行测试&#xff08;build_chain默认建的链 四个节 点&#xff09;&#xff1a; 第一步&#xff1a;搭链 1. 安装依赖 在ubuntu操作系统中&#xff0c;操作步骤如下&#xff1a; sudo apt install -y openssl curl 2. 创建操作目录, 下载安装脚本 ## 创建操作…

HDFS分布式文件存储系统

1-1 HDFS的存储机制 按块&#xff08;block&#xff09;存储 hdfs在对文件数据进行存储时&#xff0c;默认是按照128M(包含)大小进行文件数据拆分&#xff0c;将不同拆分的块数据存储在不同datanode服务器上 拆分后的块数据会被分别存储在不同的服务器上 副本机制 为了保证hdfs…

标题Selenium IDE 常见错误笔记

Selenium IDE 常见错误笔记 错误1&#xff1a;Failed:Exceeded waiting time for new window to appear 2000ms 这个错误通常出现在第一次运行时&#xff0c;有两个原因&#xff1a; Firefox阻止了弹出式窗口&#xff0c;在浏览器设置里允许这个操作即可。 有些网站设置了反…

轻松上手,无缝对接:详述如何接入企讯通空号检测接口API

企讯通空号检测接口API作为一款高效、精准的手机号码状态检测工具&#xff0c;能够帮助企业及开发者快速识别手机号码的有效性&#xff0c;优化通讯资源&#xff0c;提升营销效果。本篇文章将带领您一步步了解如何轻松、无缝地对接企讯通空号检测接口API&#xff0c;让您的业务…

HIVE无法启动问题

​ 启动不了hive 一直在加载中&#xff01; 问题&#xff1a;当我们打开电脑 想要学习hive时 我们却发现 它一直卡在启动页面 true一直后没有信息或者报错 原因&#xff1a;我们在之前学习时 在配置hdfs的高可用时&#xff08;High Availability 简称HA&#xff09; 高可用…

stm32HAL_GPIO输入

学会使用 GPIO 采集 KEY 的数据信息&#xff0c;这种信息采集技术在生活中常见于对大自 然环境的各种信息的采集。比如环境温度&#xff0c;湿度等等。我们这里以 key 为入门设 备。 一&#xff0c;什么是信息采集 比如环境温度&#xff0c;湿度等等。我们需要把这些温度&am…

Spire.PDF for .NET【文档操作】演示:更改 PDF 版本

在某些平台上上传或提交 PDF 文件时&#xff0c;您有时会面临平台需要特定版本的 PDF 文件的困境。如果您的PDF文件无法满足要求&#xff0c;则需要将其转换为不同版本以实现兼容性。本文将演示如何使用Spire.PDF for .NET以编程方式在不同版本之间转换 PDF。 Spire.PDF for .…

探秘数据库中间件:ProxySQL与MaxScale的优势与劣势

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 探秘数据库中间件&#xff1a;ProxySQL与MaxScale的优势与劣势 前言功能对比负载均衡故障转移查询路由使用场景和业务需求下的选择建议 性能对比响应速度并发连接数不同负载条件下的性能表现 高可用性…

R语言绘制动态网络图Network教程WGCNA

今天分享的笔记是使用NetworkD3对WGCNA的共表达网络进行可视化&#xff0c;创建交互式动态网络图&#xff0c;展示基因之间的相互关系&#xff0c;可以用于转录组或者其他调控网络展示。 加权基因共表达网络分析 (WGCNA, Weighted correlation network analysis)是用来描述不同…

大语言模型(LLM)漏洞爆发,AI模型无一幸免

本文概述了人工智能初创公司Anthropic于2024年04月03日发表的一篇针对人工智能安全的论文&#xff0c;该公司在本论文中宣布的一种新的“越狱”技术&#xff0c;名为Many-shot Jailbreaking&#xff08;多轮越狱&#xff09;。文章详细描述了目前大语言模型&#xff08;LLM&…

AI大模型探索之路-实战篇2:基于CVP架构-企业级知识库实战落地

目录 前言 一、概述 二、本地知识库需求分析 1. 知识库场景分析 2. 知识库应用特点 3. 知识库核心功能 三、本地知识库架构设计 1. RAG架构分析 2. 大模型方案选型 3. 应用技术架构选型 4. 向量数据库选型 5. 模型选型 三、本地知识库RAG评估 四、本地知识库代码落地 1. 文件…

Godot3D学习笔记1——界面布局简介

创建完成项目之后可以看到如下界面&#xff1a; Godot引擎也是场景式编程&#xff0c;这里的一个场景相当于一个关卡。 这里我们点击左侧“3D场景”按钮创建一个3D场景&#xff0c;现在在中间的画面中会出现一个球。在左侧节点视图中选中“Node3D”&#xff0c;右键创建子节点…

day_8题解

利用最大公约数求最小公倍数 #include<iostream> using namespace std;int gcd(int a,int b) {return b?gcd(b,a%b):a; }int main() {long long a,b;cin>>a>>b;long long ansgcd(a,b);cout<<(a*b)/ans<<endl;return 0; }排序遍历&#xff0c;记…

国内开通chatgpt plus会员方法

ChatGPT镜像 今天在知乎看到一个问题&#xff1a;“平民不参与内测的话没有账号还有机会使用ChatGPT吗&#xff1f;” 从去年GPT大火到现在&#xff0c;关于GPT的消息铺天盖地&#xff0c;真要有心想要去用&#xff0c;途径很多&#xff0c;别的不说&#xff0c;国内GPT的镜像…

excel中怎么用乘法、加法来替代AND和OR函数

你可以使用乘法和加法来替代Excel中的AND和OR函数&#xff0c;虽然这样做可能会增加公式的复杂度&#xff0c;但在某些情况下是可行的。 1. 使用乘法替代AND函数&#xff1a;AND函数用于判断一系列条件是否同时成立&#xff0c;如果所有条件都为TRUE&#xff0c;则返回TRUE&…

高通发布电脑CPU,比英特尔Ultra9领先51%

要说2024年最热门的关键词&#xff0c;那肯定非 AI 莫属&#xff0c;当前 AI 已经开始深入各行各业&#xff0c;AI 电视、AI 手机、AI 车机、AI 家电&#xff0c;以及 AI PC ,这些都意味着 AI 将对各个行业带来的新风向和不小的冲击。 2024 年了&#xff0c;PC 处理器还能卷出什…