实战渗透浅谈-记一次应急渗透测试

发布时间:2022-06-27 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了实战渗透浅谈-记一次应急渗透测试脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

12-08 某老弟求助,客户让他打个目标,他没有渗透经验F1b;刚好没啥事,就帮老弟看了看,确实有搞头。

0x01 前言 目标已经主机上线,可以提权,经历了10天的洗礼,学到了很多很多,言归正传,先说说渗透中学到的。

0x02 查找相关资产 通过Fofa,导出目标C段,放到AWVS批量扫,(利用AWVS的表单填充)

实战渗透浅谈-记一次应急渗透测试

发现是某酒店的后台,

实战渗透浅谈-记一次应急渗透测试

通过burp抓包,发现是msSQL,输入单引号,返回500,我想运维人员猜测到是功能点出了问题,但没想到是sqli。

实战渗透浅谈-记一次应急渗透测试

12-08 17: 35 然后直接给表弟发消息,说找到一个sqli,可能有搞头. 12-08 17: 38 表第: 牛逼啊,xxxx,拿下有重谢。 说了一堆,吹的我飘飘的,最近也没啥事,刚好看看。

实战渗透浅谈-记一次应急渗透测试

0x03.发现注入点是sa 由于平时对mssql不了解,18号下班后回去补了点相关内容。 命令内容直接参看谢公子写的博客,(本来是付费的)

select @@version; #查询数据库的版本 select @@servername; #查询服务名 select host_name(); #查询主机名,如果是用navicat远程连接的话,主机名是本地的名字 select db_name(); #查询当前数据库名 select db_name(1); #查询第一个数据库名 select db_name(2); #查询第二个数据库名 select user; #查询当前数据库的拥有者,结果为 dbo。dbo是每个数据库的默认用户,具有所有者权限,全称:datebaseOwner ,即DbOwner use tempdb #切换到tempdb表 top n #查询前n条记录 limIT 2,3 #查询第2条开始的3条数据,也就是2,3,4 select substring(‘string’,2,1) #截取给定字符串的索引为2的1个字符 select ascii(‘a’) #查询给定字符串的ascii值 select len(‘string’) #查询给定字符串的长度 EXEC sp_spaceused @updateusage = N’TRUE’; #查询当前数据库的大小 sp_spaceused ‘表名’ #查询指定表名的大小 EXEC master.Sys.xp_dirtree ‘192.168.106.5xx.txt’,0,1;

判断是否是SA权限 select is_srvrolemember(‘sysadmin’) 判断是否是db_owner权限 select is_member(‘db_owner’) 判断是否是public权限 select is_srvrolemember(‘public’)

由于这里是盲注,通过awvs的扫描结果知道支持堆叠,构造payload: User=1’;if((select is_srvrolemember(‘sysadmin’)=1))%20waitfor%20delay%20’0:0:2’–%20 延时3秒,说明权限为sa。

实战渗透浅谈-记一次应急渗透测试

然后花时间做些不痛不痒的探测,当时做的啥也不清楚了。 探测mssql有大于7个库,延时2秒

实战渗透浅谈-记一次应急渗透测试

探测 mssql库的个数为18,延时2秒

实战渗透浅谈-记一次应急渗透测试

到这里后,通过goby插件探测到目标机上没有waf,好家伙,直接掏出sqlmap,看看

实战渗透浅谈-记一次应急渗透测试

结果sqlmap直接把目标跑崩了,??

实战渗透浅谈-记一次应急渗透测试

实战渗透浅谈-记一次应急渗透测试

12-10 09:27 时间不早了,一个站拖了两天,一天在扫,一天在学,再玩下去就搞不下来了, 这里想到之前一段时间做的二分法。 构造好脚本后,直接去POST,经过反复尝试,返回500,burp抓包payload确不存在这情况,大大的困惑

实战渗透浅谈-记一次应急渗透测试

12-10 12:12 中午没有休息,苦逼的看着奇异的现象,问了下up哥,说是编码的问题

实战渗透浅谈-记一次应急渗透测试

然后没睡午觉,构造payload,把数据库名跑出来了

实战渗透浅谈-记一次应急渗透测试

0x04 尝试二分法报库 Mssql中不存在limit,可以通过top 1 and not in (top 1)来截取我们想要的记录,

当时构造的payload应该是这样的 “User”: “APsihQdh’;if(ascii(substring((select top 1 name From qtx_bhjh…sysobjects where xtyPE=‘U’ and name not in(select top 16 name from sysobjects where xtype=‘U’)),{},1))<{}) waitfor delay ‘0:0:4’ --%20”.format(i,mid),

得到第一个表,zyzd,第二个mrfk,第三个cymx… 报破前10个表并没发现admin表。

12/11 17:35 时间已经很晚了,下了班回去弄,nmm的,运气可能有些背

12/12 09:33 上班后,通过构造payload,报破前五个表中的内容

实战渗透浅谈-记一次应急渗透测试

实战渗透浅谈-记一次应急渗透测试

12/12 12:20 看来报表这条思路是走不通了,表中的内容和字段全是无规则的。

实战渗透浅谈-记一次应急渗透测试

0x05 探测目标存在xp_cmdshell 12/13 08:10 已经走投无路了,进后台然后getshell基本行不通,试试能不能直接getshell,毕竟权限是sa 。 01.发现数据库版本为08,r2,

实战渗透浅谈-记一次应急渗透测试

2. 不存在站库分离

实战渗透浅谈-记一次应急渗透测试

03.本地测试开启存储过程xp_cmdshell

实战渗透浅谈-记一次应急渗透测试

把相关payload发包给目标 01.存在xp_cmdshell,延时3秒

实战渗透浅谈-记一次应急渗透测试

02.利用xp_cmdshell 执行ping发现目标机出网,但dnsLOG这天因为log4j2炸了

实战渗透浅谈-记一次应急渗透测试

03.dnslog接收到消息,已经下班, 上班再测试

实战渗透浅谈-记一次应急渗透测试

03.上班后,再想如何利用sa权限? 找了两小时,发现可以把内容写入表中,然后再通过sqli读出来,虽然说站点没有回显,盲注,但在二分法面前,一个字符也就是3个请求而已。

1.通过create创一张cmdtmp表 create table cmdtmp (dir vArchar(1000))

实战渗透浅谈-记一次应急渗透测试

2.发现站点下存在某图片password.png,执行xp_cmdshell通过for批处理查找结果写入cmdtmp这张表

实战渗透浅谈-记一次应急渗透测试

执行延迟35s,猜测可能已经写入 3.这里想了很久,站点没有回显,如何判断是否写入成功了呢? 想到一个很骚的思路,如果写入成功了,那么他的表中列数一定有记录,可以借助这点,

实战渗透浅谈-记一次应急渗透测试

没有写入,花了点时间排查网络的问题后,猜测可能是站点不在c盘 4.通过fuzz,发现盘符为e时,延时20,在执行时,延时小于1,说明已经存在文件。

实战渗透浅谈-记一次应急渗透测试

实战渗透浅谈-记一次应急渗透测试

4.很奇怪的是,这里会有7条记录

实战渗透浅谈-记一次应急渗透测试

04.到这里,基本已经做了大部分的事情,如果能读表,就能带出站点的绝对路径,然后通过sa写入一个小马就能拿到shell,问题是迟迟的不能读出数据

05.12/14 09:32 上班后,考虑如何解决这个问题,站点无任何回显,写入的数据如何去探测呢? 1.类比之前探测表是否写入可以通过探测字段的个数。那么探测字段的数据…好像可以通过探测len(tmp)

实战渗透浅谈-记一次应急渗透测试

2.发包探测目标站点,延时失败,难道说数据是空?

实战渗透浅谈-记一次应急渗透测试

3.本地测试发现存在这问题

实战渗透浅谈-记一次应急渗透测试

实战渗透浅谈-记一次应急渗透测试

5.通过 is null 和is not null探测 cmdtmp表

实战渗透浅谈-记一次应急渗透测试

空记录为5,也就是结果为两条

实战渗透浅谈-记一次应急渗透测试

6.尝试探测结果的第一位字符,值为e,延时2秒

实战渗透浅谈-记一次应急渗透测试

05.做到这里,总算能找到绝对路经了,二分法探测

实战渗透浅谈-记一次应急渗透测试

0x06,目标绝对路径为中文路径。 12/13 10:11 此时,应该点上一只烟,什么牛马环境?

实战渗透浅谈-记一次应急渗透测试

12/13 12:12又没睡午觉,想到一种很巧妙的思路 01.中文通过url编码是可以外带

实战渗透浅谈-记一次应急渗透测试

本地通过for批处理测试

实战渗透浅谈-记一次应急渗透测试

03.执行xp_cmdshell通过web端外带,站点目录下mkdir一个myfile/coco.php文件,发包,

实战渗透浅谈-记一次应急渗透测试

发现挂了代理,coco.php成了cc.php 然后再测试发现已经延时35秒,这里明显嗅到目标机上有相关拦截。

04.顺着思路,nmap扫描发现开了3389,远程看,发现并没有存在360保护进程图标。此时还是陷入了僵局。

0x07.通过nchar函数读取中文路径 这绝对是做过最骚的一个思路,,,如果说目标环境存在中文路径导致不能通过ascii码读表,那么sa权限就显的没有丝毫作用了。

01.时间又过去了一天,通过查询资料,发现可以通过unicode编码汉字,作为二进制存储,,

实战渗透浅谈-记一次应急渗透测试

02.这里通过靶机做一个测验,看到结果发现可以转化为5位数字,

实战渗透浅谈-记一次应急渗透测试

nchar(25214)转化为汉字’找’

实战渗透浅谈-记一次应急渗透测试

03.这里花了一天的时间写了个sql脚本,(以前也没写过,凭感觉写的发现能用)

实战渗透浅谈-记一次应急渗透测试

04.通过二分法跑出字符,然后nchar(xxxxx)转化

实战渗透浅谈-记一次应急渗透测试

第一个值36719

实战渗透浅谈-记一次应急渗透测试

05.通过xls做出一份资产表,得到结果路径为: e:xxx软件xxx_程序业主xx老板通xx程序网站程序

0x08 通过网站路径写入shell 1.这里折腾了很久,由于目标环境带中文,xp_cmdshell通过调用gbk编码,而我们日常的burp是utf-8编码,通过靶机测试,把中文转化为gb3212,发现已经可以写入

实战渗透浅谈-记一次应急渗透测试

实战渗透浅谈-记一次应急渗透测试

2.发包目标机,成功写入某php小马

实战渗透浅谈-记一次应急渗透测试

3.读表发现确实存在小马,但站点访问404,

实战渗透浅谈-记一次应急渗透测试

疑惑:尝试了多次,无果,折腾了一天,已经15号了,有mdkir的权限,创文件夹,但写入难道不该返回403吗?为什么返回404,难道这不是网站路径吗?

4.花了点时间和up哥交流了一下,没有一个好的结果

实战渗透浅谈-记一次应急渗透测试

12/16 睡了一觉,突然想到会不会是备份的问题,然后又想到之前报路径有两个结果,那另一个结果呢?

0x9x 发现真实网站路径 1.延用前面的nchar函数手法,探测发现真实站点路径为 e: 业主xx老板通xx程序网站程序 好家伙,原来搞了个备份。 2.尝试mkdir 和创文件,通过读cmdtmp表的记录确实是否有结果

实战渗透浅谈-记一次应急渗透测试

3.nmm的,没有写入权限,,搞了半天,得到路径,不能写入,白打工了,唯一的利用点是可以写入除了c和站点外的目录,于是问问up哥,还有什么手法?

0X10 探测目标存在360? 1.up哥探测出存在360,后续是执行whoami

实战渗透浅谈-记一次应急渗透测试

2.然后通过 certutil下载运行

实战渗透浅谈-记一次应急渗透测试

3.360拦截了,但这里好奇的是360卫士应该有3389的图标?后来up哥说绕过了360 只要运行就行上线,拦截已经进程转移,但奇怪的是站点不能上线 4.这里做了很多,嗅觉告诉我这个杀软可能不是360,百度了一下,发现360浏览器简称就是360se,up哥通过web端执行whoami,结果为360se,也是说的通的

0x11 绝境探测出tasklist 既然是360se,本机靶机通过hta加载文件,发现可以cs上线

实战渗透浅谈-记一次应急渗透测试

2.然后up哥和我一块讨论命令执行的事,想到tasklist

实战渗透浅谈-记一次应急渗透测试

3.执行tasklist写入表,读表,返回数据0发现拦截了,后续又试了mstra白名单, 发现杀软对执行些不敏感的操作

实战渗透浅谈-记一次应急渗透测试

4.然后问3had0w ,看了他的文可以dnslog出网ping 文’ 如何利用dnslog探测目标主机杀软’,

12/19 周末起来已经九点多了,发现执行ping tasklist的进程失败,果然又被拦截了,通过fuzz,发现tasklist | findstr C/.exe 没有拦截,写入表成功

实战渗透浅谈-记一次应急渗透测试

5.然后二分法跑了一上午,到了中午,做出了一份tasklist

实战渗透浅谈-记一次应急渗透测试

6.然后up哥说,他来免杀,12/19 12:18 玩了会游戏,睡了个觉,睡醒后,up发消息

实战渗透浅谈-记一次应急渗透测试

然后半小时

实战渗透浅谈-记一次应急渗透测试

目标机上上线了,nmm的,那一个爽,搞了十来天

实战渗透浅谈-记一次应急渗透测试

杀软真一堆,,up哥说可以烂土豆提权,一会功夫,直接拿下System!

实战渗透浅谈-记一次应急渗透测试

然后让up哥传个马到网站路径下e:xxx机xxx部署程序网站程序

实战渗透浅谈-记一次应急渗透测试

up哥说可以派生个cs到msf,;msf很稳定毕竟目标免杀比较多,

实战渗透浅谈-记一次应急渗透测试

Msf收到流量后,默认的ubuntu字体设置为gbk进入目标站点

实战渗透浅谈-记一次应急渗透测试

Load Mi’mi’katz 抓取目标hash administror,看到这我笑了

实战渗透浅谈-记一次应急渗透测试

由于有策略,不对目标内网渗透,没把代理转发到本地,不然可以转发到本地7777,直接访问3389,

做完这些就结束了,执行clearev清除日志,然后再web.config读取配置文件找到sa的密码后,删除sqli的垃圾表就结束了,,,

脚本宝典总结

以上是脚本宝典为你收集整理的实战渗透浅谈-记一次应急渗透测试全部内容,希望文章能够帮你解决实战渗透浅谈-记一次应急渗透测试所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。